RC/NIB/kap05
Regnecentralen og Algol 60
Af Peter Naur
Den første gang jeg traf Niels Ivar Bech var ved et møde mellem en kreds af konsulenter ved udviklingen af Dask i efteråret 1955. Det der står mig klarest i erindringen fra den lejlighed er, at vi begge varmt gik ind for at Dask burde afvige fra forbilledet Besk ved at have indeksregistre.
Min adkomst til at bidrage til denne udvikling var de erfaringer jeg havde høstet i årene fortid, først ved at have arbejdet med maskinen Edsac i Cambridge, England, i 1951 og derefter ved studiebesøg ved en lang række laboratorier og virksomheder i USA i 1952-53. Disse studier blev gennemført i kontakt med professor Richard Petersen, og det var helt naturligt at jeg, da jeg vendte tilbage til Danmark, blev tilknyttet som konsulent ved den hjemlige, gryende aktivitet under Akademiet for de tekniske Videnskaber. I november 1953 fik jeg lejlighed til at besøge Matematikmaskinnämnden i Stockholm, hvor jeg første gang traf Bent Scharøe Petersen.
I årene 1955 til 1959 var min mulighed for kontakt med udviklingen af Dask begrænset af, at jeg som astronom var bosat ved observatoriet i Brorfelde. I efteråret 1956 lykkedes det mig dog at få afleveret en væsentlig del af, hvad jeg kunne give til det unge projekt. Bech og Scharøe kom til Brorfelde til et intensivt møde i november 1956, og kort efter fremsatte jeg en række forslag der dels kom til at præge udformningen af den ydre ordrekode til Dask (brug af decimale, i stedet for hexadecimale, adresser,- og af blokvis relativ adressering ud fra symbolske basisadresser), dels var kimen til Jørn Jensens system af kontrolprogrammer. Disse bidrag nedstammede direkte fra Edsacprojektet (Wilkes, Wheeler og Gill, 1951), passende modificeret til vor maskine.
Bech taler i sine breve til mig fra denne tid allerede med intens interesse om »autokodesystemer«, og der rundsendes friske rapporter om Brooker's Autocode og et IBM dokument om »The Fortran«.
Da jeg den 1. februar 1959 tiltrådte som fuldtidsmedarbejder ved Regnecentralen var arbejdet med Algol i fuld gang. Willy Heise havde i november 1958 besøgt Fritz Bauer og Klaus Samelson i Mainz og havde knyttet kontakten til den gruppe af centraleuropæiske regnecentre som senere deltog i det såkaldte Alcor-samarbejde.
I februar 1959 var rapporten om den foreløbige udgave af Algol-sproget netop udkommet (Perlis og Samelson, 1959), og Regnecentralen stod som vært for et møde om det nye sprog i månedens sidste dage, med deltagere fra hele Europa. Dette møde fandt sted på Hotel 3 Falke, med Bech som den strålende vært. Mødet fik stor betydning for os. Vi udvidede vore kontakter med Sverige (bl.a. Ingemar Dahlstrand) og Holland (Aad van Wijngaarden og Edsger Dijkstra). Under diskussionerne blev det klart at mødeformen var uhensigtsmæssig til formålet. Med Bechs varme tilslutning foreslog jeg derfor, at vi fra Regnecentralen skulle påtage os at formidle debatten om Algol gennem et debatblad, Algol Bulletin. Dette blev tiltrådt af medlemmerne af Alcorgruppen.
Den følgende tid stod i Algol Bulletinens tegn. Det første nummer, udsendt den 16. marts 1959, blev snart fulgt af flere. Ved Unesco's databehandlingskonference i Paris i juni 1959 blev Algol Bulletinen udpeget til officielt kontaktorgan for Europa. Debatten gik livligt i Bulletinen, med indlæg fra talrige sider. Ved udløbet af den officielle, åbne debatperiode, forud for Algols revision, i november 1959, var der udsendt 7 numre med ialt 59 sider.
Herefter var det igen møderne der talte. Først var der et åbent møde i Paris i november 1959, med deltagelse af 49 personer fra 9 forskellige lande. Foruden grundige drøftelser af Algol selv skete der her en udpegning af de europæiske deltagere i den endeligt beslutningsdygtige Algolkomite, hvorved jeg selv kom med. Denne del af komiteen mødtes igen i december i Mainz til indgående drøftelser som forberedelse til det endelige møde med amerikanerne i januar. Jeg fik her bekræftet at min indsats bedst kunne placeres på beskrivelsesområdet. Min jul gik derfor med at udarbejde en så vidt mulig færdig formulering af vore resultater. Ved det besluttende møde i den samlede Algol komite i Paris i januar 1960 blev denne formulering udslaggivende og blev begrundelsen for at jeg fik overdraget arbejdet med at udfærdige den endelige beskrivelse af det sprog vi kunne enes om. Det passede godt med de hjemlige planer: en uge efter min hjemkomst fra Paris startede Regnecentralens første kursus i det nye sprog. Dette kursus foregik hver dag i en uge, heldigvis om eftermiddagen; på den måde havde jeg mulighed for at gøre de nødvendige dele af Algol 60 rapporten (Backus, 1960) færdige samme formiddag, umiddelbart før undervisningen.
Den megen diskussion af sproget havde virket afdæmpende på Regnecentralens oversætterudvikling. Den nye formulering løste imidlertid ikke alle problemerne. Per Mondrup mente at revisionen af procedurebegrebet havde berøvet sproget væsentlige udtryksmidler. Jørn Jensen forsøgte at afparere denne kritik og ledtes derved til den behændige brug af procedureparametre »called by name«, der siden har været kendt som »Jensen's Device«.
Samtidig med overgangen til det nye sprog følte vi trang til at få nærmere kontakt med hollænderne, der havde bidraget så kraftigt til de nye blok og procedurebegreber. Vi inviterede derfor Aad van Wijngaarden og hans nærmeste medarbejdere på området, Edsger Dijkstra og J. A. Zonneveld, til tre dages drøftelser midt i marts 1960. Kontakten var meget stimulerende, om end vi på dette stadium veg tilbage fra at give os i kast med rekursive procedurer, selv med kendskab til Dijkstras løsning af adresseringsproblemet.
Til brug for Algoloversætteren gav Bech os fri rådighed over en egentlig udvidelse af Dask, i form af et fast, syet læselager. Det betød en reel fordobling af arbejdslagerets kapacitet, fra 1024 til 2048 40-bits ord. I læselageret anbragte vi de underprogrammer som skal bruges under udførelse af oversatte programmer, bl.a. til flydende regning, administration af procedurekald, og ind- og udlæsning. Denne del af Algolsystemet blev programmeret færdig og afprøvet i efteråret 1960 og kunne således overgives til sin materielle udformning, som trådning. Denne var klar i januar 1961.
I efteråret 1960 kom der godt gang i udviklingen af oversætteren, på grundlag af de metoder vi havde overtaget fra Mainz, indtil der indtrådte en katastrofe for projektet: der blev udskrevet folketingsvalg og Regnecentralen fik som opgave at dække stemmeoptællingen og prognoser for åbent tæppe i radio og TV. Der var kun få uger til at stille en løsning på benene. Bech måtte se sig om efter dygtige folk og Jørn Jensen kunne ikke undværes. Valgudsendelsen blev en succes, men for Dask-Algol oversætteren blev det et tilbageslag på antagelig et halvt års tid. Sagen forværredes af at Jørn skulle til USA i seks måneder fra nytår 1961. Per Mondrup arbejdede dog stædigt videre, og da Jørn var tilbage i sommeren 1961 Iykkedes det de to at få systemet til at køre omkring september.
Allerede længe inden Dask-Algol kørte var vi klar over at den i sit grundlæggende oplæg var en dårlig løsning. Oversættelsen fandt sted i tre passager, med brug af magnetbånd til lagring af programmets mellemversioner. Alt for meget var imidlertid samlet i passage 2, der under et foretog analyse af programstrukturer, opbygning af operandbeskrivelser, og generering af maskinordrer. Denne passage var urimeligt langsom, idet såvel en væsentlig del af den styrende logik som tabeller med operandbeskrivelser stadig måtte hentes ind til arbejdslageret fra tromle. I vore overvejelser over bedre løsninger var der imidlertid også andre problemer. Disse overvejelser måtte nemlig naturligt koncentreres om Gier, der var ved at være klar. Her stilledes vi overfor to nye forhold. For det første kunne vi ikke vente at få mulighed for at bygge et fast læselager til denne maskine. Det betød at arbejdslageret var mindre end det vi kunne råde over i Dask. For det andet havde Gier indbygget flydende regning. Det betød at vi ikke med rimelighed kunne lade udtryk blive udregnet direkte udfra deres omvendt polske form, som vi havde gjort i Dask-systemet, men måtte foretage en yderligere omdannelse af dem, med henblik på at udnytte maskinens registerstruktur rimelig godt.
Løsningen af disse problemer blev forberedt i løbet af 1961. Jørn fik en afgørende impuls fra et symposium i Princeton i juni 1961, hvor der blev fremlagt rapporter om et system til automatisk lagertildeling udviklet til Ferrantis Atlas-system - et system baseres på den tankegang der en halv snes år senere blev lanceret af et stort amerikansk firma som en nyhed under betegnelsen virtuel lagring. Jeg selv tilbragte anden halvdel af 1961 i Chapel Hill, North Carolina, hvor jeg fik lejlighed til at gennemtænke hvordan en Algoloversætter til Univac 1105 kunne udformes.
Gier-Algol-projektet fik sit startskud den dag jeg var kommet tilbage til København, den 5. januar 1962. Bech samlede os til et møde hvor han bad os om (jeg ved ikke om han troede vi ville afslå) at udvikle en Algoloversætter til Gier. Den skulle være færdig inden den 1. september samme år, idet den skulle være til rådighed ved universitetssemesterets begyndelse. Det var ligegyldigt om den var dårlig og langsom, eller om den ikke medtog hele sproget, blot den kunne kaldes ved navnet Algol. Ved denne sidste besked vekslede Jørn og jeg et blik: Bech skulle nok få noget andet at se. Vi påtog os opgaven, på en betingelse: at vi ville blive sikret rigelig maskintilgang under afprøvningen.
Gier-Algol oversætteren er beskrevet udførligt andetsteds (Naur, 1963), og her skal blot kort resumeres at den under programudførelsen benytter en automatisk administration af programlagringen, baseres på hvad vi nutildags kalder sideinddeling (paging). Oversætteren har 9 passager, som er tilrettelagt således at tilfældig tilgang til tromlen helt undgås. Den medtager næsten hele sproget.
I de første måneder af 1962 var der en del uro i den internationale diskussion af Algol. Det nydannede IFIP lagde op til at overtage ansvaret for det videre arbejde med sproget. Denne tanke vandt ikke megen tilslutning hos dem der arbejdede aktivt med sproget og som stod i kontakt gennem Algol Bulletinen. Interesseforskellen afspejledes direkte inden for Regnecentralen, idet Bech ønskede Algol lagt ind under organisationen, medens jeg selv ønskede at de der havde arbejdet mest aktivt på Algols udvikling selv måtte afgøre organisationsformen. Som bekendt blev Algol lagt ind under IFIP. Det skete ved et møde i München i marts 1962. Da det kort efter blev klart at Algol Bulletinen ikke kunne opnå nogen klar status i relation til IFIPs Working Group 2.1, Algol, besluttede jeg at afbryde udgivelsen.
Det kan lyde mærkeligt, men disse interessekonflikter førte aldrig til nogen form for personlig spænding i forholdet mellem Bech og mig selv. Vi anerkendte indbyrdes at vi havde forskellige interesser i sagen, men det var ikke nødvendigt at udveksle ukvemsord af den grund. Udviklingen kunne naturligvis ikke undgå at berøre mig ubehageligt. Men jeg gjorde klart op for mig selv at det der var brug for på dette stadium af udviklingen ikke var skænderier i internationale kommiteer, men derimod en oversætter der duede til noget. Altså, hurtigt tilbage til Jørn og den gruppe af yngre folk der var ved at opbygges omkring os.
Udviklingen af Gier-Algol oversætteren gik rask fremad i løbet af foråret. Jeg selv tog til USA den 21. juni 1962 for at fortælle om arbejdet ved et sommerkursus i North Carolina. På det tidspunkt kørte oversætterens første fem passager og køretidsunderprogrammerne var færdige. Jeg medtog ind- og ud-specifikationerne for passage 6 på rejsen, Jørn påtog sig passage 7, medene passage 8 og 9 med samt standardprocedurer var i hænderne på andre i gruppen. Da jeg kom tilbage fra USA den 26. juli var alting klar til indkøring, bortset fra maskinsprogsformuleringen af passage 6. Da vi nu sigtede mod at kunne demonstrere oversætteren ved IFIPs kongres i München fra den 27. august blev det en travl måned. Vi var faktisk i gang fra ca. 6 morgen til midnat de fleste dage.
Bech tog levende del i foretagendet, ikke mindst ved aftensmåltider, som vi indtog i en fortovsrestaurant overfor Regnecentralens lokaler på Frederiksberg Rådhusplads. Ved disse lejligheder var hans glæde over vore fremskridt blandet med hans utilslørede sørgmodighed over at han på den post han nu bestred var afskåret fra at være med i drøftelsen af detaillerne. Foruden Regnecentralens daglige ledelse havde han i denne tid adskilligt at ordne som formand for IFIP kongressens programkomite. Dertil kom det særlige problem der opstod da det viste sig at det Gieranlæg der var blevet bragt til München var blevet rystet itu til ubrugelighed under transporten. Uden overhovedet at gøre os bevidste om denne trussel mod vort projekt sørgede han resolut for at låne et allerede leveret anlæg, til erstatning under kongressen.
Heldet stod os bi, og den 25. august kunne vi tage af sted til München med et sæt kopier af oversætteren i form af 8-huls papirstrimler, efter at have fejret projektets gennemførelse med en middag i Tivoli.
Præsentationen af Gier-Algol ved udstillingen i München blev en succes. Systemet kunne demonstreres og stilles til gæsternes disposition, og det fungerede med kun enkelte svigt, som det lykkedes os at rette på stedet. Bech var glad og lettet. Han betroede os senere at hans største bekymring over risikoen for en eventuel fiasko ikke havde været virkningerne udadtil, men den skuffelse det ville have været for os der havde sat liv og sjæl ind på foretagendet. Hans omsorg for sine medarbejdere kom frem for alt andet.
Gier-Algol systemet var baseres på bærekraftige ideer, som i de følgende år fandt anvendelse på en række beslægtede opgaver. De første udsprang direkte af demonstrationen i München. Regnecentralen fik en kontrakt med Control Data Corporation (CDC) om at være konsulent ved dette firmas udvikling af en Algoloversætter til deres 3000-serie maskiner, på grundlag af Gieroversætterens principper. Den oversætter der blev resultatet af denne udvikling udgør den centrale del af oversætteren for CDC's senere 6000serie maskiner. Omtrent samtidig fik Regnecentralen kontrakt med Siemens i München om at udvikle en Coboloversætter til Siemens 3003. Denne oversætter var igen opbygget på Gier-Algols principper, og blev leveres i 1965 (P. Brinch Hansen og R. House, 1966).
Gier-Algol selv kom i nye, kraftigt forbedrede udgaver i 1964 og 1967, og herefter omskrevet til RC4000 fra 1969. De ændringer der herigennem er sket har berørt det sprog der behandles, idet der er tilføjet en række nye mekanismer, bl.a. den såkaldte case-konstruktion; desuden er kontrollen for programfejl blevet mere fuldstændig, og endelig er enkelte oversætterpassager blevet omskrevet med brug af bedre metoder. Oversætterens hovedplan, disponeringen af opgaverne for de enkelte passager, har derimod vist sig levedygtig gennem de mange omskiftelser.
Som en naturlig videreførelse af disse erfaringer begyndte jeg fra omkring 1965 at opfatte de løsninger vi havde brugt som eksempler på metoder af mere almindelig anvendelighed. Heraf udsprang i 1966 teksten til »Plan for et kursus i datalogi og datamatik«, som igen var et skridt mod serien »Datamatik«, udgivet af Studentlitteratur med 11 hæfter fra 1968 til 1970, og bogen »Concise Survey of Computer Methods« udgivet af samme forlag i 1974.
Fra disse bestræbelser kan der trækkes en linie videre til opbygningen af selvstændige uddannelser i datalogi ved universiteterne i København og Århus fra omkring 1969. Men det er en anden historie.