Bjarne Stroustrup, a C++ nyelv megalkotója, kifogást emelt az NSA jelentésének megállapításai ellen, amely azt javasolta a szervezeteknek, hogy hagyják el az olyan programozási nyelveket, mint a C és C++, amelyek áthelyezik a memóriakezelést a fejlesztőre, és olyan nyelveket részesítenek előnyben, mint a C#, Go, Java, Ruby, Rust és Swift, amelyek automatikusan biztosítják a memóriakezelést, ill. fordításkor hajtson végre memóriabiztonsági ellenőrzéseket.
Stroustrup szerint az NSA jelentésében említett biztonságos nyelvek nem igazán jobbak a C++-nál az Ön szempontjából fontos alkalmazásokban.
Az NSA azt tanácsolja a szervezeteknek, hogy fontolják meg az általuk használt programozási nyelvek stratégiai változtatását. kevés vagy egyáltalán nem biztosít belső memóriavédelmet, mint például a C/C++, egy memóriabiztos nyelv számára
amikor lehetséges
Különösen őAz alapvető C++ irányelvek, amelyeket az elmúlt években fejlesztettek ki, fedezi a biztonságos programozás módszereit és előírják a biztonságos munkavégzést biztosító eszközök használatát a típusokkal és erőforrásokkal. Azok a fejlesztők azonban, akik nem igényelnek ilyen erős biztonsági garanciákat, továbbra is használhatják a régebbi fejlesztési módszereket.
Stroustrup úgy véli, hogy egy jó statikus elemző amely megfelel a C++ alapvető irányelveinek tudja biztosítani a szükséges biztonsági garanciákat a C++ kódhoz sokkal alacsonyabb költséggel, mint az új biztonságos programozási nyelvekre való váltás.
Például az alapvető irányelvek többsége már be van építve a Microsoft Visual Studio Static Analyzer és Memory-Safe Profile-ba. Néhány ajánlást a Clang tidy statikus analizátor is figyelembe vesz.
Az NSA-jelentést azért is kritizálták, mert csak a memóriaproblémákra összpontosít., így sok más, a biztonságot és megbízhatóságot befolyásoló programnyelvi probléma megoldatlan marad.
Sajnos a C++ használatának nagy része is a távoli múltban ragadt, figyelmen kívül hagyva a fejlesztéseket, beleértve a biztonság drasztikus javításának módjait. Nos, ha bármelyik „biztonságos” nyelvet jobbnak tartanám a C++-nál az általam érdekelt felhasználási területeken, akkor nem tartanám rossz dolognak a C/C++ megszűnését, de nem ez a helyzet. .
Bjarne Stroustrup nem ért egyet azzal, hogy az NSA kiadványa a szoftverek védelmének fogalmát a memória védelmére korlátozza. Valójában ez a szempont az összes olyan publikáció közös nevezője, amelyek a C vagy C++ elhagyását javasolják a Rust nyelv helyett a szoftver biztonsági garanciái miatt, hogy több nagy cég (Microsoft, Amazon, stb.) felismerje azt.
„A „biztonság” fogalmának nincs egységes definíciója, és a programozási stílusok, a támogatási könyvtárak és a statikus elemzések kombinációjával többféle biztonsági típust érhetünk el” – mondja. Bjarne Stroustrup tehát azt sugallja, hogy a C++-ból szoftverbiztonsági szempontból mit lehet beszerezni, többek között a fejlesztőn múlik, és különösen a nyelv által kínált eszközök ismeretén, a fordítómesterségen stb.
Stroustrup a biztonságot egy tágabb fogalomnak tekinti, amelynek különböző oldalai a kódolási stílus, a könyvtárak és a statikus analizátorok kombinációjával érhetők el. A típusokkal és erőforrásokkal való munka biztonságát biztosító szabályok beillesztésének ellenőrzésére javasoljuk a kódjegyzetek és a fordítói opciók használatát.
Azokban az alkalmazásokban, ahol a teljesítmény fontosabb, mint a biztonság, ez a megközelítés lehetővé teszi olyan eszközök szelektív használatát, amelyek csak ott biztosítják a biztonságot, ahol szükség van rá. A biztonságnövelő eszközök részben is alkalmazhatók, például először korlátozzák a tartomány-ellenőrzési és inicializálási szabályokat, majd fokozatosan hozzáigazítják a kódot a szigorúbb követelményekhez.
Végül, ha többet szeretne megtudni a C++ megalkotójának publikációjáról, a részleteket a következő link.