Què és la programació funcional? Tutorial amb exemple

Què és la programació funcional?

La programació funcional (també anomenada FP) és una forma de pensar sobre la construcció de programari creant funcions pures. Evita els conceptes d'estat compartit, dades mutables observades a la programació orientada a objectes.

Els llenguatges funcionals empatitzen en expressions i declaracions en lloc d’executar declaracions. Per tant, a diferència d'altres procediments que depenen d'un estat local o global, el valor de sortida a FP depèn només dels arguments que es passin a la funció.

En aquest tutorial, aprendreu

Característiques de la programació funcional

  • El mètode de programació funcional se centra en els resultats, no en el procés
  • Es posa èmfasi en el que es vol calcular
  • Les dades són immutables
  • Programació funcional Descomposeu el problema en funcions
  • Es basa en el concepte de funcions matemàtiques que utilitza expressions condicionals i recursivitat per realitzar el càlcul
  • No admet la iteració com a sentències de bucle i sentències condicionals com If-Else

Història de la programació funcional

  • La base per a la programació funcional és el càlcul Lambda. Es va desenvolupar a la dècada de 1930 per a l'aplicació funcional, la definició i la recursivitat
  • LISP va ser el primer llenguatge de programació funcional. McCarthy el va dissenyar el 1960
  • A finals dels anys 70, investigadors de la Universitat d’Edimburg van definir el ML (Meta Language)
  • A principis dels 80, el llenguatge Hope afegeix tipus de dades algebraiques per a la recursivitat i el raonament equacional
  • L'any 2004 Innovació del llenguatge funcional 'Scala'.

Llenguatges de programació funcionals

L'objectiu de qualsevol llenguatge FP és imitar les funcions matemàtiques. No obstant això, el procés bàsic de càlcul és diferent en la programació funcional.

Aquí hi ha alguns llenguatges de programació funcional més destacats:

  • Haskell
  • SML
  • Clojure
  • Escala
  • Erlang
  • Net
  • F #
  • ML / OCaml Lisp / Scheme
  • XSLT
  • SQL
  • Mathematica

Terminologia i conceptes bàsics de programació funcional

Dades immutables

Dades immutables significa que podeu crear fàcilment estructures de dades en lloc de modificar-ne d’altres que ja existeixen.

Transparència referencial

Els programes funcionals haurien de realitzar operacions com si fos per primera vegada. Per tant, sabreu què pot passar o no durant l'execució del programa i els seus efectes secundaris. En terme FP es denomina transparència referencial.

Modularitat

El disseny modular augmenta la productivitat. Els mòduls petits es poden codificar ràpidament i tenen més possibilitats de reutilització, cosa que segurament condueix a un desenvolupament més ràpid dels programes. A part, els mòduls es poden provar per separat, cosa que us ajuda a reduir el temps dedicat a la prova i depuració d’unitats.

Manteniment

Manteniment és un terme senzill que significa que la programació FP és més fàcil de mantenir, ja que no cal preocupar-se per canviar accidentalment res fora de la funció donada.

Funció de primera classe

'Funció de primera classe' és una definició, atribuïda a entitats de llenguatge de programació que no tenen cap restricció en el seu ús. Per tant, les funcions de primera classe poden aparèixer a qualsevol lloc del programa.

Tancament

El tancament és una funció interna que pot accedir a variables de la funció pare, fins i tot després d'executar-la.

Funcions d’ordre superior

Les funcions d’ordre superior prenen altres funcions com a arguments o les retornen com a resultats.

Les funcions d’ordre superior permeten aplicacions parcials o corrent. Aquesta tècnica aplica una funció als seus arguments d’un en un, ja que cada aplicació torna una nova funció que accepta el següent argument.

Funció pura

Una 'funció pura' és una funció les entrades de les quals es declaren com a entrades i que cap d'elles s'hauria d'ocultar. Les sortides també es declaren com a sortides.

