Volgens Mark Russinovich, cto van Microsoft Azure, is de tijd gekomen om programmeertalen C en C++ niet meer te gebruiken voor nieuwe projecten. ‘De industrie zou deze talen moeten behandelen als afgeschreven.' Programmeertaal Rust zou als alternatief moeten dienen.
Russinovich stelt dit vanwege bekommernissen over beveiliging en betrouwbaarheid. Zowel C als C++ zijn vandaag nog populaire programmeertalen, die overigens ook nog danig worden onderwezen op universiteiten en hogescholen. In de laatste editie van de Computable Index van populairste programmeertalen staat C++ bijvoorbeeld op plaats vier en C op de zesde plek. In die lijst staat Rust op plaats zeventien, al is deze laatste wel aan een opmars bezig.
Nieuw is de bezorgdheid rond C en C++ niet, alleen voert de cto van Microsoft Azure, en dus indirect ook Microsoft zelf, nu wel de druk op. Maar drie jaar geleden al benadrukte Microsoft dit punt al. Het stelde toen dat zeventig procent van zijn patches in de afgelopen twaalf jaar fixes waren voor bugs in geheugenveiligheid, grotendeels omdat Windows voornamelijk in C en C++ is geschreven.
Microsoft staat hier niet alleen. Het Chrome-team van Google kwam in 2020 met zijn eigen bevindingen en onthulde dat zeventig procent van alle ernstige beveiligingsbugs in de Chrome-codebase bugs in geheugenbeheer en veiligheid waren, én voornamelijk geschreven in C++.
Rust, dat in 2015 versie 1.0 bereikte en ontstond vanuit het Mozilla-project, is intussen aan een populariteitsslag bezig. Het wordt nu gebruikt binnen het Android Open Source Project (AOSP), bij Meta (Facebook), bij Amazon Web Services en bij Microsoft voor onderdelen van Windows en Azure. De taal wordt ook ingeschakeld voor ontwikkelingen in de Linux-kernel en bij veel andere projecten
Geheugen
Ontwikkelaars en software-ingenieurs waarderen de zogenaamde ‘geheugenveiligheidsgaranties’ bij Rust. Die verminderen namelijk de noodzaak om het geheugen van een programma handmatig te beheren en verkleinen daarmee ook het risico van geheugengerelateerde beveiligingsfouten. Zulke fouten kunnen grote softwareprojecten namelijk belasten, en duiken dus vaak op als die zijn geschreven in talen als C of C++.
De enige kwalificatie van de Azure-cto over het gebruik van Rust is dat het te verkiezen is boven C en C+ voor nieuwe projecten die een zogenaamde niet-garbage-collected taal vereisen. Engines hierbinnen handelen namelijk geheugenbeheer af. Een taal als Go is bijvoorbeeld zo’n taal. ‘Het is tijd om geen nieuwe projecten meer te starten in C en C++ en Rust te gebruiken voor die scenario’s waar een niet-garbage-collected taal nodig is’, schrijft Russinovich. ‘Omwille van de veiligheid en betrouwbaarheid zou de industrie die talen als afgeschreven moeten verklaren.’
Mark Russinovich mag dit soort dingen dus gewoon zeggen. Ik vind het grappig om te zien hoe welbegrepen eigenbelang altijd weer tot integriteit leidt bij Microsoft. Chapeau.
De statistiek liegt niet als het om de genoemde problemen met stack overflows, buffer overflows en niet geïnitialiseerd geheugen gaat. Serieuze problemen welke aangeven dat Trustworthy Computing (TwC) initiatief vooral marketing was. En Mark Russinovich is niet de eerste die op C-level niveau kritiek heeft op een systeem dat niet meer van deze tijd is, geheugengerelateerde beveiligingsfouten lijken me namelijk dodelijk in gedeelde systemen.
Deze problemen geven helemaal niet aan dat Trustworthy Computing vooral marketing was, Ewout Dekkinga. Klinkklare kletskoek.
Mijn opmerking over TwC is, net als geheugenproblemen met C en C++, verifieerbaar want deze marketingcampagne van Microsoft was vooral het gevolg van een imago probleem in 2001 door een groot aantal beveiligingsissues. Bill Gates kwam daarom met de zoete kletskoek van een inherent veilig, beschikbaar en betrouwbaar computersysteem terwijl er wezenlijk niets veranderde aan de eindeloze exercitie van het aanbrengen van updates. We hebben het dus over een inherent onveilig systeem wat steeds voor verrassingen zorgt omdat nooit duidelijk is of gevonden zwakheid stilletjes uitgebuit is.
Het orakel in Groningen mag uiteraard een andere mening hebben maar als hij deze niet beter weet te onderbouwen dan denk ik dat Mark Russinovich een goed punt heeft door te stellen dat we in een onhoudbare positie komen als we blijven doorgaan met alle oude POKE & PEEK oplossingen over te brengen naar nieuwe platformen.
Wezenlijk niets veranderde?? De verwezenlijking van TwC was grotendeels .Net, dus o.a. de overgang naar managed code. Unmanaged code was in de orde van tienduizenden malen meer desastreus als het eventuele fouten van programmeurs inzake geheugenbeheer. Het OS kon überhaupt niet eens ingrijpen op programmafouten.
Weet je wat wel ontzettend marketing-gezwets is? Dat artikeltje over drinkwater voor 100 miljoen mensen met AI van jullie (Fujitsu-Siemens). Ik denk dat je uit schuldgevoel daarover zo nodig verwijten over marketing-hypes op andere organisaties wil projecteren. Het fenomeen marketing-hyping doolt natuurlijk al weken door dat hoofd van jou.
Rust 1.0 stamt van 2015, niet van 2020
Ooit hadden we Pascal…. Wat was de automatisering een stuk verder geweest, en had de wereld er mogelijk een stuk beter uitgezien, als we dat hadden verkozen boven C en C++