Skaperen av C++ kritiserte innføringen av sikre programmeringsspråk

Bjarne Stroustrup, skaperen av C++-språket, har publisert innvendinger mot konklusjonene i NSA-rapporten, som anbefalte organisasjoner å gå bort fra programmeringsspråk som C og C++, som overlater minnehåndtering til utvikleren, til fordel for språk som for eksempel C#, Go, Java, Ruby, Rust og Swift, som gir automatisk minneadministrasjon eller utfører sikkerhetssjekker for kompileringstid.

Ifølge Stroustrup er de sikre språkene som er nevnt i NSA-rapporten faktisk ikke C++ overlegne i applikasjonene som er viktige fra hans ståsted. Spesielt de grunnleggende anbefalingene for bruk av C++ (C++ Core Guidelines), utviklet de siste årene, dekker sikre programmeringsmetoder og foreskriver bruk av verktøy som garanterer sikkert arbeid med typer og ressurser. Utviklere som ikke krever slike strenge sikkerhetsgarantier står imidlertid igjen med muligheten til å fortsette å bruke gamle utviklingsmetoder.

Stroustrup mener at en god statisk analysator som følger C++ Core Guidelines kan gi de nødvendige garantiene for sikkerheten til C++ kode til en betydelig lavere kostnad enn å migrere til nye sikre programmeringsspråk. For eksempel er de fleste av kjerneretningslinjene allerede implementert i den statiske analysatoren og minnesikkerhetsprofilen inkludert i Microsoft Visual Studio. Noen anbefalinger er også tatt i betraktning i Clang tidy statisk analysator.

NSA-rapporten ble også kritisert for kun å fokusere på minneproblemer, og utelate mange andre programmeringsspråkproblemer som påvirker sikkerhet og pålitelighet. Stroustrup ser på sikkerhet som et bredere konsept, der de forskjellige fasettene kan oppnås ved en kombinasjon av kodestil, biblioteker og statiske analysatorer. For å kontrollere inkludering av regler som sikrer sikkerheten ved arbeid med typer og ressurser, foreslås det å bruke merknader i koden og kompilatoralternativene.

I applikasjoner hvor ytelse er viktigere enn sikkerhet, tillater denne tilnærmingen selektiv bruk av funksjoner som garanterer sikkerhet kun der det er nødvendig. Sikkerhetsverktøy kan også brukes på en stykkevis måte, for eksempel å starte med områdekontroll og initialiseringsregler, og deretter gradvis tilpasse koden til strengere krav.

Kilde: opennet.ru

Legg til en kommentar