Programació funcional
From Wikipedia, the free encyclopedia
En informàtica, la programació funcional[1] és un paradigma de programació que tracta les computacions com un procés d'aplicació de funcions, evitant les dades mudables amb els seus canvis d'estat. La programació funcional es fonamenta en el càlcul lambda, un sistema formal desenvolupat a la dècada del 1930.[2] La diferència entre funció matemàtica i el concepte de funció emprat en la programació imperativa és que les funcions imperatives tenen efectes laterals, canviant el valor d'objectes ja calculats, mostrant una manca d'integritat referencial, doncs una mateixa expressió pot tenir diferents valors en moments diferents, depenen de l'estat d'execució del programa.
Els llenguatges de programació funcional, sobretot els funcionalment purs, han estat esperonats en cercles universitaris més que no en el sector comercial. Tanmateix n'hi ha amb un notable ús comercial, per l'ús industrial i educatiu, entre els quals s'inclouen Common Lisp, Scheme,[3][4][5][6] Clojure, Wolfram Language,[7][8] Racket,[9] Erlang,[10][11][12]Elixir,[13] OCaml,[14][15][16] Haskell,[16][17] i F Sharp.[18][19] La programació funcional també és clau per a alguns llenguatges que han tingut èxit en dominis específics com JavaScript al web,[20] R en estadística,[21][22][22] J, K i Q en l'anàlisi financer, i XQuery/XSLT per XML.[23][24][24] Els llenguatges declaratius específics com SQL and Lex/Yacc utiltizen alguns elements de la programació funcional, com ara no permetre valors mutables.[25][26] A més, molts altres llenguatges de programació admeten la programació en un estil funcional o han implementat característiques de la programació funcional, com ara C++11, C Sharp,[27] Kotlin,[28] Perl,[29] PHP,[30] Python,[31] Go,[32] Rust,[33] Raku,[34] Scala,[35] i Java (des del Java 8).[36]