Hvad er funktionel programmering? Tutorial med eksempel

Hvad er funktionel programmering?

Funktionel programmering (også kaldet FP) er en måde at tænke softwarekonstruktion på ved at skabe rene funktioner. Det undgår koncepter om delt tilstand, mutable data observeret i objektorienteret programmering.

Funktionelle sprog lægger vægt på udtryk og erklæringer frem for udførelsen af ​​udsagn. Derfor, i modsætning til andre procedurer, der afhænger af en lokal eller global tilstand, afhænger værdioutput i FP kun af de argumenter, der sendes til funktionen.

Karakteristika for funktionel programmering

  • Funktionel programmeringsmetode fokuserer på resultater, ikke processen
  • Der lægges vægt på, hvad der skal beregnes
  • Data er uforanderlige
  • Funktionel programmering Dekomponér problemet i 'funktioner
  • Det er bygget på begrebet matematiske funktioner, som bruger betingede udtryk og rekursion til at udføre beregningen
  • Det understøtter ikke iteration som loop-sætninger og betingede sætninger som If-Else

Historien om funktionel programmering

  • Grundlaget for funktionel programmering er Lambda Calculus. Det blev udviklet i 1930'erne til den funktionelle anvendelse, definition og rekursion
  • LISP var det første funktionelle programmeringssprog. McCarthy designede det i 1960
  • I slutningen af ​​70'erne definerede forskere ved University of Edinburgh ML(Meta Language)
  • I begyndelsen af ​​80'erne tilføjede Hope-sprog algebraiske datatyper til rekursion og ligningsræsonnement
  • I år 2004 Innovation af funktionelt sprog 'Scala.'

Funktionelle programmeringssprog

Formålet med ethvert FP-sprog er at efterligne de matematiske funktioner. Imidlertid er den grundlæggende beregningsproces anderledes i funktionel programmering.

Her er nogle af de mest fremtrædende funktionelle programmeringssprog:

  • Haskell
  • SMG
  • Clojure
  • Scala
  • erlang
  • Rens
  • F#
  • ML/OCaml Lisp / Scheme
  • XSLT
  • SQL
  • Mathematica

Grundlæggende funktionel programmeringsterminologi og Concepts

Grundlæggende funktionel programmeringsterminologi og Concepts

Uforanderlige data

Uforanderlige data betyder, at du nemt skal kunne oprette datastrukturer i stedet for at ændre dem, der allerede eksisterer.

Referencegennemsigtighed

Funktionelle programmer skal udføre operationer, som om det var for første gang. Så du vil vide, hvad der kan være sket eller ikke er sket under programmets udførelse, og dets bivirkninger. I FP-term kaldes det Referentiel gennemsigtighed.

modularitet

Modulært design øger produktiviteten. Små moduler kan kodes hurtigt og har større chance for genbrug, hvilket helt sikkert fører til hurtigere udvikling af programmer. Ud over det kan modulerne testes separat, hvilket hjælper dig med at reducere den tid, der bruges på enhedstest og fejlfinding.

Maintainability

Vedligeholdelse er et simpelt udtryk, hvilket betyder, at FP-programmering er nemmere at vedligeholde, da du ikke behøver at bekymre dig om ved et uheld at ændre noget uden for den givne funktion.

Førsteklasses funktion

'Førsteklasses funktion' er en definition, der tilskrives programmeringssprogsenheder, der ikke har nogen begrænsning på deres brug. Derfor kan førsteklasses funktioner dukke op overalt i programmet.

Lukning

Lukningen er en indre funktion, som kan få adgang til variabler af overordnede funktioner, selv efter at den overordnede funktion er udført.

Funktioner af højere orden

Funktioner af højere orden tager enten andre funktioner som argumenter eller returnerer dem som resultater.

Funktioner af højere orden tillader delvise applikationer eller currying. Denne teknik anvender en funktion til sine argumenter et ad gangen, da hver applikation returnerer en ny funktion, som accepterer det næste argument.

Ren funktion

En 'ren funktion' er en funktion, hvis input er erklæret som input, og ingen af ​​dem skal skjules. Udgangene er også erklæret som output.

