US National Security Agency (NSA) har bett utvecklare från hela världen att undvika
Vad är problemet med C++-språket?
För att utföra instruktioner i koden behöver dusystemresurser, särskilt minne. Problemet med vissa äldre programmeringsspråk är att de tillåter utvecklare att flytta det manuellt. Som ett resultat vilar ansvaret för minneshantering på utvecklaren. Enkla misstag av programmerare leder till ett "uppbrott" av systemet och uppkomsten av säkerhetsproblem.
Denna frihet leder till vissa risker.Dessa minnessäkerhetsfel kan uppstå från enkla stavfel och bortglömda kodrader, eller från komplexa minnesstrukturer och oväntade interaktioner.
uttalande från Atlantiska rådet till Nordatlantiska fördragsorganisationen
I vissa fall kan en angripare använda dessa fel för att få åtkomst till systemet eller exekvera skadlig kod.
Alltså ofta använda språk somPrecis som C och C++ ger inte bara större frihet och flexibilitet i minneshantering, utan också "lita" på programmeraren i denna fråga. NSA menar att detta ger hackare möjlighet att utnyttja sårbarheter för sina egna syften.
IT-jättars yttrande
Enligt teknikföretagen har andelenGamla språk som C och C++ står för upp till 65% av alla fel. Således noterar Microsoft, Google och andra IT-jättar sårbarheter i sina koder på grund av problem med minnessäkerhet.
Vilka språk är säkra?
Nya programmeringsspråk som Python,Java* och Rust allokerar minne automatiskt. Många av dem eliminerar antingen praktiskt taget säkerhetsbuggar eller gör dem omöjliga. NSA-tjänstemän har lagt till C#, Go och Swift till den "säkra listan".
Svar från "grundaren" till C och C++
Skapare av programmeringsspråket C++ BjörnStroustrup svarade på NSA:s uppmaning att överge användningen av äldre programmeringsspråk, där ansvaret för minneshantering vilar på utvecklaren.
I sitt öppna brev publiceratPå open-std.org uttryckte Stroustrup sin oenighet med byråns ståndpunkt. Han uppgav att hans representanter hade "klumpat ihop" C och C++, trots att språken hade utvecklats oberoende under de senaste 30 åren. Samtidigt anklagade han utvecklarna för att "ofta ignorera förändringar i språket som radikalt kan förbättra kodsäkerheten."
I själva verket, enligt hans åsikt, är C++ inte på något sätt sämre än moderna så kallade säkra språk som C#, Go, Java, Ruby, Rust och Swift.
Expertutlåtande
För att ta reda på hur seriöst man ska ta NSA:s varning pratade Hi-Tech med Andrei Naichenko, den ledande förköpsarkitekten för Spheres mjukvaruproduktionsplattform.
Han anser att faran med detta förbudför marknaden och kodare bör inte överskattas. "De tider då applikationssystem utvecklas i C++ är ett minne blott, och övergången till de rekommenderade språken (C#, Go, Java, Ruby och Swift) har redan genomförts av de flesta utvecklare", förklarar experten.
Dagens användning av C++begränsat till nischlösningar inom området operativsystem, spelutveckling och spelmotorer (Unreal Engine, Unity), GPU-beräkning (kryptovaluta, djupinlärning), utveckling av högbelastnings- och högpresterande algoritmer. Med tanke på volymen av utvecklad kod och antalet specialister är det osannolikt att övergången till andra språk inom dessa områden kommer att ske inom en snar framtid. För resten (huvuddelen) av marknaden hotar inte denna rekommendation från NSA något.
Angående giltigheten av detta beslutAndrey Naichenko stödde skaparen av C++-språket Bjarne Stroustrup. "C++-språket i moderna utgåvor av standarden tillhandahåller en bred och mogen uppsättning verktyg som låter dig framgångsrikt lösa problem med säkert arbete med minne," förklarade experten.
Hur kommer NSA-beslutet att påverka Ryssland?
De problem som identifieras i NSA-rapporten är mer sannolikaTotalt återfanns de i lösningar implementerade på tidiga språkstandarder. I slutändan kommer NSA:s beslut inte att ha någon betydande inverkan på mjukvaruutvecklare som riktar sig till den ryska marknaden.
Läs mer:
Forskare har namngett de 6 bästa sätten att "rädda" minnet av äldre människor
Ett mystiskt avtryck under jorden överraskade forskare. Han är över 1000 år gammal
Svärd som tros vara falskt visar sig vara en 3 000 år gammal artefakt från bronsåldern
*Trots att Java klassas som ett nytt språk är det ett ganska gammalt programmeringsspråk (obs - "High-tech")