Programmera till framtiden

Postad 2017-12-10 av Karl Pettersson. Taggar:

För två år sedan skrev jag om 200-årsminnet av Ada Lovelaces födelse. Hon har kallats världens första programmerare, på grund av de algoritmer hon utarbetade för Charles Babbages Analytical Engine. Vissa ansåg att detta jubileum var något större än Nobeldagen. Även om det i år inte är något jämnt jubileum tänker jag hellre på minnet av hennes insatser än på spektaklen kring Nobelprisen.

En väsentlig sak som skiljer Lovelace från en typisk utvecklare idag är att hon aldrig fick testköra de programrutiner hon utvecklade. Babbages analytiska maskin var en hårdvarudesign som aldrig resulterade i någon verklig hårdvara: det var inte möjligt med de resurser som stod till buds på 1800-talet. Först omkring 1945 kom de första elektroniska datorerna.

Denna observation av hur datorutvecklingen kan bromsas genom att hårdvarans och mjukvarans utveckling kommer i otakt kan sättas i relation till dagens diskussion om framtidsutsikterna för artificiell intelligens överlägsen människans primitiva kognition. Vissa har hävdat att vi är på väg mot en teknologisk singularitet, där sådana övermänskliga artificiella intelligenser förbättrar sig själva och skapar ännu mer övermänskliga intelligenser, som gör det samma i en allt snabbare takt. En del har även försökt sig på att förutsäga tidpunkt för denna singularitet: Ray Kurzweil har argumenterat för att den kommer att inträffa 2045. Sådana förutsägelser bygger till en del på extrapolering från olika varianter av Moores lag, som går ut på att det under lång tid skett en exponentiell ökning av datorernas beräkningskapacitet, i förhållande till t.ex. pris eller storlek.

En invändning mot detta resonemang som t.ex. framförts av Stephenson (2004), med hänvisning till Lanier (2000), är att även om hårdvaran blir snabbare och snabbare, gäller fortfarande att software is shit, och hårdvara utan användbar mjukvara är inte mycket mer än en komplicerad värmeanläggning. Med andra ord står vi inför ett problem (eller en räddning, om singulariteten, som många befarat, skulle innebära katastrof för mänskligheten) motsatt Lovelaces och Babbages. De hade inte tillgång till hårdvara för att köra sin mjukvara, men vi kommer inte att ha tillgång till mjukvara som kan utnyttja möjligheterna i vår hårdvara.

Jo, vi har som sagt haft elektroniska datorer i ungefär 70 års tid, och det verkar i alla fall som om de främsta innovationerna inom mjukvara gjorts under första halvan av denna period. Det som hänt efter 1980, och gjort att datorerna förändrat vårt vardagsliv i många avseenden, är i huvudsak att billigare och smidigare hårdvara möjliggjort vidare spridning av tekniken.

Högnivåspråk från 1957–58, som Fortran och Lisp, används fortfarande för utveckling idag, även om det förstås skett en del moderniseringar av dessa. Operativsystem utvecklades fortfarande i assembler under 1960-talet, som med den första versionen av Unix från 1969, men 1973 hade det mestadels skrivits om i det nya språket C. Lanier (2000) påstår sig ha hatat Unix på 1970-talet och säger att han inte skulle ha satsat på datavetenskap om han fått veta att detta system skulle vara i ropet 2000. Fortfarande 2017 ligger Unix och C till grund för en stor del av vår IT-infrastruktur. Servrar tillgängliga via Internet och så kallade superdatorer, som används för komplexa beräkningar, drivs idag mestadels av någon variant av Linux, och Android har en Linuxkärna. Apples system, macOS, iOS och andra, är också de Unix i botten. Alla dessa system utvecklas fortfarande till stor del i C. Det har under de senaste åren förvisso utvecklats Unixliknande system i nyare språk, som Rust (Redox Team 2017); det återstår att se om dessa system kommer att få någon större spridning. Grafiska användargränssnitt, som har haft stor betydelse för datorernas tillgänglighet, saknades i de tidiga versionerna av Unix men utvecklades av Xerox på 1970-talet, fast den första kommersiella hårdvaran som kunde köra dessa system kostade 16 500 dollar 1981 (Wikipedia 2017), vilket kanske skulle motsvara ca 500 000 kronor idag. SQL från 1974 är fortfarande dominerande språk för att kommunicera med databaser.

Windows är sedan 1990-talet dominerande operativsystem på persondatorer. Det har också till stor del utvecklats i C. Dock är det inte ett Unixsystem i grunden. I början kördes det som ett program under MS-DOS, ett system anpassat för 1980-talets PC-hårdvara, utan funktioner som minnesskydd och säkerhet för flera användare, som system för större datorer haft sedan 1960-talet. Det var först 2001, med Windows XP, som dessa funktioner stöddes fullt ut av de Microsoftsystem som levererades förinstallerade på vanliga persondatorer. Windows NT hade haft sådan funktionalitet sedan 1993, men det var för tungt för en dåtida standard-PC. Det var också 2001 som Apple ersatte sitt klassiska Mac OS med OS X (som nu alltså, klargörande nog, heter macOS), på motsvarande sätt baserat på Steve Jobs tidigare NeXTSTEP-system, ett Unixsystem konstruerat för dyrare datorer i slutet av 1980-talet. Nu verkar trenden vara att Microsoft gör Windows mer Unixlikt, därför att de annars inte skulle klara konkurrensen från Linux och macOS: Windows 10 har subsystem för Linux (Microsoft 2016), till vilket kommer PowerShell med fri licens (PowerShell Team 2017a) och OpenSSH för Windows (PowerShell Team 2017b).

I går såg jag Ulf Malmros film Flykten till framtiden på TV. Svante, en svårt hjärtsjuk ung man som lever 1973 hittar ett t-banetåg, som tar honom till 2016, där han träffar en nutida ung kvinna, Elsa, varefter de åker fram och tillbaka mellan de båda årtalen för att manipulera historien så att hans situation kan lösas. Han blir förstås initialt förvirrad när han kommer till 2016 och stöter på folk med iPhone, men han lär sig ganska snabbt och uppfattar det inte som något trolleri: konceptet är inte svårt att förstå utifrån den teknologi som fanns allmänt tillgänglig 1973. När Elsa kommer tillbaka till 1973 ser hon å andra sidan en löpsedel med Jan Guillou och suckar har han alltid funnits. Det går också att tänka sig en film där hon arbetat som webbutvecklare mot LAMP-servrar 2016, åkt tillbaka till 1970-talet och stött ihop med någon som loggat in på ett Unixsystem med någon DEC VT-terminal. Har det alltid funnits?

Referenser

Lanier, Jaron. 2000. ”One half a manifesto”. https://www.edge.org/conversation/one-half-a-manifesto.
Microsoft. 2016. ”Windows Subsystem for Linux Documentation”. https://docs.microsoft.com/sv-se/windows/wsl/about.
PowerShell Team. 2017a. ”PowerShell”. https://github.com/PowerShell/PowerShell.
———. 2017b. ”Win32-OpenSSH”. https://github.com/PowerShell/Win32-OpenSSH.
Redox Team. 2017. ”Redox – Your Next(Gen) OS”. https://www.redox-os.org/.
Stephenson, Neal. 2004. ”Neal Stephenson responds with wit and humor”. https://slashdot.org/story/04/10/20/1518217/neal-stephenson-responds-with-wit-and-humor.
Wikipedia. 2017. ”Xerox Star – Wikipedia”. https://en.wikipedia.org/w/index.php?title=Xerox_Star&oldid=808604797.