Algol (programmeertaal): verschil tussen versies

4 bytes toegevoegd ,  10 jaar geleden
k
Invulling parameters sjabloon
(kleine verbeteringen)
k (Invulling parameters sjabloon)
Algol is voortgekomen uit de wens om een universeel bruikbare, [[platformonafhankelijk|machine-onafhankelijk]]e programmeertaal te maken die voor mensen eenvoudig begrijpelijk moest zijn en daarom aansloot bij de gebruikelijke wiskundige notatie en manieren van uitdrukken in [[natuurlijke taal|natuurlijke talen]] zoals het Engels of Nederlands.
 
Dit streven is mislukt: de universele programmeertaal is er niet gekomen. Maar de meeste sindsdien en ook nu nog ontwikkelde programmeertalen gebruiken allerlei ideeën die in een van de versies van Algol zijn geïntroduceerd.
 
==Geschiedenis==
* [[Algol-68]]
 
'''Algol-58''' (aanvankelijk IAL genoemd) werd ontwikkeld in dezelfde tijd, en met dezelfde doelen, als [[Cobol]] en [[Fortran]], en lijkt wel op de laatste. Het is eigenlijk nooit een helemaal afgewerkt produkt geworden, maar heeft wel gediend als inspiratiebron voor tal van andere talen.
 
'''Algol-60''' werd ontwikkeld als opvolger van onder andere Fortran, mede door een van de ontwerpers van Fortran, [[John Backus]]; deelnemende Nederlanders waren [[Edsger Dijkstra|Edsger W. Dijkstra]] en [[Adriaan van Wijngaarden|Aad van Wijngaarden]]. Het gebruik is echter door gebrek aan steun van computerfabrikanten vooral tot de academische wereld beperkt gebleven. Een zeer invloedrijke vernieuwing in deze taal was de ondersteuning van willekeurig innestelbare blokstructuren (beschreven met een [[grammatica]] middels de [[Backus-Naur-formalisme|Backus-Naur-notatie]]) waarin variabelen een lokaal [[variabelenbereik|bereik]] kunnen hebben.
De Amerikaanse beroepsvereniging [[ACM]] besloot dat deze taal de standaardtaal zou worden voor het weergeven van algoritmes ([[pseudocode]]) in haar blad ''Communications of the ACM''.{{feit||2010|08|10}}
 
'''Algol-W''' werd ontwikkeld door [[Tony Hoare]] en [[Niklaus Wirth]] als vereenvoudiging van Algol-60. Wirth ontwikkelde een compiler voor de [[IBM 360]] die de taal populair maakte.
 
'''Algol-68''' was bedoeld als opvolger van Algol-60, met als ontwerpdoel een universele programmeertaal te maken, waarin op willekeurige computers voor willekeurige doeleinden gemakkelijk zou kunnen worden geprogrammeerd, door allerlei voorzieningen en programmeertechnieken in zich te verenigen op een zo algemeen mogelijke manier.
 
Het eindrapport bevatte een ingewikkelde [[formele specificatie]] in een speciaal voor dit doel ontwikkeld wiskundig formalisme, de [[Van Wijngaardengrammatica]]. Deze legt de vorm en betekenis van de taal vast op een machine- en compileronafhankelijke manier, en staat het in principe toe om formeel te redeneren over de correctheid van programma's en van [[compiler]]s voor de taal.
 
Verscheidene leden van het ontwerpteam, waaronder Dijkstra, Hoare en Wirth, vonden echter de taal en zijn specificatie zo groot en complex worden dat het maken van [[compiler]]s ervoor ondoenlijk werd en ook de praktische bruikbaarheid door programmeurs eronder leed.
 
Ondanks een herziene specificatie ([[1973]]) die veel begrijpelijker was en sommige moeilijkheden veroorzakende constructies schrapte, was het algemene oordeel al gegeven: een universele programmeertaal is misschien een te hoog doel, en het ontwerpen ervan op papier door een commissie zonder praktische implementaties misschien niet de beste methode. Sindsdien is vrijwel algemeen geaccepteerd dat programmeertalen altijd beperkt zijn: tot bepaalde typen computers, bepaalde soorten toepassingen, of bepaalde [[programmeerparadigma]]'s. De belangrijkste uitzondering hierop is [[Ada (programmeertaal)|Ada]].
 
Een compiler of interpreter die Algol-68 volledig implementeert bestaat niet, maar er zijn er wel die subsets implementeren die veel rijker zijn dan bijvoorbeeld [[Pascal (programmeertaal)|Pascal]]. Deze waren in de jaren 70 en 80 in de academische wereld populair. Tegenwoordig wordt de taal nog wel eens gebruikt voor pseudocode. Ook worden er nog steeds taalconstructies uit Algol-68 in nieuwe of bestaande talen als nieuw geïntroduceerd, zoals de combinatie van [[statische typering]] met [[hogere-orde functie]]s en [[lambda-expressie]]s.
 
==Externe links==
* [http://www.angelfire.com/biz/rhaminisys/algol60.html Downloaden van de compiler en interpreter van Algol-60]
* [http://www.angelfire.com/biz/rhaminisys/binaries/algol60.zip Rechtstreeks download a60.zip]
* [http://www.engin.umd.umich.edu/CIS/course.des/cis400/algol/algol.html Full DOS Algol-60 compilers en run-time programma met broncode]
 
==Leestip==