Bud Lawsons långa kamp mot komplexitet
Den svenska datateknikens nestor Harold ”Bud” Lawson har suckat över onödig komplexitet i datorsystemen sedan han arbetade med System/360 på 60-talet. Han anser att vi förtjänar bättre datorer och har idéer om hur det kan göras.
Mycket av en programutvecklares energi läggs på att kämpa mot problem som uppstår i själva plattformen – processor, operativsystem och programspråk.
Med bättre plattformar skulle utvecklarna kunna ägna energin åt tillämpningarna och datorerna skulle vara robustare.
NAMN: Harold ”Bud” lawson FÖDD: 1937 i Philadelphia. BOR: Lidingö. BARN: 27, 31 och 55. HOBBY: Tennis. KONTAKT: Den här e-postadressen skyddas mot spambots. Du måste tillåta JavaScript för att se den. |
Istället har användarna vant sig vid kraschande och osäkra datorer.
– Frustrationen vid alla dessa omstarter, förlust av kritiska data, dålig säkerhet som bäddar för hackerattacker, och så vidare – det accepteras som något normalt. Det är horribelt! säger Bud Lawson.
Den bakomliggande orsaken är enligt honom onödig komplexitet i datorplattformarna. Han vill för det första se mer utveckling i högnivåspråk. Språket C är för lågt, även för systemprogrammering.
Bud Lawsons gamla kollegor är en kavalkad av kända namn. Han har dinerat hos Gordon Bell och hjälpt måla Don Estridges hus. Grace Hopper, som var hans första chef, har stickat en tröja åt hans dotter. Harold Lawsons första kontakt med datorer var ett sommarjobb 1958 på USA:s statistikmyndighet Census bureau. En rumskompis som var datorentusiast och en tvådagarskurs i Univac 1103-programmering fick honom fast. Han har lämnat många avtryck i datorhistorien. Den mest magiska meriten är nog en referens i volym 1 av datalogins klassiska verk The art of Computer Programming av Donald Knuth. Det är som att ha en referens i bibeln. Referensen gäller en teknik kring länkade datastrukturer. Med sådana kan man klämma in ett nytt värde mitt i en lista utan att behöva flytta de befintliga i minnet. För konceptet pekarvariabel har Bud Lawson förärats IEEE:s datorpionjärmedalj till Charles Babbages minne. En pekare är en minnesadress, ett sätt att göra sådana mer lätthanterliga i programspråk. Buds bollplank för pekarna var Donald Knuth och Douglas McIlroy. Den senare var chef för ingen mindre Dennis Ritchie när denne skapade programspråket C, det stora språket idag för systemprogrammering. C är tungt orienterat kring just pekare, och nu vet du var Dennis Ritchie fick dem ifrån. Det går inte att täcka in hela Bud Lawsons karriär i en kort artikel. Är du nyfiken skickar han dig ett mejl med en egen 15-sidig resumé som bilaga. På Polytechnic Institute of Brooklyn i slutet av 60-talet utformade han en av USA:s första dataingenjörsutbildningar. Några år senare medverkade han i grundandet av den första svenska dataingenjörsutbildningen, D-linjen, och den första datavetenskapliga institutionen, IDA. Forskarkarriären tog honom också bland annat till KTH och till universitet i Barcelona, Stuttgart, Malaya och Keio. Han flyttade upp landet Malaysia några steg i elektronikvärdekedjan genom att grunda dess forsknings- och utvecklingsinstitut Mimos. Bud Lawson har jobbat med Viggen, tagit fram säkerhetsstandarder åt FMV, hjälpt KTH utveckla en mekatronikinriktning, producerat drygt 100 publicerade vetenskapliga artiklar och författat en ISO/IEC-standard om processer. Reflektioner kring system i vidare mening är hans senaste vurm. Han har publicerat en volym om system kallad A Journey Through the Systems Landscape med vilken han undervisar både militärer, forskare, ingenjörer, chefer och läkare. Han driver också en vetenskaplig bokserie i ämnet system, som hittills kommit ut i sju volymer. |
– Folk fortsätter att programmera i lågnivåspråk som C, även för tillämpningar. Det är roten till många av de problem vi ser. Lösningarna blir för komplexa.
Han godkänner inte mellanvara som lösning för att höja abstraktionsnivån.
– Det är ett erkännande av att maskinen är felaktig. Och det bara gömmer undan komplexiteten. Den finns fortfarande kvar och kan sticka upp sitt fula huvud när som helst när det exempelvis finns programfel i mellanvaran.
För att abstraktionerna ska kunna höjas krävs processorer med kraftfullare instruktioner som stöder högnivåspråk.
Här vill Bud Lawson blåsa liv i tekniska lösningar som började utvecklas redan under den senare delen av 60-talet. Men IT-utvecklingen valde en annan väg.
– Det är det som är det mest frustrerande, att det samtidigt utvecklades alternativ teknik som skulle gett betydligt stabilare plattformar.
Bud Lawson var med när det som han kallar ”den långa marschen mot ett svart hål av komplexitet” startades av IBM på 60-talet. Företagets dator System/360 var enligt Bud Lawson ett tekniskt misslyckande. Men den blev ändå en ekonomisk succé och dominerade marknaden under två decennier.
System/360 var tänkt att bli en enkel arkitektur, men olika grupper bad om och beviljades undantag och tillägg för att kunna generera effektivare kod. Komplexiteten exploderade. En manual på en enda volym växte till en bokhylla på ett halvår.
– Operativsystemet blev stort och fullt av buggar. Folk läste inte dokumentationen och tog därmed beslut utan ordentlig kunskap. Kaoset var ett faktum.
IBM var dock mycket duktig på att sälja. Därmed förvandlades komplexiteten från ett bekymmer till en inkomst, eftersom kunderna inte kunde hantera systemen på egen hand.
– De tjänade förmögenheter på utbildning och konsultverksamhet. Det finns utan tvekan mycket pengar att tjäna på komplexitet.
En av nischerna var fristående konsulter som sålde nya bättre implementationer av system de själva utvecklat för System/360.
– 40 procent effektivare kod kunde vara mycket värt, datortid var dyrt.
Bud Lawson betraktar System/360 som ett misslyckande och han spekulerar till och med om inte USA senare medvetet använde det som vapen, genom tillåta export till Sovjet, som då hade egna bättre arkitekturer.
– Gigantiska investeringar i IBM/360 kostade antagligen Sovjet tio år av utveckling.
Stafettpinnen för den långa marschen ner i det svarta komplexitetshålet togs över av Intel och
Windows på 80-talet.
– Wintel tjänar miljoner åt olika komplexitetsombudsmän i form av konsulter, utbildare och lärare.
X86 var bra när det kom, att bygga enkla styrsystem i. Problemet är att X86 bet sig fast.
– X86 är ännu svårare att generera kod för än System/360. Att bygga enkla tillämpningar på den var ok. Men idag bygger världens mest komplicerade mjukvarusystem på X86 och det var den aldrig konstruerad för.
– För mig dog området datorarkitektur i mitten av sjuttiotalet. Man adresserar inte problemen utan gör dem värre. Vi trycker upp massor av kopior av X86 på samma integrerade krets. Istället för en enda dålig lösning får vi tusentals.
– Att vi inte adresserar mjukvarukomplexiteten skrämmer mig. Det kanske kommer att krävas en ordentlig krasch av Internet eller liknande, innan samhället tvingar branschen att åtgärda problemets orsaker vid roten.
Bud Lawsons engagemang i System/360 gällde programspråket PL/I, som han var med och skapade. PL/I ville vara ett generellt språk där dåtidens programspråk var nischade, som Fortran för numeriska beräkningar och Cobol för affärer.
Det var för PL/I som Bud Lawson skapade sitt berömda koncept pekarvariabeln (se artikel intill). Tyvärr skedde det efter att stora delar av språket redan definierats. Med pekarna på plats från början hade andra delar av språket kunnat förenklas.
– Komplexiteten skulle ha kunnat reduceras ordentligt. Men det var för sent att backa tillbaka.
Bud Lawson tror att en datorarkitektur från den gamla kollegan Maurice Wilkes skulle kunna hjälpa sänka komplexiteten. Den bygger på mikroprogrammering, att cpu:n har en flexibel instruktionsuppsättning genom att mikroprogrammen som definierar instruktionerna är programmerbara.
På det viset kan en färdig processor i efterhand inte bara emulera andra datorer utan också optimeras för olika programspråk och operativsystemsfunktioner.
Mikroprogrammering är en smal nisch idag. Ett av få exempel är svenska Imsys mikroprogrammerbara processor som anpassats för bland annat Java.
– Stefan Blixt på Imsys är ett lysande undantag.
Bud Lawson startade en arbetsgrupp kring mikroprogrammering på IBM. Men han insåg att IBM inte skulle byta spår.
– De hade ju redan hittat ett sätt att exploatera sin komplexitet.
Istället fick han chansen att implementera en mikroprogrammerbar dator på Standard Computer Corporation. Den hette MLP-900 och ledde till Bud Lawsons första kontakt med Sverige, när Datasaab blev intresserat.
För Datasaabs systemfamilj D23 konstruerade Bud Lawson den mikroprogrammerbara processorn FCPU.
Han beskriver gillande den lilla och effektiva utvecklingsgruppen på Datasaab med en handfull personer.
– På IBM skulle vi haft 50–60 personer. Det är något jag ofta reflekterat över. Jag tror att det är en av hemligheterna bakom att lilla Sverige kunnat utveckla avancerade tekniska system inom områden som bilar, lastbilar, jetplan, telekomsystem
En liten grupp har kanske lägre komplexitet?
– Det är självklart. Många stora projekt lider av en betydande onödig komplexitet på grund av personligheter och relationer, inklusive missförstånd.
Parallellt med sin forskning jobbade Bud Lawson från mitten av sjuttiotalet som konsult. Här gjorde han en viktig insats för ATC (Automatic Train Control), det säkerhetssystem för tåg som bland annat SJ använder.
Han föreslog dess konstruktör att byta till en mer robust metod att köra de olika styrprogrammen.
– Utvecklaren var en duktig ingenjör, men hade producerat alltför komplex kod – jag insåg att det inte skulle fungera, att det inte var ett underhållbart system.
Med Bud Lawsons metod blir ATC-systemet mycket mindre komplext och därmed lätt att verifiera och pålitligt. Och det tar bara 10 kbyte ROM.
Metoden kallas tidsstyrning och innebär att datorn i evighet går igenom exakt samma slinga av operationer om och om igen, var 250:e ms i ATC-fallet. Ursprungsversionen var händelsestyrd vilket betyder att kod endast exekveras som svar på händelser, vilket låter mer ekonomiskt men gör systemet ickedeterministiskt och svårt att verifiera.
ATC är ett exempel på ett tillfälle då han faktiskt lyckades i sin ambition att sänka komplexiteten i ett datorsystem.
Stockholms pendeltåg valde en händelsestyrd lösning på samma problem.
– Den är dyr, mycket komplicerad och svår att testa. SJ-förarna är alltid positiva till ATC, medan SL-lösningen får klagomål, konstaterar Bud Lawson nöjt.
ATC-lösningen säljs jorden runt i konkurrens med händelsestyrda lösningar. I USA finns bland annat en version omimplementerad i programspråket Ada.
Också svenska Arcticus säljer tidsstyrningen och använder dessutom utvecklingsverktyg grundade på en annan av Bud Lawsons idéer, något han kallar software circuits.
Arcticus har bland annat satt tidsstyrningen i den så kallade haldexkoppling som sitter i nästan alla fyrhjulsdrivna bilar.
Tidsstyrning och händelsestyrning har krigat mot varandra även inom kommunikationsteknik. I fordonsbussarna vann händelsestyrda CAN.
– Bosch pushade CAN som blev standard. Det var synd, vi hade en bra chans där att verkligen göra skillnad. Det är inte alltid den bästa lösningen vinner, mycket handlar om politik och påtryckningar.