Přeskočit na obsah

ALGOL

Z Wikipedie, otevřené encyklopedie
(přesměrováno z ALGOL 68)
Tento článek je o programovacím jazyku. O hvězdě pojednává článek Algol.

ALGOL (zkratka pro ALGOrithmic Language)[1] patří do skupiny imperativních počítačových programovacích jazyků. Byl původně vyvinutý v polovině 50. let 20. století, výrazně ovlivnil mnoho ostatních programovacích jazyků a byl standardní metodou pro popis algoritmů, používaný ACM v učebnicích a akademických pracích na dalších více než 30 let.[2] Uvažujeme-li, že většina současných jazyků je „algol-like“, byl Algol ze čtyř tehdejších vyšších programovacích jazyků (ještě Fortran, Lisp a COBOL) pravděpodobně nejúspěšnější. Byl navržen tak, aby se vyvaroval některých vnímaných problémů ve Fortranu a nakonec pozdvihl mnoho dalších programovacích jazyků, včetně jazyka B, Pascalu a jazyka C.

ALGOL zavedl kód v blocích a párování klíčových slov begin a end pro jejich ohraničení, byl také prvním jazykem, který uměl definovat vnořené funkce (nested function) se statickým rozsahem (lexical scope). Kromě toho to byl první programovací jazyk, který přitáhl pozornost k formálnímu definování jazyka a via Algol 60 Report zavedl Backusovu–Naurovu formu, určující principy zápisu konstrukce jazyka.

Několik verzí

[editovat | editovat zdroj]
Na tuto kapitolu jsou přesměrována hesla ALGOL 58 a ALGOL 60.

Oficiální názvy verzí ALGOLu jsou odvozené od roku, ve kterém byly prvně publikovány.

tři hlavní specifikace
  • ALGOL 58 – původně navrhovaný název IAL (International Algorithmic Language),
  • ALGOL 60 – první zavedení jako X1 ALGOL 60 v polovině roku 1960 – přepracovaný roku 1963,[3][4]
  • ALGOL 68 – přepracovaný v roce 1973 – zavedl nové prvky jako dynamická pole, řezání, paralelismus, identifikaci operátorů a další rozmanité možnosti rozšíření.
Na tuto kapitolu je přesměrováno heslo ALGOL W.

Před tím, než prof. Niklaus Wirth vyvinul Pascal, založil svůj ALGOL W na ALGOLu 60. Algol-W (pro IBM S/360) měl být novou generací ALGOLu, ale komise pro ALGOL 68 se raději rozhodla pro design, který byl více komplexní a pokročilý, než čistý a zjednodušený ALGOL 60.

Na tuto kapitolu je přesměrováno heslo ALGOL 68.

Algol 68 je podstatně odlišný od Algolu 60, a nebyl dobře přijat, takže obecně „Algolem“ myslíme Algol 60 a jeho odvozeniny. Části ALGOLovité („algol-like“) syntaxe jsou občas stále používány jako pseudokód.

Ukázka kódu

[editovat | editovat zdroj]

Při zápisu programů v Algolu v knihách je zvykem zvýrazňovat klíčová slova:

procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);
    value n, m; array a; integer n, m, i, k; real y;
comment The absolute greatest element of the matrix a, of size n by m
    is transferred to y, and the subscripts of this element to i and k;
begin
    integer p, q;
    y := 0; i := k := 1;
    for p := 1 step 1 until n do
        for q := 1 step 1 until m do
            if abs(a[p, q]) > y then
                begin y := abs(a[p, q]);
                    i := p; k := q
                end
end Absmax

Skutečný způsob zápisu klíčových slov byl závislý na implementaci – v některých implementacích se zapisovala v uvozovkách.

Standard jazyka Algol 60 nedefinuje žádné nástroje pro práci s textovými řetězci ani vstupy a výstupy, proto není možné uvést tradiční příklad programu „Hello world“ ve standardním Algolu. Jedna z implementací používá následující zápis:

BEGIN
  FILE F(KIND=REMOTE);
  EBCDIC ARRAY E[0:11];
  REPLACE E BY "HELLO WORLD!";
  WRITE(F, *, E);
END.

Hello world v ALGOLu 68:

begin
  printf(($gl$,"Hello, world!"))
end

V tomto článku byl použit překlad textu z článku ALGOL na anglické Wikipedii.

  1. The name of the family is sometimes given in mixed case (Algol 60), and sometimes in all uppercase Algol 68). For simplicity this article uses ALGOL.
  2. Collected Algorithms of the ACM Compressed archives of the algorithms. ACM.
  3. BACKUS, J. W.; BAUER, F. L.; GREEN, J.; KATZ, C.; MCCARTHY, J.; PERLIS, A. J.; RUTISHAUSER, H. Report on the Algorithmic Language ALGOL 60. Redakce Naur Peter. Copenhagen: [s.n.], 1960. DOI 10.1145/367236.367262. 
  4. Revised Report on the Algorithmic Language Algol 60 [online]. [cit. 2007-06-08]. Dostupné v archivu pořízeném dne 2007-06-25. 

Literatura

[editovat | editovat zdroj]
  • RAICHL, Jiří. Programování v Algolu. 1. vyd. Praha: Academia, 1967. 178 s. 

Externí odkazy

[editovat | editovat zdroj]