Hopp til innhold

Dette er kjent stoff, sant?

Greit, la oss spole litt frem i tid. To bavian-bein har blitt funnet i Kongo, i Sentral-Afrika. Det ene er 20 000 år gammelt, det andre er 40 000 år gammelt. Begge har en rekke streker risset inn i dem, fra samme tidsalder som beinene selv er fra.

Strekene på disse beina, er laget av mennesker. Forskerne har lenge lurt på hva de står for. Enkelte har trodd at de representerte de første primtallene. Kanskje ikke den smarteste teorien da slikt forutsetter konseptet med å “dele” (divisjon). Men en form for telling var det. Nå har forskerne endelig blitt enige. Det de telte – det viktigste oldtidens mennesker trengte å holde rede på – var kvinners menstruasjonssyklus.

Vi kan forøvrig notere at utviklingen ikke gikk like fort den gang som nå. 20 000 år passerte, og like fullt talte de akkurat det samme. Vel, rett skal være rett. For enkelte kommer det fortsatt som julekvelden på kjerringa.

La oss spole litt til. Neste ut er Antikythera mekanismen. Funnet først i år 1900, men er et 2000 år gammel gresk vidunderverk. Bestående av et intrikat tannhjulsystem hvor man sveiver frem til en ønsket dato. Apparatet beregner således posisjonene til de 5 kjente planetene på den tiden. I tillegg til sola, månen, månefaser, sol og måne-formørkelser, forskjellige kalendersystemer, og selvfølgelig tidspunkt for de olympiske lekene.

Antikythera mekanismen er så unikt for tiden den ble laget. Det skulle ta godt over 1000 år før man så maken i presisjon og fingernemhet. Dagens forskere aner ikke hvordan det var mulig. Siste ekspedisjon ut var i 2015. Ukjent resultat.

Vi burde kanskje nå også sneipe innom kuleramma (abacus). Ekstrem effektiv kalkulator. Riktignok ikke en kinesisk oppfinnelse, men kinesiske versjoner kunne til gjengjeld lynkjapt gjøre operasjoner som gange, dele, plusse, trekke fra, kvadratrøtter og kuberøtter. Det er skoler i Kina som fortsatt trener studentene i denne ferdigheten. Og de knuser lett andre med en kalkulator i handa. På den annen side, kuleramma er et blindspor. Blås i den.

La oss i stedet presentere Joseph Marie Jacquard. Han var fransk. Og han lagde hva vi nå kaller “the Jacquard Loom”. En vevemaskin som automatisk produserte mønster basert på instruksjoner i form av hullkort. Hullkortene ble satt sammen i en lang rekke. Hvert enkelt hullkort representerte en rad eller rekke i det ferdige tøyet.

Kjempesuksess! Og som alltid når teknologien automatiserer arbeidet – arbeiderne fryktet for arbeidsplassene sine. Franskmenn, kjent for sitt lynne. De fattige arbeiderne kastet treskoene sine inn i maskineriet for å ødelegge dem. Fransk for tresko er sabots. Derav ordet sabotasje.

Dette er forøvrig et vevd bilde i silke, dvs det er et bilde av et vevd bilde, av Jacquard. 24.000 hullkort ble brukt for å lage det. Og et av akkurat disse portrettene var i eie av en engelskmann som het Charles Babbage.

Charles Babbage designet verdens første datamaskin. Babbage var en gretten, arrogant, eksentrisk nisse.

Han fant opp ku-fanger’n. Han effektiviserte postvesenet ved å gjøre beregninger som viste at det ville være billigere å ilegge flat porto, uavhengig av avstand. Han lagde det første “speedometeret”.

For mange av hans beregninger måtte han, som mange andre på den tiden, slå opp i feite tabulariske bøker. Hvilket han irriterte seg grønn over. Isærs når det forekom trykkfeil og andre feil i utregningene. Han så seg så lei på dette at han besluttet å lage en maskin som ville automatisere jobben i stedet: The Difference Engine.

The Difference Engine skulle beregne polynomiske funksjoner. F.eks.:

p(x) = 3×2 − 2x + 3

Via en bestemt matematisk teknikk er det mulig å beregne disse kun ved hjelp av addering for ulike verdier av x. Maskinen til Babbage hadde plass til å kalkulere opptil 31 siffer lange desimaltall (!)

Babbage lagde riktignok en demonstrerbar prototype på en liten del av løsningen, men noe mer enn det ble aldri realisert. I hans tid. Tankene hans sporet i stedet over på et nytt, og enda mer ambisiøst prosjekt: The Analytical Engine.

