1.2. Historie funkcionálních jazyků

Počátky funkcionálních jazyků musíme hledat již v době, kdy počítače v tom smyslu, jak je známe dnes, ještě neexistovaly. Ve 30. letech 20. století vytvořil Alonzo Church (1903-1995), profesor matematiky a filosofie na Princeton University, netypovaný lambda kalkul jako matematickou teorii funkcí. Tento matematický formalismus se později stal základem prvních funkcionálních jazyků a jeho konstrukce najdeme i v mnoha současných programovacích jazycích, např. v jazyce Python. K nejznámějším Churchovým vědeckým přínosům patří také tzv. Church-Turingova teze o tom, že algoritmus je ekvivalentní pojmu funkce a Churchův teorém z roku 1936 o tom, že aritmetika je nerozhodnutelná.

Samotný Churchův doktorand Alan Mathison Turing (1912-1954) patří také k zakladatelům moderní informatiky. Po tomto britském matematikovi, logikovi a kryptografovi je nazváno nejprestižnější informatické ocenění, Turingova cena, kterou uděluje společnost ACM (Association for Computing Machinery) od roku 1966 za významný technický přínos pro oblast výpočetní techniky. Tato cena ve výši 100 tis. dolarů je sponzorována firmou Intel. Turing zavedl pojem Turingova stroje, univerzálního výpočetního prostředku formalizujícího pojem algoritmu a výpočtu.

Další velkou osobností spojenou s počátky funkcionálních jazyků je Haskell Brooks Curry (1900-1982), jenž působil na Pennsylvania State University. Jeho hlavní práce směřovaly do oblasti kombinatorické logiky jako variace lambda kalkulu, kde jsou lambda výrazy nahrazeny omezenou sadou primitivních funkcí - kombinátorů.

V roce 1958 vytvořil na MIT John McCarthy (1927), nositel Turingovy ceny za rok 1971 a jeden ze zakladatelů umělé inteligence, programovací jazyk LISP. Na tomto jazyku ukázal, jak lze s několika jednoduchými operátory a notací pro zápis funkce vybudovat celý programovací jazyk. Tento jazyk se stal později velmi populární zejména v oblasti umělé inteligence. Vedl rovněž ke konstrukci speciálních počítačů podporujících běh lispovských programů, a to zejména kvůli jeho jinak značným paměťovým nárokům. V 80. a 90. letech 20. století bylo mnoho dialektů tohoto jazyka sjednoceno do jediného jazyka, Common Lisp, a v roce 1994 byl tento jazyk standardizován organizací ANSI. V současné době se s tímto jazykem setkáme ve formě skriptovacího jazyka pro některé aplikace jako Autocad nebo editor emacs.

Dalším významným krokem ve vývoji funkcionálních jazyků byly práce Robina Milnera, působícího dosud na britské Cambridge University, člena britské Královské společnosti a nositele Turingovy ceny za rok 1991. Jeho zájmem bylo vytvoření metajazyka (MetaLanguage) podporujícího dokazování teorémů. Jazyk ML se však ukázal jako vhodný i pro jiné typy výpočtů a ovlivnil také návrh mnoha dalších jazyků zejména tím, že zavedl polymorfní typovou inferenci. Milner také pracoval v oblasti teorie paralelních systémů, kde vytvořil kalkul komunikujících systémů (CCS) a jeho následníka, pí-kalkul.

Na rozdíl od jazyka ML, obsahujícího i některé prvky imperativních jazyků, byl další jazyk Miranda již čistě funkcionální. Tento jazyk vytvořil David Turner v letech 1985-86 jako první čistě funkcionální jazyk určený především pro komerční využití a distribuovaný britskou společnosí Research Software Ltd.

Na jazyk Miranda dále navázal další čistě funkcionální jazyk Haskell, který je v současné době standardem pro oblast funkcionálního programování. Za tímto jazykem nenajdeme jedinou osobnost, byl vytvořen zvláštním výborem v 80. letech 20. století a jeho poslední polooficiální standard je Haskell 98. Pro výukové účely vyvinul Mark Jones verzi Gofer, která byla později nahrazena systémem HUGS (Haskell User's Gofer System).