Funkcijsko programiranje

Izvor: Hrvatska internetska enciklopedija
Inačica 333870 od 17. studeni 2021. u 22:18 koju je unio WikiSysop (razgovor | doprinosi) (Bot: Automatska zamjena teksta (-{{cite web +{{Citiranje weba))
(razl) ←Starija inačica | vidi trenutačnu inačicu (razl) | Novija inačica→ (razl)
Prijeđi na navigaciju Prijeđi na pretraživanje

Funkcijsko programiranje je programska paradigma koja tretira računanje kao evaluaciju matematičkih funkcija i izbjegava stanje i mutabilne podatke. Naglašava primjenu funkcija, kao suprotnost stilu imperativnog programiranja koji naglašava promjene u stanju.[1]

Šira koncepcija funkcijskog programiranja jednostavno definira skup zajedničkih briga i tema mjesto popisa distinkcija od ostalih paradigmi. Često se važnima smatraju funkcije višeg reda i prvorazredne funkcije, zatvaranja i rekurzija. Druga uobičajena svojstva funkcijskih programskih jezika su kontinuacije, Hindley-Milner sustavi inference tipova, nestriktne evaluacijske strategije (uključujući i "lijenost") te monade.

Funkcijski jezici uključuju APL, Erlang, Haskell, Lisp, ML i Scheme (u abecednom poretku).

Funkcijski programski jezici, napose "čisti funkcijski", su često istaknuti u akademskoj zajednici, za razliku od komercijalnog razvoja programske podrške. U drugu ruku, istaknuti funkcijski jezici korišteni u industriji i komercijalnim aplikacijama uključuju Erlang (konkurentne aplikacije),[2], R (statistika)[3], Mathematica (simbolička matematika),[4] Haskell,[5][6] ML,[7] J i K (financijska analiza), te domenski-specifične programske jezike kao što je XSLT.[8][9]

Lambda račun je osnovica većine modela funkcijskog programiranja.

Izvori

  1. Hudak, Paul (September 1989). Conception, evolution, and application of functional programming languages, ACM Computing Surveys, 21(3), 359-411 ID: hudak-1989-conception_evolution_and_application_of_functional_programming_languages.
  2. . Who uses Erlang for product development? ID: who_uses_erlang_for_product_development. #"The largest user of Erlang is (surprise!) Ericsson. Ericsson uses it to #write software used in telecommunications systems. Many (dozens) projects have #used it, a particularly large one is the extremely scalable AXD301 ATM switch." Other commercial users listed as part of the FAQ include: Nortel, Deutsche Flugsicherung (the German national air traffic control organisation), and T-Mobile.
  3. The useR! 2006 conference schedule includes papers on the commercial use of R
  4. Department of Applied Math, University of Colorado. Functional vs. Procedural Programming Language ID: department_of_applied_math_university_of_colorado-functional_vs_procedural_programming_language.
  5. . Haskell and the Linspire Toolchain ID: haskell_and_the_linspire_toolchain.
  6. . Why Functional Programming Matters to Credit Suisse ID: why_functional_programming_matters_to_credit_suisse.
  7. . Caml Trader: Adventures of a Functional Programmer on Wall Street ID: caml_trader_adventures_of_a_functional_programmer_on_wall_street.
  8. Dimitre Novatchev. The Functional Programming Language XSLT - A proof through examples ID: dimitre_novatchev-the_functional_programming_language_xslt_a_proof_through_examples.
  9. David Mertz. XML Programming Paradigms (part four): Functional Programming approached to XML processing ID: david_mertz-xml_programming_paradigms_part_four_functional_programming_approached_to_xml_processing.