Co je funkční programování? Tutoriál s příkladem

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

Funkční programování (také nazývané FP) je způsob uvažování o konstrukci softwaru vytvářením čistých funkcí. Vyhýbá se konceptům sdíleného stavu, měnitelných dat pozorovaných v objektově orientovaném programování.

Funkční jazyky kladou důraz spíše na výrazy a deklarace než na provádění příkazů. Proto, na rozdíl od jiných procedur, které závisí na lokálním nebo globálním stavu, závisí výstup hodnoty v FP pouze na argumentech předávaných funkci.

Charakteristika funkcionálního programování

  • Metoda funkcionálního programování se zaměřuje na výsledky, nikoli na proces
  • Důraz je kladen na to, co se má vypočítat
  • Data jsou neměnná
  • Funkční programování Rozložte problém na 'funkce
  • Je postaven na konceptu matematických funkcí, které k provedení výpočtu používají podmíněné výrazy a rekurzi
  • Nepodporuje iteraci jako příkazy smyčky a podmíněné příkazy jako If-Else

Historie funkcionálního programování

  • Základem pro funkcionální programování je lambda kalkul. Byl vyvinut ve 1930. letech XNUMX. století pro funkční aplikaci, definici a rekurzi
  • LISP byl první funkční programovací jazyk. McCarthy jej navrhl v roce 1960
  • Koncem 70. let vědci z University of Edinburgh definovali ML (Meta Language)
  • Na počátku 80. let jazyk Hope přidává algebraické datové typy pro rekurzi a rovnicové uvažování
  • V roce 2004 Inovace funkcionálního jazyka 'Scala.'

Funkční programovací jazyky

Cílem jakéhokoli jazyka FP je napodobit matematické funkce. Základní proces výpočtu je však ve funkcionálním programování odlišný.

Zde jsou některé nejvýznamnější funkční programovací jazyky:

  • Haskell
  • SML
  • Clojure
  • Scala
  • Erlang
  • Čisté
  • F#
  • ML/OCaml Lisp / schéma
  • XSLT
  • SQL
  • Mathematica

Základní terminologie funkcionálního programování a Concepts

Základní terminologie funkcionálního programování a Concepts

Neměnná data

Neměnná data znamenají, že byste měli snadno vytvářet datové struktury namísto úpravy těch, které již existují.

Referenční transparentnost

Funkční programy by měly provádět operace stejně, jako by to bylo poprvé. Budete tedy vědět, co se mohlo nebo nemuselo stát během provádění programu a jaké to má vedlejší účinky. V termínu FP se nazývá referenční transparentnost.

Modularita

Modulární konstrukce zvyšuje produktivitu. Malé moduly lze rychle kódovat a mají větší šanci na opětovné použití, což jistě vede k rychlejšímu vývoji programů. Kromě toho lze moduly testovat samostatně, což vám pomůže zkrátit čas strávený testováním a laděním jednotky.

Udržitelnost

Udržovatelnost je jednoduchý termín, který znamená, že programování FP se snadněji udržuje, protože se nemusíte starat o nechtěnou změnu čehokoli mimo danou funkci.

Prvotřídní funkce

'Prvotřídní funkce' je definice, připisovaná entitám programovacího jazyka, které nemají žádné omezení na jejich použití. Prvotřídní funkce se proto mohou objevit kdekoli v programu.

Uzavření

Uzávěr je vnitřní funkce, která může přistupovat k proměnným rodičovské funkce i po provedení rodičovské funkce.

Funkce vyššího řádu

Funkce vyššího řádu buď berou jiné funkce jako argumenty, nebo je vracejí jako výsledky.

Funkce vyššího řádu umožňují dílčí aplikace nebo kari. Tato technika aplikuje funkci na její argumenty jeden po druhém, protože každá aplikace vrací novou funkci, která přijímá další argument.

Čistá funkce

„Čistá funkce“ je funkce, jejíž vstupy jsou deklarovány jako vstupy a žádný z nich by neměl být skrytý. Výstupy jsou také deklarovány jako výstupy.

