Bjarne Stroustrup, tvůrce jazyka C++, vznesl námitky proti zjištěním zprávy NSA, která doporučila, aby organizace přestaly používat programovací jazyky jako C a C++, které přesouvají správu paměti na vývojáře, a upřednostňují jazyky jako C#, Go, Java, Ruby, Rust a Swift, které správu paměti zajišťují automaticky nebo provádět kontroly bezpečnosti paměti v době kompilace.
Podle Stroustrupa, bezpečné jazyky uvedené ve zprávě NSA nejsou ve skutečnosti lepší než C++ v důležitých aplikacích z vašeho pohledu.
NSA doporučuje organizacím, aby zvážily strategickou změnu v programovacích jazycích, které používají. poskytují malou nebo žádnou vlastní ochranu paměti, jako je C/C++, jazyku bezpečnému pro paměť
když je to možné
Zejména onZákladní pokyny pro C++, které byly vyvinuty v posledních letech, pokrývají metody pro bezpečné programování a předepisují používání nástrojů, které zajišťují bezpečnou práci s typy a prostředky. Vývojáři, kteří nevyžadují tak silné bezpečnostní záruky, však mohou nadále používat starší vývojové metody.
Stroustrup věří, že dobrý statický analyzátor který je v souladu s C++ Core Guidelines může poskytnout potřebné záruky zabezpečení pro kód C++ za mnohem nižší náklady než přechod na nové zabezpečené programovací jazyky.
Například většina základních pokynů je již implementována ve statickém analyzátoru Microsoft Visual Studio a Memory-Safe Profile. Některá doporučení jsou také zohledněna ve statickém analyzátoru Clang tidy.
Zpráva NSA byla také kritizována za to, že se soustředila pouze na problémy s pamětí., takže mnoho dalších problémů s programovacím jazykem, které ovlivňují bezpečnost a spolehlivost, zůstává nevyřešeno.
Bohužel, velká část použití C++ také uvízla v dávné minulosti a ignoruje vylepšení, včetně způsobů, jak drasticky zlepšit zabezpečení. Pokud bych měl uvažovat o některém z těch „bezpečných“ jazyků lepších než C++ v rozsahu použití, které mě zajímají, nepovažoval bych zánik C/C++ za špatnou věc, ale není tomu tak. .
Bjarne Stroustrup nesouhlasí s tím, že publikace NSA omezuje pojem ochrany softwaru na ochranu paměti. Ve skutečnosti je tento aspekt společným jmenovatelem všech publikací, které doporučují upustit od jazyka C nebo C++ ve prospěch jazyka Rust kvůli zárukám zabezpečení softwaru, který několik velkých společností (Microsoft, Amazon atd.) uznává.
„Neexistuje jediná definice ‚zabezpečení‘ a můžeme dosáhnout různých typů zabezpečení kombinací programovacích stylů, podpůrných knihoven a využití statické analýzy,“ říká. Bjarne Stroustrup tak naznačuje, že to, co lze z C++ z hlediska softwarového zabezpečení získat, závisí mimo jiné na vývojáři a zejména na znalosti nástrojů, které daný jazyk nabízí, jeho zvládnutí kompilátoru atp.
Stroustrup nahlíží na bezpečnost jako na širší koncept, jehož různých aspektů lze dosáhnout kombinací stylu kódování, knihoven a statických analyzátorů. Pro kontrolu zahrnutí pravidel, která zajišťují bezpečnost práce s typy a zdroji, se navrhuje používat anotace kódu a možnosti kompilátoru.
V aplikacích, kde je výkon důležitější než bezpečnost, umožňuje tento přístup selektivní použití nástrojů, které zajišťují bezpečnost pouze tam, kde je potřeba. Částečně lze použít i nástroje pro zvýšení bezpečnosti, jako je nejprve omezení kontroly rozsahu a inicializační pravidla a poté postupné přizpůsobení kódu přísnějším požadavkům.
A konečně, pokud máte zájem dozvědět se více o publikaci tvůrce C++, můžete konzultovat podrobnosti v následující odkaz.