Rene funktioner virker på deres parametre. Det er ikke effektivt, hvis man ikke returnerer noget. Desuden giver det samme output for de givne parametre

Eksempel:

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

Urene funktioner

Uren fungerer præcis i det modsatte af ren. De har skjulte input eller output; det kaldes uren. Urene funktioner kan ikke bruges eller testes isoleret, da de har afhængigheder.

Eksempel

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

Funktionssammensætning

Funktionssammensætning er at kombinere 2 eller flere funktioner for at lave en ny.

Delte stater

Delte tilstande er et vigtigt koncept i OOP-programmering. Grundlæggende er det at tilføje egenskaber til objekter. For eksempel, hvis en harddisk er et objekt, kan lagerkapacitet og diskstørrelse tilføjes som egenskaber.

Bivirkninger

Bivirkninger er enhver tilstandsændring, der forekommer uden for en kaldt funktion. Det største mål med ethvert FP-programmeringssprog er at minimere bivirkninger ved at adskille dem fra resten af ​​softwarekoden. I FP-programmering er det vigtigt at fjerne bivirkninger fra resten af ​​din programmeringslogik.

Fordelene ved funktionel programmering

  • Giver dig mulighed for at undgå forvirrende problemer og fejl i koden
  • Lettere at teste og udføre enhedstest og fejlfinde FP-kode.
  • Parallel behandling og samtidighed
  • Hot code-implementering og fejltolerance
  • Tilbyder bedre modularitet med en kortere kode
  • Øget produktivitet hos udvikleren
  • Understøtter indlejrede funktioner
  • Funktionelle konstruktioner som Lazy Map & Lists osv.
  • Tillader effektiv brug af Lambda Calculus

Begrænsninger ved funktionel programmering

  • Funktionelt programmeringsparadigme er ikke let, så det er svært at forstå for begynderen
  • Svært at vedligeholde, da mange objekter udvikler sig under kodningen
  • Kræver masser af hån og omfattende miljøopsætning
  • Genbrug er meget kompliceret og skal konstant omstruktureres
  • Objekter repræsenterer muligvis ikke problemet korrekt

Funktionel programmering vs. objektorienteret programmering

Funktionel programmering OOP
FP bruger uforanderlige data. OOP bruger Mutable data.
Følger deklarativ programmeringsbaseret model. Følger imperativ programmeringsmodel.
Det, den fokuserer på, er: "Det, du laver. i programmet." Det, den fokuserer på, er "Hvordan du laver din programmering."
Understøtter parallel programmering. Ingen understøttelse af parallel programmering.
Dens funktioner har ingen bivirkninger. Metoden kan give mange bivirkninger.
Flowstyring udføres ved hjælp af funktionskald & funktionskald med rekursion. Flowkontrolproces udføres ved hjælp af loops og betingede erklæringer.
Udførelsesrækkefølgen af ​​udsagn er ikke særlig vigtig. Udførelsesrækkefølgen af ​​udsagn er vigtig.
Understøtter både "abstraktion over data" og "abstraktion over adfærd." Understøtter kun "Abstraktion over data".

Konklusion

  • Funktionel programmering eller FP er en måde at tænke softwarekonstruktion på baseret på nogle grundlæggende definerende principper
  • Funktionelle programmeringskoncepter fokuserer på resultater, ikke på processen
  • Formålet med ethvert FP-sprog er at efterligne de matematiske funktioner
  • Nogle mest fremtrædende funktionelle programmeringssprog: 1)Haskell 2)SM 3) Clojure 4) Scala 5) Erlang 6) Clean
  • En 'ren funktion' er en funktion, hvis input er erklæret som input, og ingen af ​​dem skal skjules. Udgangene er også erklæret som output.
  • Uforanderlige data betyder, at du nemt skal kunne oprette datastrukturer i stedet for at ændre dem, der allerede eksisterer
  • Giver dig mulighed for at undgå forvirrende problemer og fejl i koden
  • Funktionel kode er ikke let, så det er svært at forstå for begynderen
  • FP bruger uforanderlige data, mens OOP bruger foranderlige data