C ++ looja kritiseeris ohutute programmeerimiskeelte kehtestamist

C++ keele looja Bjarne Stroustrup on avaldanud vastuväited NSA aruande järeldustele, milles soovitati organisatsioonidel loobuda programmeerimiskeeltest nagu C ja C++, mis jätavad mäluhalduse arendaja hooleks, eelistades keeli. näiteks C#, Go, Java, Ruby, Rust ja Swift, mis pakuvad automaatset mäluhaldust või teostavad kompileerimisaja mälu turvakontrolli.

Stroustrupi sõnul ei ole NSA aruandes mainitud turvalised keeled tema seisukohast olulistes rakendustes C++-st paremad. Eelkõige viimastel aastatel välja töötatud põhilised soovitused C++ (C++ Core Guidelines) kasutamiseks hõlmavad ohutuid programmeerimismeetodeid ja näevad ette tööriistade kasutamise, mis tagavad ohutu töö tüüpide ja ressurssidega. See jätab arendajatele, kes ei nõua nii rangeid turvagarantiid, võimaluse jätkata vanade arendusmeetodite kasutamist.

Stroustrup usub, et hea staatiline analüsaator, mis järgib C++ Core Guidelines’i, võib anda vajalikud tagatised C++ koodi ohutusele oluliselt väiksemate kuludega kui uutele turvalistele programmeerimiskeeltele üleminek. Näiteks on enamik põhijuhistest juba rakendatud Microsoft Visual Studio staatilises analüsaatoris ja mälu turvaprofiilis. Mõningaid soovitusi võetakse arvesse ka staatilises Clang tidy analüsaatoris.

NSA aruannet kritiseeriti ka selle pärast, et see keskendus ainult mäluprobleemidele, jättes kõrvale paljud muud programmeerimiskeele probleemid, mis mõjutavad turvalisust ja töökindlust. Stroustrup vaatleb turvalisust kui laiemat mõistet, mille erinevaid tahke on võimalik saavutada kodeerimisstiili, teekide ja staatiliste analüsaatorite kombinatsiooniga. Tüüpide ja ressurssidega töötamise ohutuse tagavate reeglite kaasamise kontrollimiseks on soovitatav kasutada koodi ja kompilaatori valikutes märkusi.

Rakendustes, kus jõudlus on turvalisusest olulisem, võimaldab see lähenemine valikuliselt rakendada funktsioone, mis tagavad turvalisuse ainult seal, kus seda vajatakse. Turvatööriistu saab rakendada ka osade kaupa, näiteks alustades vahemiku kontrollimise ja lähtestamise reeglitega ning seejärel kohandades koodi järk-järgult rangematele nõuetele.

Allikas: opennet.ru

Lisa kommentaar