utvikling
Comal: Det danske programmeringsspråket som utfordret Basic
En gutts tidlige fascinasjon for datamaskiner, en lærer i Tønder, selvlærte kodeinteresserte elever, samt litt øl er ingrediensene til et dansk programmeringsspråk som var populært på 70- og 80-tallet.
I februar 2020 er det 45 år siden det danskutviklede programmeringsspråket Comal ble frigitt på hullbånd og la grunnlaget for et programmeringsspråk som gjennom 70- og 80-tallet var utrolig populært, ikke bare i Danmark, men også i mange europeiske land og i USA.
En del av nøkkelpersonene bak språket har gått bort, men en av de sentrale personene lever i beste velgående.
Mogens Kjær sto bak Comal-tolker (interpretere) til Commodore, DOS, OS/2 og Unix. Version2.dk har snakket med den nå 59 år gamle programmereren som ikke har noen formell IT-utdanning, men som selvlært utvikler fikk avgjørende innflytelse på Comal-språkets utbredelse.
Interessen for EDB, som det het på 70-tallet, startet tidlig for Mogens Kjær.
– Jeg interesserte meg mye for datamaskiner, da min far var IT-sjef hos Haldor Topsøe, hvor de hadde en Gier-datamaskin fra Regnecentralen, sier Kjær, som i dag er pensjonert – men stadig aktiv i Dansk Datahistorisk Forening.
Foreningen huser blant annet en Gier-maskin, som Mogens stiftet bekjentskap med via sin fars arbeid.
Det var allerede som niåring at Kjær ble fanget av datamaskinenes verden. Som han selv beskriver på sitt nettsted:
– Den 14. juni 1969, da jeg var 9 år gammel, inviterte min far hele familien til Københavns Forum. Der hadde Haldor Topsøe en utstilling. Min far var IT-sjef hos Topsøe og virksomheten hadde begynt å bruke datamaskiner allerede i 1958.
– Jeg kan ikke huske hva temaet for utstillingen var, men på standen deres hadde de en terminal som var forbundet med en mainframe (stordatamaskin) via en telefonlinje. Terminalen kjørte APL/360. Jeg var bare 9 år gammel, men jeg ble øyeblikkelig oppslukt av datamaskinen. Jeg kan huske at foreldrene mine hadde problemer med å få meg hjem igjen.
Den lille gutten begynte å lese APL-manualene APL\360 User's Manual og APL\360 Primer, og begynte senere å bruke Haldor Topsøes Gier-maskiner.
Sov på ungdomsskolen
– Det var min første introduksjon til datamaskiner, og jeg har vært interessert i dem siden.
Interessen økte, og i tiden omkring 7. – 8.-klasse begynte Kjær på ungdomsskolen i Lyngby-Taarbæk kommune. Der hadde de en RC7000-datamaskin fra Regnecentralen som han begynte å programmere i Basic på.
– Jeg tilbrakte mye tid på ungdomsskolen. Jeg var stadig vekk der ute om natten og i helgene.
Omtrent på samme tid som Kjær begynte å tilbringe mange av døgnets timer på ungdomsskolen i Lyngby-Taarbæk, skjedde det noe langt fra Nordsjælland, nærmere bestemt på Tønder Seminarium, som ville få avgjørende betydning for Mogens Kjærs liv.
Lærerhøyskolen i Tønder fikk en Data General Nova 1200, som åpnet for at de kommende lærerne kunne undervises i informatikk. En av høyskolelærerne var den ene av Comals opphavsmenn, Børge Christensen. Hans fag var matematikk, men han ville gjerne undervise i det nye – informatikk.
Den nå avdøde Børge Christensen fortalte følgende i et foredrag om Comals bakgrunn:
– Jeg hadde for lenge siden tatt et informatikk-kurs på universitetet, det var kun et tredagerskurs, men det visste de ikke.
– Selv rengjøringspersonalet klagde over bugs
Børge Christensen la aldri skjul på at han ikke kunne fordra Basic, en forakt som kanskje ble grunnlagt med hans første møte med den Extended Basic som fulgte med Nova 1200-datamaskinen.
– En av de første tingene vi bemerket var, at den var så fylt med bugs, at selv rengjøringspersonalet klagde over det – spøkte Børge Christensen i sitt foredrag.
Men Børge likte virkelig ikke Basic, og syntes det var vanskelig å rette lærerstudentenes oppgaver, da han ofte ikke kunne forstå studentenes Basic-programmer.
– Det var vanskelig å se hva som foregikk i 20- eller 30-linjers programmer. Jeg ble nødt til å tegne diagrammer for å forstå hva de hadde gjort, fortalte Christensen.
Hans instinktive motvilje mot Basic ble styrket da han møtte informatikeren Benedict Løfstedt.
– Det er ikke din feil, det er ikke elevenes feil, det er språket dere bruker. Det er ikke et datamaskinspråk. Det er en fornærmelse av den menneskelige intelligens, sa Løfstedt, og anbefalte Christensen å lese Niklas Wirths Systematic Programming om programmeringsspråket Pascal.
Børge Christensen elsket Pascal, men mente at det var for avansert for studentene hans. Det var én bra ting med Pascal, etter hans mening, og det var den interaktive muligheten for å raskt skrive et program uten å måtte starte en editor.
Han begynte å korrespondere med Løfstedt om hvordan de kunne forene det beste fra Pascal og Basic.
I begynnelsen av 1974 hadde Børge og Benedict den første definisjonen av det som senere skulle bli kjent som Comal75, men Børge visste at det var en lang vei til et velfungerende programmeringsspråk.
– Det er én ting å definere et programmeringsspråk, men noe helt annet å implementere det, erkjente Børge, som selv programmerte i maskinkode på Nova 1200-maskinen, i likhet med noen av hans beste elever som også hadde begynt å dykke ned i maskinarkitekturen.
BDD – Beer Driven Development
To av dem ble veldig gode, dyktigere enn Børge.
– I løpet av et par uker ble de langt bedre til det, enn det jeg noensinne var.
De to studentene begynte å implementere det nye språket som Børge Christensen og Benedict Løfstedt hadde definert. I løpet av et halvt år lyktes det å få implementert en første versjon av språket i et tett samarbeid med Børge Christensen, men det var ikke uten problemer.
– Jeg hadde et problem med den ene av dem. Han drakk mye. Han forsvant noen ganger, og selv om vi visste hvor han var, så var det kun når han hadde fått nok å drikke at vi kunne hente ham. Han ville ikke komme tilbake til arbeidet før han hadde fått nok. På det tidspunktet villa han være veldig full – dansk øl kan være veldig sterk, men vi hadde bruk for ham – da han var vår ekspert på debugging. Vi helte kaffe i ham og ga ham en kald dusj. Så kunne han jobbe i 24 timer. Det var fantastisk, har Børge Christensen fortalt om den utradisjonelle utviklingsmetoden Beer Driven Development (BDD), som studenten praktiserte.
Til tross for BDD kjørte den første versjonen av Comal den 5. august 1974, og i februar 1975 var den klar til utsending på hullbånd.
Nova-datamaskinene var utbredt på de danske utdanningsinstitusjonene, så versjonen ble raskt spredt ut til hele Danmark. Med lange variabelnavn, IF...THEN...ELSE-strukturen, samt navngitte subrutiner, begynte Comal å erstatte Basic – som ikke hadde denne typen avanserte språkkonstruksjoner.
Inkonsistent Comal80
Comal dukket også opp på Lyngby-Taarbæk ungdomsskole, husker Mogens Kjær.
– Etter noen år begynte det å dukke opp hullstrimler med Comal på, sier Mogens Kjær, som i motsetning til Børge Christensen ikke hadde noe imot Basic.
– Jeg er ikke så religiøs når det gjelder programmeringsspråk, sier han. Men han kastet seg over det nye språket:
– På ett eller annet tidspunkt kom læreren min med et utkast til en ny versjon av Comal, Comal80. Det kikket jeg på, og jeg syntes det var en hel masse ting som var inkonsistente og ikke passet sammen, sier Kjær.
Derfor skrev han et brev til Børge Christensen i Tønder og gjorde ham oppmerksom på det inkonsistente i spesifikasjonen.
På det tidspunktet gikk Mogens Kjær på gymnaset, og kanskje ville en annen språkdesigner følt seg tråkket på tærne av å få kritikk av en ung gymnaselev, men ikke Børge Christensen.
– Da jeg så brevet, visste jeg at han kunne gjøre noe med det. Det var den mest kvalifiserte kritikken jeg noensinne hadde fått. Jeg fulgte hans anbefalinger, har Børge Christensen sagt om brevet fra Mogens Kjær.
Det første til mange og lange telefonsamtaler mellom Tønder og Lyngby.
– Børge er nok det menneske jeg har ringt til oftest, sier Mogens Kjær i dag.
Comal til Commodore
Børge Christensen var meget interessert i å få Mogens Kjær over på Comal-laget. Selve implementeringen av Comal80 var allerede i gang, men via Børge Christensen kom Morgens Kjær i kontakt med importøren av Commodore-maskiner i Danmark.
Det var firmaet Instrutek i Horsens, med direktøren Erling Nielsen.
– Det var ikke noe som het Commodore Danmark den gangen. Instrutek importerte 8032- og 6502-baserte Basic-maskiner. De var interesserte i å komme inn på skolemarkedet, og hvis man skulle det krevde det at maskinene kunne kjøre Comal, sier Mogens Kjær.
Det var omkring 1980, og på det tidspunktet hadde Mogens Kjær begynte å universitetet. Ikke for å studere informatikk, men biokjemi.
Børge Christensen var veldig interessert i å få Comal i en Commodore-versjon, da han kunne se at mikrodatamaskiner hadde begynt å vinne frem – noe som truet med å bringe Basic tilbake til utdanningsinstitusjonene.
– Det skremte meg så mye, at hvis jeg skulle undervise i Basic igjen – så ville jeg ikke lenger undervise i informatikk, har Børge Christensen sagt.
Den første Comal80 ble implementert på en Z80-basert datamaskin, Zilog 80 i 1980, og nå hadde Børge Christensen øynene på Commodore.
Børge foreslo derfor at Mogens Kjær skulle implementere Comal80 til Commodore.
Det ble arrangert et møte med Commodores utviklingsavdeling i Sveits, og Børge Christensen sørget for at Erling Nielsen fra Instrutek før møtet hadde understreket behovet for Comal for å trenge inn på utdanningsområdet.
– Bjørge var god til denslags. Han sa til firma A at firma B allerede var i gang med Comal, og det samme til firma B, sier Mogens Kjær, som reiste til Commodores utviklingsavdeling i Brussel sammen med Børge Christensen.
– Det var første gang jeg møtte Børge, sier Mogens Kjær.
Det endte med at Mogens Kjær fikk en kontrakt på å utvikle Comal til Commodore PET 8032.
– Jeg husker ikke beløpet, og om kontrakten var med Commodore i Sveits eller London, men jeg mener at beløpet tilsvarte rundt 70.000 kroner. De kikket litt i banken da det kom en ung gutt med en sjekk på et så stort beløp i sveitsiske franc eller pund. Det var mye penger den gangen, sier Kjær.
– Jeg flikket sammen noe
Mogens bodde i Lyngby nord for København, og Instrutek var basert i Horsens, så avstandene gjorde det litt kronglete – i en tid da internettoppkoblinger var sjeldne.
– Det var en gutt fra Instrutek som hadde begynt å lese på DTU, og han bodde på en høyskole i nærheten av meg. Det var Jens Erik Jensen, og han kjente til Commodore, så jeg fikk en maskin å jobbe på slik at jeg kunne lage en Comal til den, sier Mogens Kjær.
Han hadde programmeringserfaring med språk som Basic, Comal, Fortran og Algol, men nå fikk han ansvaret for å lage en Comal80-fortolker til en populær mikrodatamaskin.
– Du hadde kodet i Basic og Comal, hvordan gikk du igang med å skrive en fortolker i maskinkode?
– Det vet jeg faktisk ikke. Jeg må ha tenkt at det må virke på den og den måten, og så flikket jeg sammen noe. Det kom så flere folk inn, og de kom med innspill: Det der kan kanskje gjøres på en annen måte, sier Mogens Kjær.
– Du hadde ikke noen teoretisk bakgrunn innenfor fortolker-teknologi?
– Nei, slett ikke. Jeg tror Jens Erik fant en bok som inneholdt noen triks, men det var ikke en detaljert beskrivelse av hvordan man gjør det. Den gang var tingene kanskje ikke så avanserte, så det har kanskje ikke vært så mange forskjellige måter å gjøre tingene på annet enn den riktige, når man fikk kikket litt på det. Det er begrenset hva man kan lage med tabelloppslag, stacker og den slags, sier Mogens Kjær.
Han fikk skrevet en Comal-versjon som kunne leses inn fra diskett.
– Jeg begynte med å lage en "softloaded" Comal som kunne leses inn fra diskett, men det betød selvfølgelig at man brukte en masse av de 32 kB som var i maskinen til fortolkeren, så det var ikke mye igjen til et program, sier Mogens Kjær.
For å få mer plass til Comal-programmene begynte Mogens Kjær og Jens Erik Jensen å se på hvordan fortolkeren kunne legges inn i ROM.
Commodore 64 med Comal-cartridge
– Det var et ekstra kort som man satte inn i Commodoren. Jens Erik hadde kontakt med en gutt, Helge Lassen, som bodde på Sønderjylland. Han kunne designe slike kort og de trykte kretsene som skulle brukes til å sette komponenter på, sier Kjær.
– Helge hadde nattevakter i Forsvaret, hvor han hadde god tid til å lage de tingene.
Selve fremstillingen av kretskortene ble foretatt av noen firmaer i Horsens.
– Det var sentrert omkring Horsens, da Jens Erik kjente en del der, sier Mogens Kjær.
Deretter begynte Commodore 64 å komme til Danmark.
– Vi fikk en av de aller første modellene og skulle igang med å utvikle en Comal-cartridge som kunne settes i maskinen på samme måte som en spill-cartridge. Så kjørte Commodoren Comal, og det var også en veldig suksess.
IBM vil ha Comal
I mellomtiden var IBM også blitt interessert i Comal-språket.
– IBM ville gjerne inn på skolemarkedet med deres nye PC, så der fikk vi en jobb der vi skulle lage Comal til den. Den het IBM Comal, men vi beholdt rettighetene til å bruke versjonen til andre formål. Vi besluttet på det tidspunktet å starte et dedikert firma, UniComal.
Sammen med Jens Erik Jensen, Lars Laursen og Palle Pedersen etablerte Mogens Kjær firmaet Unicomal omkring 1982.
Da IBM lanserer PS/2 i 1987 får Unicomal også oppgaven med å utvikle en Comal-versjon som kan kjøre under OS/2.
– Jeg var i Montreux med Jens Erik Jensen på kurs om hvordan basale IBM OS/2-ting fungerte, og så fikk vi en utviklingsbetaversjon av assembler og utviklingsverktøy. Så kunne man lese gjennom manualen senere, og se hvordan man kunne gjøre noen ting smartere, sier Mogens Kjær, som særlig gledet seg over at i forhold til DOS-versjonen var OS/2 ikke begrenset til 640 kB.
Unix-versjon i C
Unicomal fikk også i oppgave fra Brüel & Kjær å utvikle en Comal til Unix.
– De hadde bruk for det i forbindelse med datainnsamling fra måleinstrumentene sine. Der hadde de bruk for et generelt verktøy, så de kunne skrive programvaren som skulle brukes til datainnsamling, sier Mogens Kjær, som på det tidspunktet delte tiden sin mellom Unicomal og biokjemi-studiene.
– Jeg var igang med min biokjemi-utdanning og jobbet en del år deltid hos Carlsberg. To dager med Unicomal og tre dager på Carlsbergs forskningssenter, hvor jeg gjorde min avhandling i biokjemi.
– Vi brukte Unix-maskiner til den jobben, så det var ikke fremmed for meg å arbeide med Unix på det tidspunktet.
Mens de tidligere Comal-fortolkerne var skrevet i maskinkode, ble Unix-versjonen utviklet i C.
Unicomal legges ned
Til tross for oppgavene for Commodore, IBM og Brüel & Kjær, ble Unicomal nødt til å legge ned i 1993.
– Vi fant ut at vi ikke kunne tjene penger på å lage utviklingsverktøy. Når markedet var mettet, så kunne vi ikke selge flere utviklingsverkøty. Samtidig fikk vi ikke tak i så mange applikasjonsoppgaver, sier Kjær, som etter dette begynte å jobbe fulltid ved Carlsbergs forskningssenter.
– I starten var det som biokjemiker, og så ble det mer og mer IT. De siste 20 årene har det vært IT, men det har alltid vært en fordel for meg å kunne snakke med forskerne i forskningssenteret med min biokjemiske bakgrunn. Det gjorde det enklere å forstå hva det handlet om, sier Mogens Kjær, som pensjonerte seg tidlig i fjor.
Han er i dag aktiv i Dansk Datahistorisk Forening, hvor han blant annet har skrevet en Gier-simulator, datamaskinen som startet Mogens Kjærs livslange interesse for IT.
En interesse som førte ham sammen med IT-beslektede folk som Børge Christensen, Jens Erik Jensen, Palle Pedersen, Lars Laursen, samt andre som ga oss Comal.
Saken ble først publisert på danske Version2/Ingeniøren, og gjøres tilgjengelig på norsk for abonnenter av Digi Ekstra gjennom vår samarbeidsavtale med Teknologiens mediehus/Ingeniøren.