C++ radītājs kritizēja drošu programmēšanas valodu uzspiešanu

Bjarne Stroustrup, C++ valodas radītājs, publicējis iebildumus pret NSA ziņojuma secinājumiem, kuros ieteikts organizācijām atteikties no tādām programmēšanas valodām kā C un C++, kas atstāj atmiņas pārvaldību izstrādātāju ziņā, par labu valodām. piemēram, C#, Go, Java, Ruby, Rust un Swift, kas nodrošina automātisku atmiņas pārvaldību vai veic kompilēšanas laika atmiņas drošības pārbaudes.

Pēc Stroustrup teiktā, NSA ziņojumā minētās drošās valodas patiesībā nav pārākas par C++ lietojumprogrammās, kas no viņa viedokļa ir svarīgas. Jo īpaši pēdējos gados izstrādātie C++ (C++ Core Guidelines) lietošanas pamatieteikumi aptver drošas programmēšanas metodes un nosaka tādu rīku izmantošanu, kas garantē drošu darbu ar veidiem un resursiem. Tas atstāj iespēju izstrādātājiem, kuriem nav vajadzīgas tik stingras drošības garantijas, turpināt izmantot vecās izstrādes metodes.

Stroustrup uzskata, ka labs statiskais analizators, kas atbilst C++ pamatnostādnēm, var nodrošināt nepieciešamās garantijas C++ koda drošībai par ievērojami zemākām izmaksām nekā migrēšana uz jaunām drošām programmēšanas valodām. Piemēram, lielākā daļa pamatnostādņu jau ir ieviestas statiskajā analizatorā un atmiņas drošības profilā, kas iekļauts Microsoft Visual Studio. Daži ieteikumi ir ņemti vērā arī Clang tidy statiskajā analizatorā.

NSA ziņojums tika arī kritizēts par to, ka tas koncentrējas tikai uz atmiņas problēmām, atstājot daudzas citas programmēšanas valodas problēmas, kas ietekmē drošību un uzticamību. Stroustrup uzskata drošību kā plašāku jēdzienu, kura dažādās šķautnes var sasniegt, kombinējot kodēšanas stilu, bibliotēkas un statiskos analizatorus. Lai kontrolētu noteikumu iekļaušanu, kas nodrošina drošību darbā ar veidiem un resursiem, tiek ierosināts izmantot anotācijas kodā un kompilatora opcijās.

Lietojumprogrammās, kur veiktspēja ir svarīgāka par drošību, šī pieeja ļauj selektīvi lietot funkcijas, kas garantē drošību tikai tur, kur tas ir nepieciešams. Drošības rīkus var lietot arī pa daļām, piemēram, sākot ar diapazona pārbaudi un inicializācijas noteikumiem un pēc tam pakāpeniski pielāgojot kodu stingrākām prasībām.

Avots: opennet.ru

Pievieno komentāru