KOMAL

KOMAL
Paradigm Strukturerad
Designad av Børge R. Christensen, Benedict Løfstedt
Dök först upp 1975
Maskinskrivningsdisciplin Stark
Influerad av
BASIC , Pascal

COMAL ( Common Algorithmic Language ) är ett datorprogrammeringsspråk utvecklat i Danmark av Børge R. Christensen och Benedict Løfstedt och släpptes ursprungligen 1975. COMAL var ett av få strukturerade programmeringsspråk som var tillgängliga för och bekvämt att använda på 8-bitars hemdatorer . Det baserades på det mest framträdande programmeringsspråket BASIC , och lade till flerradiga uttalanden och väldefinierade subrutiner bland andra tillägg.

"COMAL Kernel Syntax & Semantics" innehåller den formella definitionen av språket. Ytterligare tillägg är gemensamma för många implementeringar.

Design

COMAL skapades som en blandning av dåtidens vanliga pedagogiska programmeringsspråk, BASIC , Pascal , och, åtminstone i Commodore- och Compis -versionerna, sköldpaddsgrafiken i Logo . Språket var tänkt att introducera strukturerade programmeringselement i en miljö där BASIC normalt skulle användas.

Med facit i hand ser COMAL ut som en strukturerad BASIC som har någorlunda välskrivna, leverantörsneutrala, fria, standarder. [ originalforskning? ] Det är aldrig nödvändigt att använda GOTO , och radnummer är enbart för redigeringsändamål snarare än flödeskontroll. Observera dock att det standardiserade språket endast stöder kontrollstrukturering, inte datastrukturering som poster eller strukturer (kommersiella implementeringar som UniCOMAL 3 stödde detta som en förlängning).

Historia

COMAL utvecklades ursprungligen i Danmark av matematikläraren Børge R. Christensen. Skolan där han undervisade hade fått en Data General NOVA 1200 minidator 1972, med förväntningen att skolan skulle börja undervisa i datavetenskap . Christensen, som hade gått en kortare kurs i ämnet på universitetet, förväntades leda programmet och underhålla datasystemet. NOVA 1200 var försedd med Data General Extended BASIC , och Christensen blev snabbt frustrerad över det sätt på vilket det ostrukturerade språket fick eleverna att skriva kod av låg kvalitet som var svår att läsa och därmed markera. Christensen träffade datavetaren Benedict Løfstedt, som uppmuntrade honom att läsa Systematisk programmering , den då nya boken om design av programmeringsspråk av Niklaus Wirth , skaparen av Pascal . Christensen var imponerad, men fann att han inte kunde använda Pascal direkt, eftersom det saknade det interaktiva skalet som gjorde BASIC så lätt för eleverna att utvecklas med. Under de kommande sex månaderna korresponderade Christensen och Løfstedt per post för att designa ett alternativ till BASIC som behöll sina interaktiva element men lade till strukturerade element från Pascal. År 1974 var språkets definition komplett men Christensen lyckades inte locka till sig intresse från mjukvaruföretag för att utveckla en implementering. Han arbetade därför tillsammans med två av sina elever, som han hade lärt ut maskinspråket NOVA 1200 , för att själva skriva en implementering under ytterligare ett halvår. Den första proof-of-concept-implementeringen (med en fem-rads loop) var klar den 5 augusti 1974, och den första releasen (på pappersband, eftersom det var detta som NOVA 1200 använde för input-output ) var klar i februari 1975 Utvecklingskostnaderna hade varit cirka 300 USD . Först nu plockade systemet (som tidigare hade använt ett internt danskt namn) upp namnet COMAL , för Common Algorithmic Language , inspirerat av ALGOL , som Christensen hade experimenterat med. Den första utgåvan fick därför namnet COMAL 75 . Christensen skrev därefter en lärobok om språket som utvecklades till Beginning COMAL .

1978 började Christensen anpassa COMAL så att den skulle köras på mikrodatorer , som blev tillgängliga, orolig att han utan en sådan implementering skulle behöva lära ut och använda BASIC igen när danska skolor skaffade de nya maskinerna. År 1980 kunde en version av COMAL som utvecklats i anslutning till en college-grupp köras på Zilog Z80 , och därför släpptes COMAL 80 . Ungefär samtidigt introducerade ett danskt företag Comet, en mycket kapabel mikrodator för den tiden, som skulle vara den första maskinen att köra en version av vad som skulle se ut som de senare COMAL-utgåvorna. Christensen steg därefter tillbaka från COMAL-utvecklingen runt 1980-81, som överlämnades till grupper inklusive UniComal, startad av Mogens Kjaer, som hade skrivit till Christensen med kritik av COMAL och därefter överfört den till Commodore PET för release 0.14. Vid denna tidpunkt insisterade danska skolor på att COMAL skulle vara tillgänglig på vilken mikrodator som helst som de köpte.

I början av 1980-talet vann Apple Computer ett kontrakt för att leverera Apple II -datorer med CP/M och COMAL till irländska gymnasieskolor. Den var populär för utbildning och några läroböcker skrevs lokalt.

1984 släppte Acornsoft en COMAL-implementation, av David Christensen, Jim Warwick och David Evers, för deras 8-bitars BBC Micro och Acorn Electron- datorer (med en manual av Paul Christensen och Roy Thornton)

  Mellan 1984-1987 tillverkade TeleNova, ett dotterbolag till den industriella delen av svenska telesystemet, en stationär PC kallad " Compis " för utbildningssektorn. En förbättrad version av COMAL levererades som standardprogrammeringsspråk för denna PC. Versioner skapades för både CP/M-86 och MS-DOS . Den senare versionen är tillgänglig för Windows XP . Den (svenska) referensmanualen är ISBN 91-24-40022-X .

1990 producerade Thomas Lundy och Rory O'Sullivan den definitiva texten om COMAL-programmering. De matchade och jämförde COMAL med BBC Structured Basic .

Från och med 2016 används COMAL fortfarande aktivt som ett pedagogiskt programmeringsspråk. Vissa datoranvändning . gymnasieskolor i Storbritannien fortsätter att använda det för att undervisa i ämnet

Tillgänglighet

COMAL var tillgänglig för:

Exempel

  • "Hej världen!"
     SKRIV UT "HEJ VÄRLDEN!" 
  • Villkor
     IF condition THEN instruktioner ENDIF 
  • Loops
     FOR number:= 1 TO 1000 DO PRINT number ENDFOR 
  • Skriv ut satser med variabler
     INPUT "Vad är ditt favoritnummer?" :nmr# PAGE PRINT "Ditt favoritnummer är " ; nmr#  

Se även

Vidare läsning

externa länkar