160 år senere, lenge etter at drømmen til Babbage var blitt til virkelighet, brukte jeg selv mye tid på å slå opp i digre bøker. Det var side opp og side ned med API-beskrivelser, som jeg måtte benytte til mitt arbeid. Likeså husker jeg godt hvor grønn jeg irriterte meg over trykkfeil i bøkene som gjorde at jeg kastet bort dager på uproduktivt arbeid. Ironien er bitende!

The Difference Engine var en enkel kalkulator. The Analytical Engine var derimot en datamaskin. Og med rette: det er fastslått i ettertid at denne maskinen er Turing complete. Hva det betyr, skal vi komme tilbake til.

Babbage designet en inn-del, en ut-del, en prosesseringsenhet (som han kalte mølle), og et minneområde. Den lignet bemerkelsesverdig på de første elektroniske datamaskinene som kom først 100 år senere. Inn-delen bestod av hullkort. Ut-delen var så mangt; printer, plotter (for graf-tegninger), og en bjelle som i utgangspunktet varslet om feil. Men et bestemt hull på hullkortet ville trigge bjella om ønskelig. Maskinen kunne alle primære operasjoner som pluss, minus, gange og dele, samt regne kvadratrøtter.

Babbage hadde etterhvert huset fullt av forkastede design-skisser for maskinene sine. Bokstavelig talt. Mannen led av en farlig sykdom, kalt scope creep. Samt at han konstant fant ørsmå forbedringer han bare måtte få redesignet.

Et menneske som forstod mulighetene for maskinen hans, faktisk bedre enn ham selv, var ei 17-årig jente med matematikk-bakgrunn. Augusta Ada King, Countess of Lovelace.

I ettertid bare kalt Ada Lovelace.

Må ikke forveksles med pornostjerna Linda Lovelace. Hun har absolutt ingenting med datamaskiner å gjøre. Vel, bortsett fra at noen valgte å kalle opp en programmerings-modell etter henne: Linda.

Ung jente med matematikk-kunnskaper var sjeldent. Svært sjeldent den gangen. Men moren hennes var desperat etter å få henne over i en annen, kjedeligere, bane, enn sin klin gærne pappa – den berømte dikteren Lord Byron.

Lord Byron var en tykk, kortvokst mann med klumpfot som mistet uskylden sin til sin barnepleierske når han var 9, fikk unge med sin søster i voksen alder, og kjøpte lommetørkler i pakker på 100 hvor verdien av en enkelt tilsvarte en månedsinntekt for en vanlig arbeider.

Ada og Charles inngikk raskt et «partnerskap», og hun fokuserte sin interesse spesielt i inn-delen av maskineriet. Hvordan utnytte hullkortene til fulle? Vel, hun fant opp programmeringskonseptene med løkker, sub-rutiner, og «jumps» (isærs conditionals jumps, if’s.)

Men det mest brilliante hun bidro med var nok kanskje det at hun her så et enda større potensialet. En slik maskin kunne ikke bare utføre matematikk. Tallene kunne også representere noe mer enn bare tall. Musikk, for eksempel.

Hva skulle de så med denne fantastiske maskinen? Skulle de erobre verden? Gjøre verden til et bedre sted? Slettes ikke. De skulle spille på hester. Vant de? Overhodet ikke. De tapte så det sang.

En annen interessant kar som levde samtidig som Babbage og Ada, var en fattig, selvlært matematikklærer ved navn George. Han klarte å forene, og dermed formalisere, logikken med matematikken. Logikk hadde egentlig ikke utviklet seg som fag nevneverdig siden Aristoteles:

“All men are mortal. Socrates is a man. Therefore, Socrates is mortal”

Tredje setning er her avledet av de to foregående. George fant opp noe programmerere daglig befatter seg med. I sitt univers definerte han at 1+1 ikke lengre blir 2 men 1. George Bool fant opp boolsk algebra. Her kan variabler kun ha to verdier:

Sant/usant, ja/nei, 1/0, strøm/ikke strøm, eller som Bool selv brukte: universet/ingenting. Kort oppsummert: Sant og sant = sant, Sant og usant = usant, Ikke sant = usant.

Først lenge etter hans død, ble dette dratt frem i lyset og benyttet i konstruksjonen av datamaskiner. George hadde ikke noen tanker om at dette var nyttig for den slags fremtidsvyer, men trodde at hans bidrag førte oss nærmere sannheten om hvordan hjernen vår fungerte. Noe han forøvrig delte med de fleste av it-historiens pionerer.

La oss nå ta turen over Atlanteren. Til det som var (og i og for seg fortsatt er) det Ville Vesten, USA. Her, på slutten av 1800-tallet, var togrøveri et vanlig fenomen. Ofte hadde røverne kjøpt billett og reist med toget som vanlige passasjerer, inntil de var kommet til et passende sted på ruta, utført ranet, og deretter stukket fra stedet.

