Informatisk julekalender: Luke 6


mandag 6. desember 2010 Julekalender

zuse

I Tyskland fantes det en bygningsingeniør som fikk til de utroligste ting. På grunn av den politiske situasjonen og ikke minst Andre Verdenskrig var det ingen i Storbritania eller USA som visste om han, og Konrad Zuse jobbet med sine maskiner i en nesten total, intellektuell isolasjon fra 1935 til 1945.

Ført bygde Zuse en mekanisk kalkulator for å forenkle sitt eget arbeide. Dette var i 1935. Deretter gikk han i gang med å bygge sin første programmerbare maskin. Den ble drevet med håndsveiv,  bestod av rundt 30 tusen metalldeler, og kunne lese programmer fra et hullbånd (perforert 35mm film). Z1 som den het var ferdig i 1938, men fungerte ikke så bra på grunn av for lav presisjon i konstruksjonen.

Øvelse gjør derimot mester; Konrads største bragd kom nemlig et par år senere. Z3 ble fullført i 1941, og var verdens første fungerende, programmerbare, Turingkomplette datamaskin. Ja, du leste riktig, den første virkelige datamaskinen ble skapt i Nazi-tyskland under ander verdenskrig!

I løpet av 40-tallet designet Zuse også det vi må få kalle det aller første, høynivå programmeringsspråket. Plankalkül var forut for sin tid, og ble ikke implementert før etter Konrads død. Det influerte heller ikke de første programmeringsspråkene som ble implementert (såvidt vi vet), men det har en del likheter med dem likevel. Plankalkül har tilordning og variabler, subrutiner, betingelsesuttrykk, iterering (while), flyttallsaritmetikk, arrays, hierarkiske records, bolske tester, unntakshåndtering, og flere andre elementer som man forventer å finne i et fullverdig språk. Det var imperativt, typet, og inneholdt bl.a. også en GOTO kommando.

Her er et lite program som finner den største av tre verdier ved å kalle rutinen max:

P1 max3 (V0[:8.0],V1[:8.0],V2[:8.0]) => R0[:8.0]
max(V0[:8.0],V1[:8.0]) => Z1[:8.0]
max(Z1[:8.0],V2[:8.0]) => R0[:8.0]
END
P2 max (V0[:8.0],V1[:8.0]) => R0[:8.0]
V0[:8.0] => Z1[:8.0]
(Z1[:8.0] < V1[:8.0]) -> V1[:8.0] => Z1[:8.0]
Z1[:8.0] => R0[:8.0]
END

Plankalkül blir noe sånt som "formelt system for planlegging" på norsk. Se her for en presentasjon av den første implementasjonen av språket.


comments powered by Disqus