COMAL

Uit Wikipedia, de vrije encyclopedie
Naar navigatie springen Naar zoeken springen
COMAL-80
Paradigma imperatief, gestructureerd
Verschenen 1973
Ontworpen door Børge Christensen, Benedict Løfstedt
Typesysteem sterk
Implementaties CP/M, MS-DOS, Unix
Dialecten RC Comal, Metanic, UniComal, OpenComal
Beïnvloed door BASIC, Pascal
Besturingssysteem Multiplatform
Portaal  Portaalicoon   Informatica

COMAL, COMmon Algorithmic Language, is een derdegeneratie programmeertaal die in 1973 is ontwikkeld op basis van BASIC en Pascal door de Denen Børge Christensen, leraar aan het Statsseminarium (lerarenopleiding) in Tønder, en Benedict Løfstedt, computerwetenschapper aan de universiteit van Aarhus.

Geschiedenis[bewerken]

Begin 1972 kreeg het instituut waaraan Christensen als wiskundeleraar verbonden was, de beschikking over een minicomputer ten behoeve van de nieuw op te zetten opleiding computerwetenschappen. Op die computer was als programmeertaal Extended BASIC beschikbaar. Al snel bleek Christensen dat die taal ongeschikt was voor onderwijsdoeleinden.[1]

Samen met Løfstedt schreef hij de standaard waaraan de nieuwe taal moest voldoen: de eenvoud van BASIC met de structuren van Pascal, zoals procedures en functies en bovenal uitgebreide controlestructuren zoals REPEAT…UNTIL en IF…THEN…ELSE…ENDIF. De beschrijving was begin 1974 rond en toen kon worden begonnen met de implementatie van de taal. Een van de uitdagingen daarbij was het mogelijk maken van betekenisvolle (en daardoor dus lange) namen van variabelen. Ook dat lukte via zogenoemde tokens waarmee de in een array opgeslagen namen werden geadresseerd.

Op 5 augustus 1974 draaide het eerste programma in wat later COMAL 75 zou heten op een computer. Het was een vijfregelig programma binnen een REPEAT…UNTIL structuur. Maar het bevatte toen al, als didactisch hulpmiddel, automatisch inspringende regels binnen die structuur. In februari 1975 werd de eerste versie gelanceerd op tape, want diskettes bestonden toen nog niet. En het werd een succes, omdat men op alle onderwijsinstituten in Denemarken over dezelfde computer beschikte. De onderwijsgevenden waren wat aarzelend, maar de studenten namen een en ander snel op. Ze konden NUMBER=5 schrijven en NAME$="Peter Sørensen"; én de syntax werd per regel gecontroleerd tijdens het intypen. Maar het was vooral de vier maal te nesten IF…THEN…ELSE…ENDIF constructie die gestructureerd programmeren goed mogelijk maakte (het statement GOTO was niet meer nodig; in COMAL zelfs onmogelijk).[2]

Standaardisatie[bewerken]

Door de populariteit van COMAL in Denemarken nam het aantal computermerken waarop COMAL geïmplementeerd was snel toe. Omdat de onderwijskundige facetten van de taal een belangrijke rol speelden, werd besloten tot de oprichting van een internationale standaardiserings- en ontwikkelingsgroep, waarin naast hard- en softwareleveranciers en computerwetenschappers ook gebruikers vertegenwoordigd waren: COMAL’s Standardization and Development Groups. De eerste bijeenkomst van beide groepen vond plaats op 28 februari en 1 maart 1983 in Kopenhagen. De deelnemende hard- en softwareproducenten waren alle Deens: A/S Regnecentralen, Metanic ApS en Commodore Gruppen.

De naam van de taal werd toen ook vastgesteld op COMAL-80.

Later sloten meer hard- en softwareproducenten en gebruikers zich aan, onder meer uit Ierland, Engeland en Schotland, de Verenigde Staten, Zweden, Nederland en Duitsland.[3]

Verspreiding van de taal[bewerken]

Cartridge COMAL-80 voor de Commodore 64
Handboek COMAL-80 voor de Commodore 64

Vanzelfsprekend was Denemarken het eerste land waar COMAL-80 in het onderwijs, van middelbare school tot universiteit, gebruikt werd.

In 1980 besloot de Ierse regering Apple II computers op middelbare scholen in gebruik te nemen met COMAL als verplichte taal. Daarna ontwikkelde Acorn Computers in Engeland in 1984 een COMAL-implementatie voor de vooral in dat land gebruikte BBC/Acorn-computers. Dit had tot gevolg dat er ook gebruikers volgden in Australië en Canada.

A/S Regnecentralen ontwikkelde een minicomputer, de RC700 Piccolo (en later een eenvoudiger versie, de Piccoline) speciaal voor onderwijs- en schooladministratieve doeleinden, waarop COMAL standard geïmplementeerd was. Deze machine werd uiteraard in Denemarken gebruikt, maar die machine speelde ook een belangrijke rol bij de verspreiding van COMAL in Nederland, Duitsland en Polen.