Som et ledd i å fange disse forbryterne hadde jernbanen kommet opp med et utspekulert system for å identifisere hver enkel togpassasjer. Den delen av togbilletten som billettkontoret selv beholdt ble gjennomhullet på ulike steder etter hvordan billettkjøperen så ut. Ett sted for stor nese for eksempel. Ett annet for bart, skjegg, lyst hår, mørkt hår, osv.

En av togpassasjerene som selv så dette systemet i bruk var en såkalt ingeniør som hadde fått i oppgave å effektivisere folketellingen i USA. Hollerith hadde dog kjennskap til både hullkort-ideen fra Jacquard’s vevsmaskin og Babbage, men skjønte først nå hvordan han skulle utnytte dette for datainnsamlingsformål.

Hver innbygger ble representert med hvert sitt hullkort og matet inn i maskinen han bygde. Hvor bygde han den? I garasjen, selvfølgelig. Han får dermed også æren av å være den første i en rekke av garasje-startups. Hullkortene fungerte på den måten at hvert mulige hull var koblet til en teller, og der hvor det faktisk var hull ble det kontakt på en elektrisk krets som gjorde at den bestemte telleren økte med 1. Systemet ble brukt under folketellingen i USA (US Census) 1890. Året etter ble den brukt for samme formål i Norge.

Hollerith startet et selskap for produksjon og mulig bruk av slike hullkort. I dag er det dog et selskap kun spesielt interesserte har hørt om: International Business Machines – IBM.

Etterhvert som anvendelsen av matematikk for alle praktiske formål ble såpass utbredt, så man også nødvendigheten av å få ryddet opp i (og dermed formalisert) det mest elementære – selve grunnmuren i matematikken. Altså det som alt annet i matematikken er bygget på. David Hilbert, en tysker selvfølgelig, ledet dette arbeidet. Matematikken måtte være konsistent! Matematiske paradokser og lignende skulle ryddes av veien. Hilberts store forskningsprosjekt skulle således resultere i et endelig sett med konsistente aksiomer. AlaEuclids geometriske aksiomer. Arbeidet startet opp i 1920, og ungarske Neumann János Lajos var en av hans undersåtter som gjorde stor fremgang i dette arbeidet.

Det vil si, inntil Gödel kom på banen. Gödel beviste at Hilberts drøm var en umulighet (Gödel’s Incompleteness Theorems). Ironisk nok beviste han det matematisk. Slå den! Noen år etter bygger en ung matematiker ved navn Turing videre på ideene fra Gödel og publiserer følgende paper: “On Computable Numbers, with an Application to the Entscheidungsproblem”. Og vips, så var det formelle og teoretiske grunnlaget for datamaskiner i boks.

Det fascinerende her er at Turing beviste at alle løselige matematiske problemer kan løses ved hjelp av algoritmer som bygger på veldig enkle generelle regler. Først beskrev han en enkel hypotetisk maskin som ved hjelp av et instruksjonssett kunne gjøre en bestemt type oppgave (Turing machine). Slik som addering av to tall. Deretter vise han at man kunne hypotetisk se for seg en mer generell utgave av denne som igjen kunne imitere alle slags spesifikke Turing-maskiner (Universal Turing machine). Ved å mate maskinen med instruksjonssettet på samme måte som dataene en skal behandle, har man straks en programmerbar datamaskin. Å behandle kode som data er ett av de virkelig geniale påfunnene i it-historien.

En såkalt NAND (not-and) digital logisk gate er faktisk alt du behøver for å lage en datamaskin. Samt uendelig med minne. Likeså kan instruksjonssettet til en datamaskin i teorien bestå av en eneste operasjon.

Instruksjonssettet til en datamaskin er Turing complete. Babbage sin Analytical Engine var Turing complete (verdens første sådan). Lambda Calculus er Turing complete. De fleste programmeringsspråk er Turing complete. Allikevel, av alle Turing complete konstruksjoner er det selvfølgelig ingenting som slår Cellular automata (rule 110).

La oss hoppe over dammen igjen. Da Einstein jobbet på Princeton, Institute for Advanced Study (i årene 33-36), hendte det at han ikke klarte å konsentrere seg. Grunnen var tysk marsj-musikk som ble spilt på full styrke litt lenger ned i gangen for kontoret hans. Einstein måtte irritert spasere ned og banke på døra til en kollega og be ham dempe lydnivået. Mannen med grammofonplata, som klarte å tenke mens han spilte høyt, var John von Neumann (János Lajos).

John von Neumann var et geni. Faktisk større geni enn Einstein, ifølge de som kjente dem begge. På hans dødsleie hadde det ypperste av USA’s viktigste beslutningstakere samlet seg rundt senga hans, slik som generaler og regjeringsmedlemmer. De ønsket alle å melke ham for de siste råd før han gikk bort. Neumann var en superb matematiker og logiker.

