Kreinto de C++ kritikas antaŭenpuŝon por sekuraj programlingvoj

Bjarne Stroustrup, la kreinto de la lingvo C++, publikigis refuton al la rezultoj de raporto de la NSA, kiu rekomendis, ke organizoj forlasu programlingvojn kiel C kaj C++, kiuj delegas memoradministradon al la programisto, kaj al lingvoj kiel C#, Go, Java, Ruby, Rust kaj Swift, kiuj provizas aŭtomatan memoradministradon aŭ plenumas memorsekurecajn kontrolojn dum kompilado.

Laŭ Stroustrup, la sekuraj lingvoj menciitaj en la raporto de la NSA fakte ne estas pli bonaj ol C++ en la aplikoj, kiujn li konsideras gravaj. Specife, la C++ Core Guidelines, kiuj estis evoluigitaj en la lastaj jaroj, kovras sekurajn programajn praktikojn kaj preskribas la uzon de iloj, kiuj garantias la sekuran manipuladon de tipoj kaj rimedoj. Samtempe, programistoj, kiuj ne postulas tiajn striktajn sekurecajn garantiojn, havas la eblon daŭre uzi pli malnovajn evoluigajn metodojn.

Stroustrup kredas, ke bona statika analizilo, kiu konformas al la Kernaj Gvidlinioj de C++, povas provizi la necesajn sekurecgarantiojn por C++-kodo je signife pli malalta kosto ol ŝanĝi al novaj sekuraj programlingvoj. Ekzemple, la plej multaj el la rekomendoj de la Kernaj Gvidlinioj jam estas efektivigitaj en la statika analizilo kaj memorsekureca profilo inkluzivita en Microsoft Visual Studio. Kelkaj rekomendoj ankaŭ estas integritaj en la Clang tidy statikan analizilon.

Alia fonto de kritiko estis la fokuso de la raporto de la NSA nur pri memoradministradaj problemoj, ignorante multajn aliajn problemojn pri programlingvoj, kiuj efikas sur sekurecon kaj fidindecon. Stroustrup rigardas sekurecon kiel pli larĝan koncepton, kies diversaj aspektoj povas esti atingitaj per kombinaĵo de kodstilo, bibliotekoj kaj statikaj analiziloj. Li proponas uzi kodkomentojn kaj kompilajn opciojn por kontroli la inkludon de reguloj, kiuj certigas la sekurecon de tipoj kaj rimedoj.

En aplikoj kie rendimento estas pli grava ol sekureco, ĉi tiu aliro permesas la selekteman aplikon de sekurecaj garantioj nur kie necese. Sekurecaj plibonigoj ankaŭ povas esti aplikitaj parte, ekzemple, komence limigante la efektivigon al intervalkontrolado kaj inicialigaj reguloj, kaj poste iom post iom adaptante la kodon al pli striktaj postuloj.

fonto: opennet.ru

Aldoni komenton