Co je to funkční programování?
Funkční programování je programovací paradigma, kde je výpočtovou základnou hodnocení výrazů. Některé vlastnosti jsou použití funkcí vyššího řádu, referenční transparentnosti a líného vyhodnocení. Výhody stylu programování zahrnují, že programy jsou snadno čitelné, jsou velmi spolehlivé a lze je rozdělit na komponenty. Nevýhody jsou, že výpočty mohou být pomalé a styl a syntaxe se zcela liší od ostatních běžných programovacích stylů. Funkční styl programování je častěji přijímán akademiky než odborníky v oblasti informatiky.
Jak název napovídá, funkce jsou základní součástí tohoto paradigmatu programování. Funkce mohou být vnořeny do jiných funkcí, které se nazývají funkce vyššího řádu, a každou funkci vyššího řádu lze rozdělit na funkce stavebních bloků, které jsou snadno srozumitelné a ladění. Příklady některých funkcí vyššího řádu jsou mapa a hnízdo. Funkční mapa vezme funkci f a lisT proměnných, například (x, y, z) a dává výsledek v seznamu: mapa [f, (x, y, z)] = (f (x), f (y), f (z)). Nest vezme funkci f, proměnnou x a počet iterací: Nest [f, x, 3] = f (f (f (f (x))).
PURE FUNKTIONÁLNÍ PROGRAMOVÁNÍ ZÍSKEJTE VSTUP A VÝSTAVU VÝKON, aniž by se změnil stav proměnné. Jinými slovy, funkce se stejným vstupem bude vždy poskytnout stejné výsledky bez ohledu na to, co se v programu dříve stalo. Tomu se říká referenční průhlednost. Vzhledem k tomu, že matematické funkce jsou referenčně transparentní, funkční programování je intuitivní pro mnoho matematiků, inženýrů a vědců.
Referenční průhlednost funkcí znamená, že pořadí hodnocení funkce není důležité. Funkce proto nemusí být vyhodnoceny, dokud nejsou potřeba jejich výsledky, což se nazývá líné hodnocení. To je v úplných contrasT s imperativním programováním, kde program začíná prvním příkazem a prochází seznamem až do posledního příkazu. Líné hodnocení přeskočí části programu, které logicky nesledují nebo jsou zbytečné, což automaticky optimalizuje program a může zkrátit výpočetní dobu.
Funkční programování má mnoho výhod oproti jiným paradigmatům programování. Funkce s jasnými vstupy a výstupy jsou snadno čitelné a pochopitelné. Jakmile je funkce důkladně ladění, může být spolehlivě použit v jiných aplikacích. Vícemístné stroje mohou být schopny vypočítat funkce, které jsou hodnoceny nezávisle paralelně, což drasticky zlepšuje výkonnost programů.
Bohužel, ne všechny programy se hodí k paralelnímu výpočtu a výpočetní funkční programy mohou být poměrně pomalé. Funkční programy se silně spoléhají na rekurzi, která je často méně efektivní než používání tradičních smyček nebo iterační metody. Ve skutečnosti může být funkční programování quiNeromné a obtížné se učit, protože se nepodobuje jiných běžnějších paradigmatech, jako je programování orientované na objekt.
Akademici mají tendenci upřednostňovat funkční programování, protože poskytuje jasný a pochopitelný způsob programování komplexních problémů skutečného světa. Některé čisté jazyky jsou Haskell a Erlang. Mathematica se specializuje na symbolickou matematiku, R se specializuje na statistiku a J se specializuje na finanční analýzu. Jazyky MultipaRadigm, jako je Scala a F#