Han fant opp spill-teori. Han konstruerte teoretiske selv-replikerende maskiner (tenk virus), hvordan ting kan selv leve og samtidig reprodusere seg selv. Og dette var før dna-strukturen ble oppdaget. Han var merkelig godt likt av alle. En av få geeks som hadde det sosiale genet i tillegg. Berømt for sine cocktail-parties. Kunne 5-6 språk flytende, og fortalte skitne limericks i dem alle. Og han var en elendig sjåfør – på tredve-tallet kræsjet han biler i ett sett.

Andre verdenskrig var en katalysator. Myndighetene hadde flust av penger på formålet, og samtidig satte de sammen de beste hjernene (på sin allierte side riktignok) for å få til noe konkret på rimelig kort tid. Det er klart det blir resultater av slikt!

Von Neumann var med på The Manhatten Project (dvs utviklingen av atombomben). En av hans primæroppgaver var å beregne hvor høyt over bakken selve bomben burde gå av, slik at den gjorde mest mulig skade. Han var også med å bestemme hvilke japanske byer som faktisk skulle ødelegges. Ikke fordi han egentlig hadde så mye med militær eller politisk strategi å gjøre, men mer fordi han var godt likt, og folk betraktet han som en å lytte til (!)

Når noen sa at man skulle (atom)bombe i morgen, så svarte Neumann – hvorfor ikke i dag? Når de sa at de skulle bombe kl 16, så så han – hvorfor ikke kl. 13?

Hvorfor er så Von Neumann interessant for datamaskinens historie? Jo, fordi han tilfeldigvis strøk hånda si borti et-par-tre tilfeller som fortsatt har satt sine spor.

Tilfeldighetene skal ha det til at von Neumann var på togstasjnen og ventet på toget. Toget var forsinket. Goldstine, som ledet prosjektet med å bygge verdens første elektroniske datamaskin, var på samme stasjon og ventet på sitt tog. Goldstine gjenkjente akademiker-kjendisen, mannet seg opp og begynte å småprate litt med Neumann. Og slik ble Neumann med på prosjektet som resulterte i ENIAC.

ENIAC var verdens første elektroniske datamaskin. Som jo sikkert mange kjenner til. Det vil si – det var den ikke.

Hold fast, for nå begynner kaoset: På 1970-tallet bestemte en amerikansk rettsinstans at ENIAC-opphavsmennene slettes ikke var først ute. Det var det derimot en ukjent kar i Illinois som var, med sin ABC. I tillegg hadde jo engelskmennene med blant andre Turing som inspirator laget Colossus. Og denne kom jo før det igjen. Dog, Colossus var jo ikke en multi-funksjonell maskin. Og faktisk var Babbage sin Analytical Machine mer fleksibel enn ENIAC, da den kunne reprogrammeres. På design-brettet, riktignok. Og ENIAC var ikke stored-program datamaskin som vi kjenner det i dag – Johnny var allerede på greia, men de rakk ikke å fullføre det på denne maskinen før de måtte ta den i bruk. Det ble de derimot på den neste utgaven: EDVIAC.

Og slik fortsatte utviklingen, men ikke nødvendigvis akronym-intelligensen: Illiac, Silliac, Maniac (de valgte navnet MANIAC i håp om at det stoppet tørsten etter idiotiske akronymer på datamaskin-navn), og Johnnyiac (etter von Neumann selvfølgelig).

Dette var en periode hvor teknologisk fremskritt gikk så raskt at standard formelle prosedyrer ble utelatt. De to desidert mest innflytelsesrike papers/dokumenter for ettertiden har bare blitt hetende “First draft…”, og “Preliminary report…”

Måten datamaskiner ble designet på har blitt kalt The Von Neumann Architecture. Og slik har man egentlig alltid laget dem. Selv om man i dag heller velger å kalle det The Von Neumann Bottleneck.

Slik endte man altså med en mester-oppskrift. Start med noen vakuumrør (for de avanserte, varier gjerne med transistorer, silikon-chip’er osv), bland i noe boolsk algebra (og dertil logiske porter), stapp deretter inn en dæsj minneområde, og så strø på med litt input-deler i form av hullkort og output-deler i form av utskrift. Sett på varmen, og vips så har du en datamaskin ferdig hevet. Riktignok var vesentlige oppgraderinger av både Input og Output-delen noe som kom til etterhvert, men den interessante utviklingen dreide seg nå vekk fra den fysiske maskinen og over på programvaren. Software.

Det er en annen historie.

Dette var historien om datamaskinen.

Om Artikkelforfatteren

Knut Mork
Løsningsarkitekt

Flere artikler