Čisté funkce působí na jejich parametry. Není efektivní, pokud nic nevracíme. Navíc nabízí stejný výstup pro dané parametry

Příklad:

Function Pure(a,b)
{
	return a+b;
}

Nečisté funkce

Nečisté funguje přesně opačně než čisté. Mají skryté vstupy nebo výstupy; říká se tomu nečisté. Nečisté funkce nelze používat ani testovat izolovaně, protože mají závislosti.

Příklad

int z;
function notPure(){
	z = z+10;
}

Složení funkce

Složení funkcí je kombinace 2 nebo více funkcí za účelem vytvoření nové.

Sdílené státy

Sdílené stavy jsou důležitým pojmem v programování OOP. V podstatě jde o přidávání vlastností objektům. Pokud je například pevný disk objekt, lze jako vlastnosti přidat kapacitu úložiště a velikost disku.

Vedlejší Efekty

Vedlejší účinky jsou jakékoli změny stavu, ke kterým dochází mimo volanou funkci. Největším cílem jakéhokoli programovacího jazyka FP je minimalizovat vedlejší účinky jejich oddělením od zbytku softwarového kódu. V programování FP Je důležité odstranit vedlejší efekty ze zbytku vaší programovací logiky.

Výhody funkcionálního programování

  • Umožňuje vyhnout se matoucím problémům a chybám v kódu
  • Snazší testování a provádění testování jednotek a ladění kódu FP.
  • Paralelní zpracování a souběžnost
  • Nasazení horkého kódu a odolnost proti chybám
  • Nabízí lepší modularitu s kratším kódem
  • Zvýšená produktivita vývojáře
  • Podporuje vnořené funkce
  • Funkční konstrukce jako Lazy Map & Lists atd.
  • Umožňuje efektivní využití lambda kalkulu

Omezení funkcionálního programování

  • Paradigma funkcionálního programování není snadné, proto je pro začátečníka obtížné jej pochopit
  • Je těžké udržovat, protože mnoho objektů se vyvíjí během kódování
  • Vyžaduje hodně zesměšňování a rozsáhlé nastavení prostředí
  • Opětovné použití je velmi komplikované a vyžaduje neustálou refaktorizaci
  • Objekty nemusí správně reprezentovat problém

Funkcionální programování vs. objektově orientované programování

Funkcionální programování OOP
FP používá neměnná data. OOP používá proměnlivá data.
Dodržuje model založený na deklarativním programování. Dodržuje model imperativního programování.
Zaměřuje se na: „Co děláte. v programu." Zaměřuje se na „Jak děláte programování“.
Podporuje paralelní programování. Žádná podpora pro paralelní programování.
Jeho funkce nemají žádné vedlejší účinky. Metoda může vyvolat mnoho vedlejších účinků.
Řízení toku se provádí pomocí volání funkcí a volání funkcí s rekurzí. Proces řízení toku se provádí pomocí smyček a podmíněných příkazů.
Pořadí provedení příkazů není příliš důležité. Důležité je pořadí provedení příkazů.
Podporuje „Abstrakce nad daty“ a „Abstrakce nad chováním“. Podporuje pouze „Abstrakce přes data“.

Proč investovat do čističky vzduchu?

  • Funkční programování neboli FP je způsob uvažování o konstrukci softwaru založený na některých základních definujících principech
  • Koncepce funkcionálního programování se zaměřuje na výsledky, nikoli na proces
  • Cílem jakéhokoli jazyka FP je napodobit matematické funkce
  • Některé nejvýznamnější funkční programovací jazyky: 1)Haskell 2)SM 3) Clojure 4) Scala 5) Erlang 6) Clean
  • „Čistá funkce“ je funkce, jejíž vstupy jsou deklarovány jako vstupy a žádný z nich by neměl být skrytý. Výstupy jsou také deklarovány jako výstupy.
  • Neměnná data znamenají, že byste měli snadno vytvářet datové struktury namísto úpravy těch, které již existují
  • Umožňuje vyhnout se matoucím problémům a chybám v kódu
  • Funkční kód není snadný, proto je pro začátečníka těžko srozumitelný
  • FP používá neměnná data, zatímco OOP používá proměnlivá data