ALGOL

programmeringsspråk

ALGOL (fokorting for ALGOrithmic Language) er eit programmeringsspråk som starta utviklinga midt på 1950-talet, og er eit tidleg programmeringsspråk. Den første standarden vart ferdig i 1958. Seinare versjonar kom i 1960 og 1968. I dag er Algol først og fremst av historisk interesse, men er viktig fordi svært mange konsept i dei programmeringsspråka som blir brukt i dag kjem frå Algol, og blir derfor rekna som viktigare enn Fortran og COBOL, som var dei mest populære språka på den tida.

Eigenskapar og historie endre

Algol vart utvikla av ein internasjonal komité frå slutten av 1950-åra og framover. Den første rapporten som spesifiserte Algol58 vart ferdig i 1958. Særleg versjonen frå 1960 var nyskapande. Algol60 introduserte blokkstuktur, som finst i nesten alle programeringsspråk introduserte sidan, og som gjer lokale variablar mogeleg. I tillegg vart parameteroverføringsmodi som call by value og call by name, slik at ein kan lage rekursive funksjonar. if-then-else og generelle mekanismar for iterasjon var og nytt i Algol60.

Ei anna nyvinning er at syntaksen til algol er formelt definert i form av ein gramatikk. Denne var i såkalla Bachus-Neur-form (BNF), og dette er i dag den vanlegaste måten å spesifisere eit programmeringsspråk.

Andre eigenskapar som var nye i Algol:

  • Dynamiske arrayar: Arrayar som ikkje måtte spesifiserast når programmet

vart laga, men kunne allokerast dynamisk under køyring.

  • Nøkkelord: Nøkkelorda i språket kan ikkje brukast som variablar i Algol-program.
  • Brukardefinerte datatypar: datatyper som speglar problemetområdet programmeraren forsøker skrive eit program for

Døme på programmering i Algol endre

Dette programmet reknar ut gjenomsnittet av alle elementa i ein array.

 // the main program (this is a comment)
 !
 begin
   integer N;
   Read Int(N);
   !
   begin
     real array Data[1:N];
     real sum, avg;
     integer i;
     sum:=0;
     !
     for i:=1 step 1 until N do
       begin real val;
         Read Real(val);
         Data[i]:=if val<0 then -val else val
       end;
     !
     for i:=1 step 1 until N do
       sum:=sum + Data[i];
     avg:=sum/N;
     Print Real(avg)
   end
 end