Skriv ut

EMBEDDED WORLD Programspråket Ada associerar vi till flygplan, rymdfarkoster och vapensystem – inte till ett oskyldigt litet Microbitkort. Men det är vad Fabien Chouteau använder när han presenterar Adacores Ada-verktyg.

Notera att Microbit alltså inte är en gryende plattform för säkerhetskritiska system. Den råkar bara vara populär bland såväl utställare, pedagoger och utvecklare som en söt och universell liten demoplattform med sina dioder, sensorer och trådlösa gränssnitt.

Fabien Chouteau demonstrerar Ada-programmering på Microbit. Han har tyvärr inte med sig sin självspelande Ada-styrda Xylofon denna gång. Han arbetar på franskamerikanska konsulten och verktygsleverantören Adacore.

Ofta kommer folk med en fördom att Ada är ålderstiget, enligt Fabien Chouteau.

– Det är vårt jobb att berätta att Ada lever – mer än nånsin! Vi ser hela tiden nya kunder ansluta sig inom olika domäner efter att de sett ljuset.

EN TID SPÅDDES faktiskt Ada bli det ultimata imperativa högnivåspråket. Men så dök Java upp och knep den rollen – efter fem miljarder kronor i marknadsföring från Sun. Men det finns en nisch där Ada fortfarande biter sig fast: säkerhetskritiska system.

Det är dock en nisch som inger respekt – eller hur? Det kan Adacore ta stöd i när det söker sprida Ada till fler nischer inom inbyggda system.

Inbyggnadskonsulten Adacore grundades kring Gnat, en öppenkodskompilator för Ada. Den skapades redan på 90-talet på uppdrag av amerikanska flygvapnet.

– Huvudnischen är fortfarande säkerhetskritiska system inom flyg och rymd. Men det händer mer. Det finns bland annat ett antal projekt inom fordonselektronik, berättar Fabien Chouteau.

Därför kvalificerade Adacore i fjol sina verktyg för fordonssäkerhetsstandarden ISO-26262. I självkörande fordon är den säkerhetskritiska aspekten uppenbar. 

Det är inte bara säkerhetskritiska system som vi behöver kunna lita på. I takt med digitaliseringen blir samhället  alltmer beroende av 24/7-fungerande system. Genom att använda Ada kan man enligt Adacore se till att mjukvaran inte blir den svaga länken i dessa system.

– Det sker ett skifte i inställningen till mjukvarans roll i att uppfylla systemkraven. Så allt fler i inbyggnadsbranschen intresserar sig för våra lösningar.

AMERIKANSKA NVIDIA är en av dem som använder Ada i fordonselektronik, i sin marknadsdominerande självkörningshårdvara.

Närmare bestämt använder Nvidia en delmängd av Ada kallad Spark. Det speciella med Spark är att koden kan kopplas till sin specifikation och att det därefter går att automatiskt bevisa att programvaran uppfyller sin specifikation, vilket betyder att den är fri från viktiga typer av buggar.

Bevisen utnyttjar Adas stöd för så kallad kontraktsbaserad programmering som innebär att utvecklaren inte bara skriver kod utan också specificerar villkor för vad som ska gälla före och efter att koden exekveras.

ADA STÖDER den växande cpu-arkitekturen Risc V. Nyss nämnda självkörningsplattform från Nvida kör firmware skriven i Ada på Risc V-cpu:er. Också Adacores implementering av Ravenscar – en plattform för hård realtid i Ada – har fått stöd för Risc V.

Adacore är medlem i Risc V-stiftelsen sedan två år. Företaget behöver djup kunskap om arkitekturen för att kunna optimera sin kod.

– Säkerhetskritiska system vill inte ha en massa mjukvara mellan sig och hårdvaran, eftersom all kod måste verifieras.

Samtidigt som Adacore försöker utvidga Ada från sin klassiska nisch dyker det just nu upp en utmanare, programspråket Rust, som försöker ta sig in på Adas domän.

– Man hör talas om det ibland. Men det finns inga säkerhetskritiska system som använder Rust idag.

Programspråket i sig, Ada eller Rust, är inte hela hemligheten med robusthet. Kring Ada har verktyg och procedurer mognat under 25 år.

– Det finns inte motsvarande mognad hos Rust.

Det finns enligt Fabien Chouteau visserligen projekt för formell verifiering i Rust, liknande Spark, men det finns inget som är färdigt för industriellt bruk. Han tycker heller inte att Rust hittat riktigt rätt fokus för att kunna utmana Ada.

– Det finns subtila skillnader. Rust fokuserar på minnessäkerhet – att det exempelvis inte finns frikopplade pekare. Och det är viktigt, ja, men det är ett programmerarproblem.

Adas och Sparks perspektiv ligger på en högre nivå: funktionssäkerhet i stora programsystem.

Även ett annat programspråk, Java, har tidvis försökt ta sig in på Adas domäner. Fabien Chouteau känner inte till några fall där det lyckats.

– Jag tror inte det gått så bra, av tekniska skäl som skräpsamling och annat. Java är inte direkt någon medtävlare.

Java är liksom Rust minnessäker. En av mekanismerna för detta är skräpsamling – automatisk återvinning av minne – men det är också ett klassiskt problem för Java genom att det stör realtiden.