Tidenes bug fjernes av Rust

Programming language, Rust inscription on the background of computer code. Modern digital technologies and programming training

De fleste vet at all software har bugs. Langt færre vet at over 80% av dem har samme årsak. Og ytterst få kjenner Rust – vårt hittil kraftigste våpen i kampen. Det kan ikke vare. Rust seiler inn i den store diskusjonen – om robusthet, kompetanse, strategi og sikring av den digitale fremtiden.

Svulstig. Men her er utfordringen: 2 milliarder PCer, 3+ milliarder mobiltelefoner, nærmere en milliard rutere, 8 milliarder IoT-dingser og mer – alt knyttet til samme nettverk. Mange er (teknisk) gamle og alle har bugs – ikke like mange eller like alvorlige, men ingen er feilfrie. Videre øker mengden med anslagsvis 20% i året, kanskje mer. At dette tilsynelatende skjøre systemet fortsatt fungerer, kan fremstå som underlig – og forteller i realiteten en historie om underliggende robusthet som er verdt å ta av seg hatten for. Internettet er ikke ett nettverk, men titusenvis av sammenkoblede nettverk som i betydelig grad klarer seg på egen hånd. En øvelse i 'managed complexity' som er egnet til å inspirere og motivere (se Den komplekse enkelheten).

Men tilbake til utfordringen: Fra tid til annen får vi en advarsel – som da bot-nettet Mirai infiserte 100.000 dingser i USA i 2016, og blokkerte Internettet på hele østkysten i nærmere et døgn. Hvordan kan ‘systemet’ fortsette å vokse uten å knele under sin egenvekt?

Vi har diskutert sider av utfordringen tidligere (se referanser nedenfor), og tiden er overmoden for en god nyhet – som starter med en bisarr observasjon: 80+ % av alle bugs har samme opprinnelse – buffer overflow, memory corruption. Tall og statistikker fra Microsoft, fra Linux-verden, fra Google har eksakt den samme historien, visualisert (av Microsoft) på figuren. 

Den mørkeblå kurven med brattest stigning er såkalte 'buffer errors' - bugs som 'bommer' på tilordnet hukommelse og åpner for misbruk. Data fra NIST, figur fra Microsoft.

Problemet har vært kjent i mange tiår og fortsetter å aksellerere i omfang. Hvorfor har vi ikke fikset det for lenge siden? Vi har prøvd og prøvd – bevisstgjøring, opplæring, nye verktøy, kontrollmekanismer, avansert testing, kunst intelligens. Og ikke minst bedre forståelse av problemene (for spesielt interesserte - se rapporten The Meaning of Memory Safety). Store fremskritt, men mengden software, antall utviklere og korte tidsfrister 'presser' kvaliteten kontinuerlig. Dessuten – også verktøy har bugs, med effekt som kan minne om en influensasmitte på beach party: Enorm spredning.

Fra StackOverflow Developer Survey Results 2019.

Men tilbake til de gode nyhetene, og Rust er én av dem. Et programmeringsspråk med opprinnelse fra før 2010, som det siste året har flyttet fra 'stor utbredelse i få miljøer' til 'most loved' blant utviklere i StackOverflows årlige undersøkelse 2019. Fortsatt en pygmé i den store sammenhengen, men vi kjenner 'lusa på gangen': For ikke altfor mange år siden var dagens favoritter - Javascript og Python - akkurat der.

Historien startet for over 10 år siden hos Mozilla – utviklingsorganisasjonen bak Firefox og en rekke andre software komponenter, de fleste mest kjent blant utviklere. Store deler av Firefox er skrevet i Rust, og statistikken med hensyn til 'unyttbare feil' er overbevisende. Det lover godt.

Samtidig er det et faktum at relasjonen mellom 'sikre' verktøy og utviklere alltid vært anstrengt. Avanserte utviklere vil ha frihet, ikke restriksjoner. Vanskelig for 20 år siden, langt enklere i 2020 fordi ressursene er større – både for utviklere (verktøy) og for miljøene som skal kjøre programmene (OSer, hardware). Dessuten – Rust har lav terskel og 'tekniske fristelser' som får erfarne utviklere i gang på rekordtid – og forklarer popularitetsdiagrammet til venstre.

Videre - Rust er ikke alene i dette selskapet. Microsofts CheckedC og Apples Swift har mange av de samme egenskapene og definitivt samme mål: Mer software med færre bugs – og minimalt med utnyttbare bugs. Men hadde ikke markedsleder Java samme mål: Trygg programmering? Udiskutabelt, og Java er ingen versting. Men Java er gammel og svikter på vesentlige punkter med hensyn  til nettopp Memory Safety.

I løpet av de nærmeste årene skal nye milliarder av dingser ut i markedet, til steder vi knapt kan forestille oss og med høye krav til pålitelighet og etterrettelighet. Der skal mange av dem fungere – helt på egen hånd - i kanskje 10 år. Ikke nødvendigvis feilfritt, men uten ‘utnyttbare’ feil. Da holder ikke de gamle verktøyene. 

Utviklere vi ansetter (og videreutdanner) i dag må ha kunnskap om, holdninger til og ambisjoner innenfor sikker utvikling og tilhørende verktøy. 
Det betyr – og her er den strategiske føringen – at utviklere vi ansetter (og videreutdanner) i 2020 må ha kunnskap om, holdninger til og aller helst ambisjoner innenfor sikker utvikling og tilhørende verktøy. 

Også verdens beste utviklere lager bugs. Bedre verktøy gir færre bugs og større robusthet. Effekten er lavere risiko. Derfor er 'det beste godt nok'. Derfor betyr Rust & co allerede med enn prosentene tilsier.

Legg igjen kommentar

Dette nettstedet bruker Akismet for å redusere spam. Lær om hvordan dine kommentar-data prosesseres.