Les funcions pures actuen sobre els seus paràmetres. No és eficient si no es retorna res. A més, ofereix la mateixa sortida per als paràmetres donats

Exemple:

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

Funcions impures

Funcions impures exactament al contrari de pur. Tenen entrades o sortides ocultes; es diu impur. Les funcions impures no es poden utilitzar ni provar aïlladament, ja que tenen dependències.

Exemple

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

Funció Composició

La composició de funcions combina dues o més funcions per crear-ne una de nova.

Estats compartits

Els estats compartits són un concepte d’importància en la programació de POO. Bàsicament, s’afegeixen propietats als objectes. Per exemple, si un disc dur és un objecte, la capacitat d'emmagatzematge i la mida del disc es poden afegir com a propietats.

Efectes secundaris

Els efectes secundaris són qualsevol canvi d'estat que es produeix fora d'una funció anomenada. L’objectiu més gran de qualsevol llenguatge de programació FP és minimitzar els efectes secundaris, separant-los de la resta del codi de programari. A la programació FP És vital eliminar els efectes secundaris de la resta de la vostra lògica de programació.

Els avantatges de la programació funcional

  • Permet evitar problemes i errors confusos al codi
  • És més fàcil provar i executar proves d'unitat i depurar el codi FP.
  • Processament i concurrència paral·lels
  • Desplegament de codi actiu i tolerància a fallades
  • Ofereix una millor modularitat amb un codi més curt
  • Increment de la productivitat del desenvolupador
  • Admet funcions imbricades
  • Construccions funcionals com ara mapes i llistes mandrosos, etc.
  • Permet un ús eficaç del càlcul Lambda

Limitacions de la programació funcional

  • El paradigma de programació funcional no és fàcil, de manera que és difícil d’entendre per al principiant
  • És difícil de mantenir, ja que evolucionen molts objectes durant la codificació
  • Necessita molta burla i una àmplia configuració ambiental
  • La reutilització és molt complicada i necessita una refactorització constant
  • És possible que els objectes no representin el problema correctament

Programació funcional versus programació orientada a objectes

Programació funcional

OBERT

FP utilitza dades immutables.

OOP utilitza dades mutables.

Segueix el model basat en la programació declarativa.

Segueix el model de programació imperativa.

El que es centra és en: 'El que esteu fent. al programa. '

El que se centra és en 'Com estàs fent la teva programació'.

Admet la programació en paral·lel.

No hi ha suports per a la programació en paral·lel.

Les seves funcions no tenen efectes secundaris.

El mètode pot produir molts efectes secundaris.

El control de flux es realitza mitjançant trucades de funció i trucades de funció amb recursivitat.

El procés de control de flux es realitza mitjançant bucles i sentències condicionals.

L’ordre d’execució de les declaracions no és molt important.

L’ordre d’execució de les declaracions és important.

Admet 'Abstracció sobre les dades' i 'Abstracció sobre el comportament'.

Només admet 'Abstracció sobre dades'.

Conclusió

  • La programació funcional o FP és una forma de pensar sobre la construcció de programari basada en alguns principis definitius fonamentals
  • Els conceptes de programació funcional se centren en els resultats, no en el procés
  • L'objectiu de qualsevol llenguatge FP és imitar les funcions matemàtiques
  • Alguns llenguatges de programació funcional més destacats: 1) Haskell 2) SM 3) Clojure 4) Scala 5) Erlang 6) Net
  • Una 'funció pura' és una funció les entrades de les quals es declaren com a entrades i que cap d'elles s'hauria d'ocultar. Les sortides també es declaren com a sortides.
  • Dades immutables significa que podeu crear fàcilment estructures de dades en lloc de modificar-ne d’altres que ja existeixen
  • Permet evitar problemes i errors confusos al codi
  • El codi funcional no és fàcil, de manera que és difícil d’entendre per al principiant
  • FP utilitza dades immutables mentre que OOP fa servir dades mutables