Algol-60 jelentés

Az Algol-60 jelentést 1959 és 1960 között írta egy Peter Naur szerkesztőből, valamint számos európai és amerikai oktatóból és gyakorlati szakemberből álló programozási nyelvi szakértői csoport. A jelentés célja a numerikus folyamatok kifejezésére szolgáló nemzetközi algoritmikus nyelv teljes körű leírásának kidolgozása volt olyan formában, amely alkalmas a számítógépes programozási nyelvekbe való fordításra. Nem programozási nyelvnek szánták, bár később nyelvként valósították meg, és Európában népszerűvé vált.

Az Algol programozási nyelv számos változatát valósították meg az 1960-as években és az 1970-es évek elején. Számos más programozási nyelv kifejlesztéséhez is vezetett, például a Niklaus Wirth által az 1970-es évek elején megvalósított Pascal és a C.

A jelentés bevezette a referencianyelv, a publikációs nyelv és a hardveres reprezentáció fogalmát. A referencianyelv volt a jelentés, a fordítóprogram-írók és a hardveres megvalósítás szabványa. Ez diktálta a nyelv formáját és szintaxisát . A publikációs nyelv a referencianyelvet használta, kisebb kiigazításokkal az országok közötti publikációs eltérések, valamint a nyomtatási és írási eltérések, például az alul- és felülírások és más jelölések kezelése miatt. A hardveres ábrázolás figyelembe vette a gép jellemzőit. A referencianyelv volt a meghatározó nyelv, és a publikációs nyelvnek és a hardveres reprezentációnak lefordíthatónak kellett lennie rá.

A jelentés és a nyelv célja az volt, hogy a különböző számítógépes fogalmaknak – különösen az algoritmusok tervezésének, vagy ALGOrithmic Language 1960 – egyértelmű reprezentációt adjon. Egy későbbi változat, az Algol68 nem volt olyan népszerű és széles körben alkalmazott, mint az Algol-60, bár nagyobb teljesítményű volt.

Az Algol egy strukturált nyelv, amely while utasításokat, if-then-else-kijelentéseket és más konstrukciókat tartalmaz, amelyek a kiválasztást, az iterációt, az alaputasításokat, a blokkszerkezetet és a rekurziót valósítják meg. Bár csak néhány évvel az IBM által 1957-ben kiadott FORTRAN (FORmula TRANslator) után fejlesztették ki, a FORTRAN-ból hiányzó funkciókat – nevezetesen a rekurziót és a strukturált nyelvet – tartalmazta, és jelentős előrelépés volt a programozás terén.

Az Algol és a FORTRAN egyik leszármazottja a BASIC (Beginner’s All-purpose Symbolic Instruction Code) nyelv volt, amelyet John Kemeny és Thomas Kurtz a Dartmouth Egyetemről fejlesztett ki. A BASIC a FORTRAN egyfajta formátum-mondatmentes változata volt az interaktív és kezdő számítástechnika számára. A BASIC hosszú uralmat élvezett az 1970-es évektől az 1980-as évekig, és a közelmúltban egy egészen más formában, a Visual Basicben valósult meg.

Az Algol leszármazottja volt a Pascal, amely szintén hosszú uralmat élvezett, mint az adatszerkezetek megvalósításának és a fordítóprogramok tanulmányozásának népszerű nyelve. Nem termelési nyelv volt, hanem oktatási eszköz. A C egy rendszer nyelve volt, és vezetett a C, egy objektumorientált nyelv kifejlesztéséhez, amely még mindig népszerű.

Az Algol nyelvet a Backus normál vagy Backus-Naur formának (BNF) nevezett jelöléssel írták le. A jelölést John Backus javasolta, aki az 1930-as években híres logikus, E. L. Post jelölésén alapult. Hasonló volt a Noam Chomsky által 1957-ben a nyelvészet számára kifejlesztett notációhoz, amelyet nyelvtanok megvalósítására használtak. A nyelvtan a nyelvek tömör, egyértelmű leírásának egy tömör, egyértelmű módja. A formális jelölés használata a nyelvelméletben jelentős előrelépés volt.

A programozási nyelvek fejlődése lenyűgöző volt, de nem olyan lenyűgöző, mint a fordítóelmélet fejlődése. Röviddel az Algol-60 jelentés után több fordítóelméletíró is a nyelvtani jelölést használta a fordítóprogramok “automatikus” megvalósítására. Ezeket a fordítókat fordítókompilerek néven ismerték. Hasonló törekvés volt a Lex, egy lexikai elemző és a Yacc (“Yet another compiler-compiler”) kifejlesztése a Bell Laboratoriesnál az 1970-es évek közepén.

Understanding Programming Language

Az angol nyelvtanban vannak bizonyos konstrukciók, például a főnévi kifejezés, amely más konstrukciókból, például egy főnévből és egy módosítóból áll. A programozási nyelvek olyan konstrukciókkal rendelkeznek, mint a while-állítások és az aritmetikai kifejezések. Ezeket a konstrukciókat speciális szimbólumok jelölik, amelyeket a nyelv nemterminális vagy meta szimbólumainak neveznek.

A nyelvben ténylegesen megjelenő szimbólumokat terminális szimbólumoknak nevezzük. A terminológia a nyelv implementálásához használt adatszerkezetekből, vagy elemzőfákból származik.

Egy példa:

Ez a nyelvtan azt jelzi, hogy egy aritmetikai kifejezés, E, más aritmetikai kifejezésekből és kifejezésekből, T, összeadva áll (E–>E T). Egy kifejezés, T, egy kifejezés és egy tényező, F szorzatából áll, így T–>T*F. Végül,egy faktor, F, a legalapvetőbb kifejezés, amely zárójeles kifejezésekből (a zárójeles E), azonosítókból (felhasználó által meghatározott azonosító vagy változók), id és numerikus konstansokból (num) áll. A nyelvtan megadja az aritmetikai kifejezések formáját.

A példa ízelítőt ad a jelölésből. A nyíl bal oldalán lévő elemek a jobb oldalon lévő elemekből állnak össze. Ebben az esetben az E, a T és az F a metaszimbólumok. A többi szimbólum,, *, (, ), és ebben az esetben az id és num jelek jelennek meg a nyelvben. Ezek a nyelv szavai. Ebben az esetben az E a kezdőszimbólum vagy az első nem terminális szimbólum. Ez a legáltalánosabb kifejezés, amelyet definiálunk. Bár a jelölés elsőre esetlennek tűnhet, hasznos a nyelvtervezésben, a fordítóelméletben és a megvalósításban.

A nyelvtanok fejlődése a számítástechnikában nagy lendületet adott a programozási nyelvek tervezésének és megvalósításának.

lásd még Algoritmusok; Procedurális nyelvek; Programozás.

Roger R. Flynn

Bibliográfia

Naur, Peter, szerk. “Revised Report on the Algorithmic Language Algol-60”. Communications ACM 6, no. 1 (1963): 1-17.

Wexelblat, Richard L., ed. History of Programming Languages. New York: Academic Press, 1981.