Neprogramátor/Deklarativní a funkcionální programování
Funkcionální programování je deklarativní. Obráceně to ale neplatí, protože je více způsobů deklarativního programování, jako třeba logické programování.
Deklarativní programování je založené na vztazích. Programátor říká počítači co, s čím a jak souvisí.
Funkcionální programování konkretizuje deklarativní programování – značí, že jde o vztahy mezi matematickými funkcemi. Matematická funkce nemůže nic změnit, protože jenom popisuje vztah. Říkáme, že je to čistá funkce (pure function).
Typickým příkladem funkcionálního programování je, když čaroděj peče kefírový dort. Čaroděj na to jde chytře a nejprve si postaví velký-stroj-na-dort
. Takový stroj toho musí hodně udělat, a tak čaroděj použije více menších strojů, ze kterých velký-stroj-na-dort
poskládá. Nejdřív potřebuje míchací-stroj
, který všechno, co se do něj shora dá, smíchá, a zdola vypadne ven. míchací-stroj
je ve velkém stroji potřeba dvakrát: jednou pro smíchání polohrubé mouky, moučkového a vanilkového cukru, kypřicího prášku, kakaa a namletých ořechů. Podruhé proto, aby promíchal výsledek míchání suchých ingrediencí s kefírem a rostlinným olejem. Pak je potřeba podávací-stroj
, který výsledek druhého míchání zachytí do pekáče a předá do posledního stroje nazývaného pečící-stroj
, neboli trouba.
Míchací stroje je možné si představit jako trychtýře umístěné nad sebou, které po promíchání ingrediencí otevřou dolní poklop a výsledek míchání se z nich vysype nebo vyteče. Podávací stroj je posuvný pás, na kterém je umístěný plech jedoucí do trouby. Jen co se do plechu dostane mazlavé těsto z druhého míchacího stroje, podávací stroj se rozjede a pomalu projede troubou, kde se kefírový dort upeče.
Velký stroj na pečení kefírového dortu tedy sestává z dvou míchacích strojů umístěných nad sebou, posuvného pásu pod nimi a trouby, kterou projíždí plech umístěný na pásu. Poté, co čaroděj velký-stroj-na-dort
postaví, má hotovo. Hotovo? A kde je dort? Aby čaroděj skutečně kefírový dort upekl, musel by dát do stroje všechny ingredience a nechat stroj chvíli pracovat. Jenže pak by stroj složený čistě z matematických funkcí, ergo, jedna velká čistá matematická funkce, změnil ingredience na koláč! To přece čisté matematické funkce nedělají! Ty jenom popisují vztahy!
Nutno dodat, že přístup k "hotovo" popsaný výše je základem mnoha vtipů o matematicích a funkcionálním programování. Také je třeba dodat, že poleva se udělá z čokolády, másla a zakysané smetany a korpus se nejprve namaže marmeládou a teprve pak polevou.
◄ Objektově orientované programování | Deklarativní a funkcionální programování | Imperativní a procedurální programování ► |