Funkčné programovacie charakteristiky, príklady, výhody, nevýhody
- 3394
- 553
- MUDr. Miloslav Habšuda
Ten Funkčné programovanie Zodpovedá programovaciemu vzoru, ktorý je založený skôr na koncepcii uvedenia konania programu ako matematického funkčného modelu ako ako explicitných sekvencií pokynov pre procesor, ktorý je hlavným konceptom v imperatívnom programovaní.
Funkčný jazyk zdôrazňuje vety a podmienky namiesto vykonávania pokynov. V tomto programe bude výsledok závisieť iba od parametrov, ktoré sa odovzdávajú funkcii, na rozdiel od iných typov, ktoré sa riadia miestnym alebo globálnym štátom.
Ako funguje mapovacia funkcia vo funkčnom programovacom jazyku Haskell. Zdroj: od Pluke - vlastná práca, CC0 Commons.Wikimedia.orgán.Jeho názov pochádza z matematických funkcií, ktoré sú prideľovaním súboru záznamov do súboru výstupov. Matematická funkcia skutočne nefunguje, ale opisuje model procesu, ktorý prostredníctvom vzorca vysvetľuje, čo sa v funkcii vytvára sada položiek.
[TOC]
Základné nápady
Základom, na ktorom bolo založené funkčné programovanie, bol výpočet Lambda, ktorý bol vyvinutý v tretej dekáde dvadsiateho storočia na definovanie a uplatňovanie funkcií. LISP bol prvým programovacím jazykom tohto typu, navrhnutý v roku 1960.
Aj keď väčšina programovacích jazykov pozostáva z externých záznamov, výstupov a premenných, ktoré je možné nakonfigurovať alebo používať z funkcií, funkčné programovanie mu zabraňuje. Myšlienka je, že zakaždým, keď sa funkcia nazýva s rovnakými parametrami, musí vrátiť rovnakú hodnotu.
Charakteristika
Funkčné programovacie jazyky sa nazývajú aplikácie, pretože funkcie sa vzťahujú na ich parametre, okrem deklaratívneho a ne -procedurálneho, pretože definície určujú, čo chcete vypočítať a nie ako sa vypočítajú.
Čisté funkcie
Funkcia je čistá, keď nemá pozorovateľné vedľajšie účinky, ako napríklad zmena vonkajších premenných, zmeny v súborovom systéme atď.
Tieto funkcie sa považujú za presvedčivé, pretože výslovne nezmenia žiadnu premennú, od ktorej by ostatné časti kódu mohli v určitom čase závisieť. Zdá sa, že nepohodlne kodifikuje tieto obmedzenia, ale malo by sa domnievať, že tieto funkcie sú deterministické, predvídateľné a zložiteľné.
Funkcie prvej triedy
Funkcie sa považujú za hodnoty, ktoré môžu byť priradené k premenným, aby ich mohli odovzdať a vrátiť sa z iných funkcií. To znamená, že funkcia sa môže použiť, akoby to bol parameter alebo ako hodnota, ktorá sa vracia.
To znamená, že funkcia sa môže vysielať ako taká, namiesto toho, aby sa iba výsledok funkcie. Zvážte napríklad funkciu dvojitého (x), ktorá vracia dvojnásobnú hodnotu svojho vstupného parametra. Dvojnásobok (2) by sa teda vrátil 4.
Môže vám slúžiť: Vývoj priemyselnej údržby: od pôvodu po súčasnosťRovnako ako funkcia prvej triedy, kód (dvojité (dvojité (2)) by bol rovnaký ako dvojitý kód (4). To umožňuje hniezdiť funkciu ako parameter iného a tak ďalej.
Referenčná transparentnosť
Vzťahuje sa na skutočnosť, že v tomto modele programovania neexistujú žiadne vety priradenia. To znamená, že nové premenné by sa mali definovať, ak sú potrebné ďalšie hodnoty. Preto je stav premennej vždy konštantný.
To eliminuje najmenšiu možnosť nežiaducich účinkov, pretože akákoľvek premenná môže byť nahradená jej skutočnou hodnotou počas akéhokoľvek bodu vykonávania programu.
Rekurzia
Vo funkčnom programovaní neexistujú žiadne slučky „pre“ a „zatiaľ“. Namiesto toho iterácia závisí od rekurzie. Rekurzia sa implementuje pomocou rekurzívnych funkcií, ktoré sa opakujú, až kým sa nedosiahne základný prípad.
Nemennosť
Premenné sú nemenné, to znamená, že po inicializovaní nie je možné zmeniť premennú. Aj keď je možné vytvoriť novú premennú, existujúce premenné nie sú povolené.
Príklady
Imperatívne a deklaratívne prístupy
S príkladom je možné analyzovať rozdiel medzi týmito prístupmi, pričom v oboch ustanoveniach vykonáva rovnakú operáciu, ktorá má filtrovať nepárne čísla zoznamu, zatiaľ čo čísla menšie ako 5 sú nahradené 5.
Je to rovnaký výpočet s rovnakým výsledkom. Ako je však vidieť, imperatívny kód je podrobný a nie je jasný okamžite. Na druhej strane je deklaratívny prístup čitateľný a explicitný, pretože sa zameriava na to, čo chcete získať.
Čisté funkcie
Môžete objasniť, čo je definované ako čisté a nečisté funkcie s niektorými základnými príkladmi:
Funkcie, ako sú objekty prvej triedy
Znamená používanie funkcií rovnakým spôsobom, ako sa používajú údaje. Preto môžu odovzdať ako parametre na inú funkciu. V nasledujúcom príklade môžete funkciu int odovzdať ako parameter do funkcie mapy:
>>> zoznam (mapa (int, [„1“, „2“, „3“]))))))))))))))))))))))))))))))))))))))))))))))
[1, 2, 3]
Môžu byť priradené k premenným a vrátiť ich. Napríklad nasledujúcemu kódu je možné priradiť funkciu Hello_world a potom vykonať premennú ako funkciu.
Výhody
- Zamerajte sa na to, čo chcete dosiahnuť (deklaratívne) a nie ako to dosiahnuť (nevyhnutné).
- Neobsahujú vety prideľovania, takže po tom, čo sa premenné dostanú hodnotu, sa už nezmenia. Preto funkčné programy neobsahujú vedľajšie účinky.
Môže vám slúžiť: technologické katastrofy- Logický tok je jasný, pretože stav je menej rozptýlený a nie je implicitne upravený.
- Pripúšťa koncept odloženého hodnotenia, čo znamená, že hodnota sa vyhodnocuje a ukladá v prípade potreby iba v prípade potreby.
- Pretože čisté funkcie nemenia žiadny stav a úplne závisia od vchodu, je ľahko zrozumiteľné. Návratná hodnota daná takýmito funkciami je rovnaká ako výsledok, ktorý priniesli.
- Vzhľadom na povahu čistých funkcií zabránenia zmenám premenných alebo externých údajov sa implementácia súbežnosti stáva účinnou.
- Funkcie sa považujú za hodnoty a presúvajú sa k iným funkciám, ako sú parametre. To zlepšuje porozumenie a čitateľnosť kódu.
- Čisté funkcie berú parametre raz a vytvárajú nemenný východ. Použitím nezmeniteľných hodnôt sa uľahčujú čistenie a testy.
Kratšie a ľahšie pochopiteľné
Sú kratšie a ľahšie pochopiteľné ako imperatívy. Štúdie ukázali, že priemerná produktivita programátora z hľadiska riadkov kódu je viac -menej rovnaká pre akýkoľvek programovací jazyk, ktorý prekladá väčšiu produktivitu.
Žiadny kontrolný tok
Pri volaní funkcie nemôžete mať iný účinok ako výpočet jeho výsledku. Toto vylučuje dôležitý zdroj chýb, ktorý tiež robí príkaz na vykonanie irelevantný, pretože žiadny vedľajší účinok nemôže zmeniť hodnotu výrazu, ktorý je možné kedykoľvek vyhodnotiť.
Programátor je upokojený bremeno vytvorenia riadiaceho toku. Pretože výrazy možno kedykoľvek vyhodnotiť, premenné môžu byť nahradené ich hodnotami.
Táto autonómia uprednostňuje, že funkčné programy sú matematicky zvládnuteľnejšie ako konvenčné programy.
Nevýhody
- Funkčná programovacia paradigma nie je jednoduchá, takže pre začiatočníkov je ťažké porozumieť.
- Je ťažké ho udržiavať, pretože počas kódovania sa mnohých objektov vyvíja.
- V niektorých prípadoch je pri písaní čistých funkcií spôsobená zníženie čitateľnosti kódu.
- Nemenné hodnoty v kombinácii s rekurziou môžu viesť k drastickému zníženiu výkonnosti systému.
- Opätovné použitie je veľmi komplikované a vyžaduje neustálu refaktorizáciu.
- Písanie programov s rekurzívnym štýlom namiesto používania väzieb alebo slučiek by mohlo byť veľmi odrádzajúcou úlohou.
- Objekty nemusia tento problém predstavovať správne.
Môže vám slúžiť: 50 odporúčaných blogov videohier- Aj keď sa písať čisté funkcie je jednoduché, ich kombinácia so zvyškom aplikácie a so vstupnými/výstupnými operáciami je dosť ťažké
Žiadosti
Program umelej inteligencie sa vykonáva vo funkčných programovacích jazykoch a technikách umelej inteligencie migruje do aplikácií v reálnom svete.
Tiež vyniká pri implementácii zložitých matematických modelov. Z tohto dôvodu bol jeden z hlavných použití funkčných jazykov tradične akademický. Je užitočné pri vývoji vykonateľných špecifikácií a implementácií prototypov.
Mnoho funkčných jazykov tiež vyniká pri implementácii paralelného spracovania. Je to kvôli jeho schopnosti využívať čisté funkcie, ktoré vždy vracia rovnakú hodnotu bez ohľadu na poradie, v ktorom sú vykonané.
Funkčná metodika
WhatsApp používa programovací jazyk Erlag, ktorý sleduje funkčný programovací model, ktorý umožňuje viac ako sto zamestnancov spracovať údaje patriace približne 1.600 miliónov ľudí.
Ďalším dôležitým nosičom funkčného programovania je Haskell. Používa ho Facebook vo vašom systéme antispam. Dokonca aj JavaScript, jeden z najpoužívanejších programovacích jazykov, sa môže pochváliť vlastnosťami dynamického funkčného jazyka.
Jazyky, ktoré podporujú funkčné programovanie
D
Bol navrhnutý po C ++, získal všetky svoje výhody a zároveň eliminoval svoje slabosti pozorované pre to, aby musel byť kompatibilný s C.
Erlang
Je vysoko škálovateľná a súbežná, vďaka čomu je ideálny pre telekomunikácie a ďalšie aplikácie, ktoré dostávajú obrovské množstvo údajov v nepredvídateľnom poradí.
Haskell
Toto je čistý funkčný programovací jazyk, ktorý pre neho používa výpočet lambda.
Ml
Používa sa v matematických, vedeckých, finančných, analytických a iných typoch iných typov. Jednou z jeho silných stránok je vyrobiť softvér na zvládnutie iných programov.
Objektívna CAML
Je to jazyk s otvoreným zdrojom, ktorý je založený na CAML. Má tendenciu vytvárať veľmi ľahké programy, ktoré im pomáhajú pri načítaní a vykonávaní rýchlejšie ako tie, ktoré vytvárajú iné jazyky.
Schéma
Je založená na syntaxi LISP a štruktúre rias. Vďaka svojej jednoduchosti sa používa v mnohých počítačových kurzoch ako úvod do návrhu programov na zobrazenie niektorých základov počítačového programovania.
Odkazy
- Whho hosťuje toto (2019). Naučte sa funkčné programovanie: Tento štýl kódovania vám vyhodí myseľ. Prevzaté z: whoisostingTha.com.
- Andrea Bertoli (2019). Primeraný úvod do funkčného programummmmm. Prevzaté z: dev.do.
- Hacker Earth (2020). Funkčné programovanie. Zobraté z: Hakeref.com.
- Clojure (2020). Funkčné programovanie. Prevzaté z: Clojure.orgán.
- Akhil Bhadwal (2020). Funkčné programovanie: koncepty, dobrodružstvo, nevýhody a aplikácie. Hacker. Prevzaté z: Hackr.Io.
- Guru99 (2020). Čo je funkčné programovanie? S príkladom návodu. Prevzaté z: Guru99.com.