ALGOL

A Wikipédiából, a szabad enciklopédiából
ALGOL

Paradigmaprocedúrális, imperatív, strukturált
Megjelent1958
TervezőBauer, Bottenbruch, Rutishauser, Samelson, Backus, Katz, Perlis, Wegstein, Naur, Vauquois, van Wijngaarden, Woodger, Green, McCarthy
Utolsó kiadásAlgol 68
Hatással volt ráFortran
Befolyásolt nyelvekA legtöbb után a következő imperatív nyelvek (ún. ALGOL-szerű nyelvek)
pl. Simula, C, CPL, Pascal, Ada

Az ALGOL (angolul: ALGOrithmic Language, magyarul kb. algoritmikus nyelv) egy imperatív programozási nyelv, melyet az 1950-es években fejlesztett ki egy európai és amerikai, számítástechnikával foglalkozó tudósokból álló bizottság, többek közt azzal a céllal, hogy kijavítsák a FORTRAN egyes hibáit. Eredetileg IAL-nak nevezték el (International Algorithmic Language), de ezt a rövidítést elvetették. Három fő változata van: az ALGOL 58, az ALGOL 60 és az ALGOL 68, ezek közül az ALGOL 60 a legismertebb. A cikk további részében főként erről lesz szó.

Évtizedeken keresztül az ALGOL-t vagy ennek egy változatát használták algoritmusokkal foglalkozó cikkekben azok leírásához. Több újítása volt a nyelvnek az előtte lévő programnyelvekkel szemben, néhány példa:

  • Három szintaxist határoztak meg
  • Az utasításokat nem kellett külön sorba írni, hanem pontosvessző választotta el őket
  • Blokk-struktúra, ami a későbbi nyelvekben szinte általánossá vált (C, Pascal). Azaz az összetartozó utasításokat begin és end szavak közé tettek
  • Minden blokk új névteret határoz meg
  • Egymásba ágyazott procedúrák
  • Rekurzió (ami azelőtt imperatív nyelvekben nem volt)
  • Név szerinti és érték szerinti paraméterátadás. Ezt a későbbi nyelvekben a cím és érték szerinti paraméterátadás közti különbség váltotta fel.
  • Nyelvtanát a Backus–Naur forma szerint írták le.

Az ALGOL 60 jelentősége abból is látszik, hogy szinte minden utána kitalált programozási nyelvre hatással volt, így a C-re, Pascal-ra, Simula-ra stb. is.

Mivel az ALGOL 60 szabvány nem tartalmazott kiíró utasítást, a szokásos „Helló, világ!” programot a hagyományos értelemben nem lehet megírni. A GNU MARST kiegészítéseivel viszont így nézne ki egy ilyen program:

begin
  outstring(1, "Helló, világ!");
end

Megjegyzés: A példában egyébként nincsen szükség se a pontosvesszőre, se a begin, end párra, mivel egy utasítást nem szükséges csoportosítani. Ez szemben áll több későbbi programnyelvvel, itt csupán a Pascallal való hasonlatosság szemléltetésére néz ki így.

Források[szerkesztés]