Programovanie

Funkčné jazyky: Čo sú zač, kam idú

Aj keď niektorí tvrdia, čo to je, funkčné programovanie stále láka vývojárov. A tri z najpopulárnejších funkčných jazykov - Clojure, F # a Scala - sú k dispozícii pre vylepšenia.

Funkčné programovanie má pre niektorých vývojárov zásadné odvolanie, hovorí zakladateľ spoločnosti Scala Martin Odersky: „Programátori v tomto segmente majú radi funkčné programovanie, pretože robia kód jasnejším, lepšie štruktúrovaným a zabraňujú mnohým chybám.“ Niektorí tvrdia, že funkčné programovanie vedie k menej efektívnemu softvéru.

Funkčné programovanie tiež vyžaduje premýšľanie o programovaní novým spôsobom, hovorí David Stephens, programový manažér spoločnosti Microsoft pre .Net a hovorca spoločnosti F #. Problémom môžu byť abstrakcie: „Keď urobíte kód abstraktnejším, keď sa budete vzďaľovať od manipulácie s bitmi a explicitne prechádzať slučky, pochopenie týchto abstrakcií môže trvať dlhšie.“ “

Čo je to funkčný jazyk?

V najzákladnejších pojmoch je funkčné programovanie to, že sa s výpočtom zaobchádza ako s matematickými funkciami. Okrem jazykov, ktoré sa od začiatku účtujú ako funkčné, sa rozšírením funkcií pre výrazy lambda stali funkčnými aj Java a C #.

Môže však byť ťažké presne určiť presnú definíciu funkčného programovania. Blog Clojurefun uvádza niekoľko definícií, ktoré považuje za nesprávne, vrátane definície funkčného programovania ako umožnenia funkčného štýlu s funkciami vyššieho rádu alebo jazyka podporujúceho lambdy. Hovorí, že správnou definíciou je jazyk zdôrazňujúci funkcie a nemenné dáta.

Podľa iných však preferovaná definícia blogu Clojure nemusí byť nevyhnutne správna. „Autor si vyberie taký, ktorý mimochodom najlepšie zapadá do Clojure - niet divu, toto je blog Clojure,“ hovorí Oderský zo Scaly. „Mám tlmočenie, ktoré je mu blízke, ale nie rovnaké.“

Odersky hovorí, že funkcia je časť kódu, ktorá mapuje vstupy na výstupy a okrem toho nemá žiadne ďalšie efekty. „Je to matematická definícia funkcie, ktorú tu používame. Niekedy sa tieto funkcie nazývajú„ čisté “, aby sme ich odlíšili od napríklad funkcií v C.“ Funkčný jazyk sa zameriava na programovanie pomocou čistých funkcií, vďaka čomu je to ľahké a výkonné, hovorí Odersky, ktorý založil spoločnosť Typesafe, poskytovateľa platformy pre vývoj aplikácií Typesafe JVM.

Funkčné programovanie je možné kombinovať s inými paradigmami, poznamenáva. „Napríklad funkčnosť ide skutočne dobre s objektovo orientovaným. Scala je v tomto zmysle funkčný jazyk. Súhlasím s tým, že iba použitie lambd neznamená, že jazyk bude funkčný; je to nevyhnutné, ale nestačí.“

Vývojár Clojure Rich Hickey, ktorý je tiež CTO v systémovom vývojárovi Cognitect, súhlasí s hlavným tvrdením blogu Clojure. "Článok správne poukazuje na to, že funkcie prvej triedy alebo vyššieho poriadku nie sú to, o čom je funkčné programovanie. Funkčné programovanie je o tom, aby sa programovanie viac podobalo matematike," hovorí. To znamená, že stále zostáva spektrum definícií pre funkčné programovanie, hovorí Hickey.

Stephens od spoločnosti Microsoft vidí, že funkčné možnosti presahujú iba jazyky. „Najpopulárnejším funkčným programovacím jazykom na svete je Excel,“ hovorí. Jednoduchý pracovný hárok programu Excel môže obsahovať stĺpec s hromadou hodnôt, napríklad A1 X 2. „To je čistá funkcia pre A1 a A1 sa nemení, takže počítate hodnoty z existujúcich údajov.“

Hovorí, že technológia Microsoft Language-Integrated Query (Linq) poskytuje aj funkčné programovanie. „Takmer každý programovací jazyk teraz využíva funkcie z funkčných jazykov.“

Stephens uvádza nemenné dáta ako kľúčové pre funkčné programovanie. Súbežnosť - programy s viacerými vláknami pracujúcimi na dátach súčasne - tiež profituje z nemenných dát, poznamenáva. „Hovoríme [F #] jazyk s prvou funkčnosťou, pretože pochádza z dedičstva iných jazykov.“ Podporuje tiež objektovo orientované programovanie a podľa neho pracuje s jazykmi C # a Visual Basic.

Clojure's Hickey vníma prijatie funkčných jazykov ako reakciu na zvyšujúci sa tlak, ktorému čelia vývojári, ktorí musia v dnešnej dobe čeliť väčším problémom. "Aby to mohli urobiť, musia znížiť náhodnú zložitosť svojich programov. Teraz sa všeobecne uznáva, že všadeprítomný stav a vedľajšie účinky sú primárnym zdrojom zložitosti a chýb v programoch," hovorí Hickey. „Aj keď je možné znížiť úroveň stavu v programoch napísaných v nefunkčných jazykoch, je to dramaticky jednoduchšie a rýchlejšie v jazyku, ktorý robí funkčné programovanie idiomatickým a predvoleným.“

Čo ďalej s tromi najdôležitejšími funkčnými jazykmi

Trinásťročná Scala je primárnym jazykom v oblasti dátovej vedy, hovorí zakladateľ Scaly Odersky. Podporovaný na JVM má odhadovaných 400 000 až 500 000 používateľov. Plány z krátkodobého hľadiska požadujú jeho optimalizáciu pre Java 8, v ktorej by inštrukcie bytecode z najnovšej štandardnej aktualizácie Java umožnili Scale generovať efektívnejší kód.

Z dlhodobého hľadiska získa Scala systém vyčisteného typu, bezpečnejšie makra a väčšiu podporu platforiem s uvažovaným koncovým serverom kompilátora LLVM. Plánujú sa ďalšie vylepšenia na zlepšenie použiteľnosti Scala.js na kompiláciu Scala do JavaScriptu.

Deväťročný Clojure, tiež založený na JVM, sa podľa Hickeyho používal vo finančníctve, maloobchode, softvéri a zábave. „Aplikuje sa v rôznych aplikačných oblastiach, ako sú spracovanie a analýza transakcií, veľké dáta, sieťové operácie, prediktívna analýza, vyhľadávanie, zabezpečenie a spotrebiteľské ponuky.“

11-ročný F # založil Microsoft Research Don Syme a dohliada naň F # Foundation. Používa sa v širokej škále aplikácií a beží na systémoch Linux, OS X, Android, iOS, Windows a prehľadávačoch. „Teraz pracujeme na tom, aby to fungovalo s .Net Core,“ otvorenou, multiplatformovou modulárnou verziou .Net Framework, hovorí Stephens. Na kresliacej doske je interpolácia reťazcov, ktorá uľahčuje písanie reťazcov.

$config[zx-auto] not found$config[zx-overlay] not found