Skaberen af ​​C ++ kritiserede indførelsen af ​​sikre programmeringssprog

Bjarne Stroustrup, skaberen af ​​C++-sproget, har offentliggjort indsigelser mod konklusionerne i NSA-rapporten, som anbefalede organisationer at gå væk fra programmeringssprog som C og C++, der overlader hukommelsesstyring til udvikleren, til fordel for sprog som C#, Go, Java, Ruby, Rust og Swift, som giver automatisk hukommelsesstyring eller udfører kompileringstidshukommelsessikkerhedstjek.

Ifølge Stroustrup er de sikre sprog, der er nævnt i NSA-rapporten, faktisk ikke C++ overlegne i de applikationer, der er vigtige set fra hans synspunkt. Især de grundlæggende anbefalinger til brug af C++ (C++ Core Guidelines), udviklet i de senere år, dækker over sikre programmeringsmetoder og foreskriver brugen af ​​værktøjer, der garanterer sikkert arbejde med typer og ressourcer. Dette giver udviklere, der ikke kræver sådanne strenge sikkerhedsgarantier, mulighed for at fortsætte med at bruge gamle udviklingsmetoder.

Stroustrup mener, at en god statisk analysator, der følger C++ Core Guidelines, kan give de nødvendige garantier for sikkerheden af ​​C++ kode til en væsentlig lavere pris end at migrere til nye sikre programmeringssprog. For eksempel er de fleste af Core Guidelines allerede implementeret i den statiske analysator og hukommelsessikkerhedsprofil, der er inkluderet i Microsoft Visual Studio. Nogle anbefalinger er også taget i betragtning i Clang tidy statisk analysator.

NSA-rapporten blev også kritiseret for kun at fokusere på hukommelsesproblemer og udelade mange andre programmeringssprogproblemer, der påvirker sikkerhed og pålidelighed. Stroustrup ser sikkerhed som et bredere koncept, hvis forskellige facetter kan opnås ved en kombination af kodningsstil, biblioteker og statiske analysatorer. For at kontrollere medtagelsen af ​​regler, der sikrer sikkerheden ved at arbejde med typer og ressourcer, foreslås det at bruge annoteringer i koden og kompileringsmulighederne.

I applikationer, hvor ydeevne er vigtigere end sikkerhed, giver denne tilgang mulighed for selektiv anvendelse af funktioner, der kun garanterer sikkerhed, hvor det er nødvendigt. Sikkerhedsværktøjer kan også anvendes på en stykkevis måde, såsom at starte med områdekontrol og initialiseringsregler og derefter gradvist tilpasse koden til strengere krav.

Kilde: opennet.ru

Tilføj en kommentar