Tussen 1984 en 1987 ontwikkelde Telenova (Zweden) een COMAL-versie voor hun desktop PC (Compis) die in het Zweedse onderwijs gebruikt werd. Later werd deze versie ook geïmplementeerd op computers die draaiden met de besturingssystemen CP/M, MS-DOS en Windows XP.

In Nederland werd de onder CP/M werkende versie van Metanic ApS gebruikt, voornamelijk op scholen die lid waren van de Verenigde (neutraal-)Bijzondere Scholen (VBS). De introductie in 1981 (op de Nationale Onderwijs Tentoonstelling) werd verzorgd in een samenwerkingsverband tussen de Stichting Pascal (voor technische ondersteuning vanuit de VBS), RC Data Systems (gevestigd in Gouda; eerst een dochter van A/S Regnecentralen, later van Datapoint) en de uitgever Educaboek (in Culemborg). Bij Educaboek werden een gebruikershandleiding en twee leerboeken uitgegeven. De laatste waren vertalingen van de Deense boeken van Børge Christensen.[4][5]

Ook in Duitsland, voornamelijk in de noordelijke staten, en in Polen werd op middelbare scholen en op een enkele universiteit, gebruik gemaakt van de Metanic-implementatie van COMAL-80.

Een doorbraak van de taal in de Verenigde Staten was er terzelfder tijd toen een Amerikaanse Commodore-gebruikersgroep een ‘eigen’ diskversie van de taal lanceerde, versie 0.14 voor de zeer populaire Commodore 64. Een en ander werd begeleid door een regelmatig verschijnend tijdschrift Comal Today, waarbij ook diskettes met (voorbeeld)programma’s werden uitgegeven, en door een aantal leerboeken.

Mede door dit succes ontwikkelde een nieuw Deens bedrijf, UniComal, niet alleen een versie voor MS-DOS, maar ook een cartridge voor de Commodore 64 die volledig compatibel was met de DOS-versie. Door een nieuw concept, geïnitieerd door de COMAL Development Group – het zogenoemde package – was het mogelijk elke COMAL-implementatie uit te breiden met specifiek op de machine afgestemde standaard opdrachten. Voor de Commodore 64 (en 128) was dat onder meer een Turtle package (overgenomen van Logo) en het Sound package.

In de meeste landen waar COMAL-80 gebruikt werd, ontstonden gebruikersgroepen, zo ook in Nederland: de COMAL-80 GG (in oktober 1982), die de Nederlandse vertaling van het handboek voor de Commodore 64 verzorgde en de import en verkoop van de cartridge. Ook werd er door die groep een tijdschrift onder de naam Comal Info uitgegeven.[6]

De ontwikkeling in Denemarken stond niet stil. Er kwamen daar mensen van school af die alleen maar hadden leren programmeren met COMAL. UniComal bracht daarom ook een versie uit waarmee het mogelijk was objectgeoriënteerd te programmeren. Deze versie, 3.00, was ook voorzien van een compiler waardoor commercieel programmatuur in COMAL ontwikkeld kon worden, die onafhankelijk daarvan onder MS-DOS kon worden uitgevoerd.

OpenComal[bewerken]

Met de introductie van het besturingssysteem Windows (en de ontwikkeling van programmeertalen met muisbesturing) stopte eigenlijk ook de verdere ontwikkeling en het gebruik van COMAL, met uitzondering van het gebruik op een enkel onderwijsinstituut in Engeland en Schotland.

Wel werd in 1992 nog een COMAL-interpreter gelanceerd in het public domain, onder de naam PDComal, die in 2002 werd herdoopt tot OpenComal en beschikbaar is voor de platforms Unix, MS-DOS en Win32 onder GNU General Public License. Deze versie is gebaseerd op de laatste COMAL-standaard, maar kent ook enkele uitbreidingen daarop, zoals NAME-parameters in een procedure, waardoor het mogelijk is uitdrukkingen (en ook procedures) aan een procedure door te geven. Bij het CASE-statement kunnen in deze implementatie - zij het beperkt - logische uitdrukkingen worden geëvalueerd.[7]

Besturingssystemen, merken en versies[bewerken]

De verschillende versies van COMAL c.q. COMAL-80 waren beschikbaar op de volgende besturingssystemen en computermerken.


Enkele voorbeelden van standaard COMAL-controlestructuren[bewerken]

// Dit is een COMAL-statement met commentaar

Herhaling[bewerken]

FOR teller#:= 1 TO 100 STEP 3 DO
  PRINT teller#;
ENDFOR teller#

Functie met voorwaarde[bewerken]

FUNC faculteit(n)
  IF n < 0 OR n <> INT(n) THEN
    STOP "Fout in parameter"
  ELIF n = 0 THEN // ELIF betekent ELSE IF
    RETURN 1
  ELSE // recursief gebruik van de functie
    RETURN n * faculteit(n - 1)
  ENDIF
ENDFUNC faculteit

Procedure met keuze-statement[bewerken]

PROC wijzig(REF a, b)
  CASE b OF
  WHEN 1, 2
    a := a + b
  WHEN 3, 4, 5
    a := a * b
  WHEN 0
    EXIT // verlaat procedure
  OTHERWISE
    a := 0
  ENDCASE
ENDPROC wijzig

Externe links[bewerken]

Zie ook[bewerken]