Skip to main content

Co je to funkční programování?

Funkční programování je programovací paradigma, kde je základnou výpočtu 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.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 má například funkci F a seznam proměnných (x, y, z) a dává výsledky 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))).

Čisté funkční programování vezme vstup a vrátí výstup bez změny stavu 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ém kontrastu 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ízí hodnocení přeskočí části programu, které nesledují logicky nebo jsou zbytečné, což automaticky optimalizuje program a může zkrátit dobu výpočtu.

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ýkon programů.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í poměrně nemotorné a obtížně se učí, protože se nepodobuje jiných běžnějších paradigmat, jako je objektově orientované programování..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#