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]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í.
ALGOL W
[editovat | editovat zdroj]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.
ALGOL 68
[editovat | editovat zdroj]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.
begin
printf(($gl$,"Hello, world!"))
end
Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku ALGOL na anglické Wikipedii.
- ↑ 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.
- ↑ Collected Algorithms of the ACM Compressed archives of the algorithms. ACM.
- ↑ 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.
- ↑ 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]- Obrázky, zvuky či videa k tématu ALGOL na Wikimedia Commons