Microsoft-chef: Stop nye projekter med C og C++ og brug Rust i stedet

23. september 2022 kl. 09:209
Stopskilt
Illustration: Wikipedia/Bidgee.
Sprogene er forældede på grund af manglende sikkerhed og pålidelighed, lyder den kontroversielle udmelding.
Artiklen er ældre end 30 dage

»Det er på tide at stoppe med at starte nye projekter i C/C++ og bruge Rust til de scenarier, hvor et sprog uden garbage collection er påkrævet. Af hensyn til sikkerheden og pålideligheden bør industrien erklære disse sprog for forældede.«

Sådan lyder det iskoldt fra Mark Russinovich, der er teknisk chef for Microsofts sky Azure, i et indlæg på Twitter.

Microsoft-forskeren Matthew Parkinson viste i 2019, at Antallet af CVE-sårbarheder i Microsofts produkter stiger mere end lineært år for år, og det skyldes ikke mindst, at firmaet forvalter en stor mængde gammel kode, skrevet i C og C++.

Omkring 70 procent af de sårbarheder, Microsoft udstyrer med et CVE-nummer, skyldes problemer med usikker hukommelse. Det tal havde i 2019 ligget stabilt i de foregående 12 år.

Artiklen fortsætter efter annoncen

Læs også: Verona: Nyt sikkert sprog fra Microsoft skal løse problemer med gammel C og C++

Via en retweet henviser Mark Russinovich også til Linus Torvalds, som til Zdnet udtaler, at medmindre der sker noget underligt, vil Rust komme med i version 6.1 af Linux-kernen, der ellers er skrevet i C. Der er dog tale om brug af sproget til kerneinfrastruktur, og ikke alvorlige use cases, siger Linus Torvalds. Tidligere har han peget på drivere som et godt sted at starte med Rust i Linux.

Læs også: Linus Torvalds: Rust kan være godt til drivere

 

9 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
8
29. september 2022 kl. 09:32

I min optik har C og C++ været outdated i mange år - Jeg betragter dem faktisk som stenalderværktøjer. Jeg har kodet i begge sprog i et par årtier, og selvom jeg har tillært mig mange idiomer for at imødegå mangler i sprogene, har jeg aldrig lært at sætte rigtig pris på dem - Det er simpelthen for nemt at lave fejl i dem.

Jeg holdt for nogle år siden et lille foredrag om Ada, hvor een af tilhørerne der kendte til Rust, sagde noget i retning af: "Hvis Ada har eksisteret i så mange år, og kan bla. bla. bla., jamen, hvorfor så overhovedet Rust?!?" Ud fra det ganske lidt jeg har hørt om Rust, så tænker jeg at de største forskelle er alder (modenhed), navn og syntaks. Jeg foretrækker Ada, men hvis Rust er det brækjern der skal til for at redde verden fra C og C++, så står jeg helt sikkert på sidelinjen og hepper på Rust!

Jeg har hørt utallige undskyldninger for at C/C++ er bedre end (name-your-language), men den eneste jeg kan se er: "at de er mest udbredte".

Jeg tror i øvrigt det mindste produkt jeg har lavet i Ada på AVR var på ~1.5kB flash-kode og ~30 bytes RAM. Arbejder dog normalt på mellemstor kodebase på ~1MSLOC Ada (ikke på AVR :o)).

5
25. september 2022 kl. 23:13

Det er fint at snakke om at bruge et nyt sprog, Rust, som erstatning for noget andet C. Hvordan håndterer sproget maskinnær programmering? Findes der compilere til det? For eksempel til programmering af RaspberryPi Pico eller Microchips/Atmels små enheder med 30 kbyte flash og under 1 kbyte RAM? Der er rigtigt mange systemer som skal leve på nogle få uA i hvile.

4
24. september 2022 kl. 02:00

Herb Sutter havde et særligt interessant foredrag på cppcon 2022 bl.a omhandlende dette og hans experimenter med en cppfront transpiler for at mitigere nogle af sikkerhedsproblemerne og også gøre c++ nemmere at forstå og lære uden at gå på kompromi med nogle af ISO kommiteens mantraer "You don't pay for what you don't use." og 'backwards combability' til gamle kode. Som jeg forstår det, noget ala hvad Typescript er overfor Javascript. Bid mærke i denne del af foredraget 40:38-44:47, specielt 42:01.

1
23. september 2022 kl. 14:04

OK, sikker programmering er svært for mange, og c++ er utroligt mange ting på en gang, og derfor svært at lære. RUST tager dig i hånden, tvinger dig til at løse visse opgaver på en bestemt måde, og begrænser nogle af de fejl du kan begå.
Men hvilke opgaver er det lige at RUST løser bedre end c/c++ ? Handler det ikke mere om god praksis og dygtighed?

6
27. september 2022 kl. 10:29

Men hvilke opgaver er det lige at RUST løser bedre end c/c++ ? Handler det ikke mere om god praksis og dygtighed?

Det handler om produktivitet. Hvis en dygtig udvikler bruger en del tid og hjernekapacitet på at holde styr på ting som compileren kunne gøre for ham så er han mindre produktiv. Det fantastiske ved Rust er at der i praksis ikke er noget performance tab.

Som kuriosum kan jeg nævne at jeg har set rigtigt dygtige C++ udviklere der var 4 gange så produktive da de skiftede (og blev rigtigt dygtige) til C#. Der er naturligvis også minusser ved netop det skifte og det skal selvfølgeligt faktoreres ind så det kan ikke sammenlignes direkte med Rust.

9
29. september 2022 kl. 13:41

Hvis en dygtig udvikler bruger en del tid og hjernekapacitet på at holde styr på ting som compileren kunne gøre for ham så er han mindre produktiv

En større "trussel" imod produktivitet har min lille, begrænsede "verden" vist sig at være møder, managers og oprydning efter andre...

3
23. september 2022 kl. 23:14

Du kan skrive god kode i alle sprog. Men i nogle sprog kan du få computeren til at tjekke om det er god kode. Det er en fordel.

C og C++ er selv sprog der tilføjer sådanne compiler tjeks i form af det er sprog med et stærkt typesystem, og C++ mere end C. Modsætningen er dynamisk typede sprog hvor typefejl først opdages under udførslen.

Jeg vil mene at i forhold til C tilføjer Rust og i forhold til C++ er det mere en bytning af noget for noget andet. Hvor C++ har fokuseret på klasser og objekter, så er det meste af dette fjernet fra Rust i bytte for fokus på ressourcestyring. Dette afspejler tiden de to sprog blev udviklet i.

Jeg synes det er lidt forfejlet at mange skriver C/C++ når der tales om Rust. I min verden er Rust primært en erstatning for C hvorimod C++ er noget andet. Husk på at Linux kernen hellere ikke er skrevet i C++. Rust vil være systemsproget der anvendes i stedet for C til anvendelser som eksempelvis kerneprogrammering.

2
23. september 2022 kl. 15:37

Som nævnt i artiklen har flere store IT virksomheder udmeldt at omkring 70% af deres sårbarheder stammer fra problemer med håndtering af hukommelse. Hele denne klasse af sårbarheder forhindres af Rust, mens du beholder samme niveau af kontrol over maskinens resurser.

Selvfølgelig kan du skrive lige så sikker kode i C/C++. Men C/C++ verdenens mytiske "gode programmør" der aldrig laver hukommelsesfejl, har jeg ikke mødt i det virkelig liv endnu :)