Skip to main content

Hvad er funktionel programmering?

Funktionel programmering er et programmeringsparadigme, hvor beregningsbasen er evaluering af udtryk.Nogle egenskaber er brugen af funktioner med højere orden, referencemæssig gennemsigtighed og doven evaluering.Fordelene ved programmeringsstil inkluderer, at programmer er lette at læse, er meget pålidelige og kan opdeles i komponenter.Ulemper er, at beregninger kan være langsomme, og stilen og syntaks er helt forskellige fra andre almindelige programmeringsstile.Den funktionelle programmeringsstil omfavnes oftere af akademikere end af datalogi -fagfolk.

Som navnet antyder er funktioner en grundlæggende del af dette programmeringsparadigme.Funktioner kan være indlejret i andre funktioner, kaldet højere orden funktioner, og hver funktion af højere orden kan opdeles i byggestenfunktioner, der er lette at forstå og debug.Eksempler på nogle funktioner med højere orden er kort og reden.Funktionskortet tager en funktion F og listen over variabler, for eksempel (x, y, z) og giver resultatet i en liste: kort [f, (x, y, z)] ' (f (x), f(y), f (z)).Nest tager funktionen f, variablen x og antallet af iterationer: rede [f, x, 3] ' f (f (x))).

Pure funktionel programmering tager et input og returnerer en output uden nogensinde at ændre en variabels tilstand.Med andre ord vil en funktion med samme input altid give de samme resultater uanset hvad der er sket tidligere i programmet.Dette kaldes referencemæssig gennemsigtighed.Da matematiske funktioner er gennemsigtigt gennemsigtigt, er funktionel programmering intuitiv for mange matematikere, ingeniører og forskere.

Funktionernes referencemæssige gennemsigtighed betyder, at rækkefølgen af funktionsevaluering ikke er vigtig.Derfor behøver funktioner ikke evalueres, før deres resultater er nødvendige, som kaldes doven evaluering.Dette er i fuldstændig kontrast til imperativ programmering, hvor et program begynder med den første kommando og løber gennem listen indtil den sidste kommando.Lazy evaluering springer over dele af programmet, der ikke følger logisk eller er overflødige, som automatisk optimerer programmet og kan reducere computertid.

Funktionel programmering har mange fordele i forhold til andre programmeringsparadigmer.Funktioner med klare input og output er lette at læse og forstå.Når en funktion er grundigt fejlsøgt, kan den bruges pålideligt i andre applikationer.Multicore -maskiner kan muligvis beregne funktioner, der evalueres uafhængigt af parallelt, drastisk forbedring af programmernes ydelse.

Desværre egner ikke alle programmer sig til parallel computing, og computing af funktionelle programmer kan være temmelig langsomme.Funktionelle programmer er meget afhængige af rekursion, hvilket ofte er mindre effektivt end at bruge traditionelle sløjfer eller iterationsmetoder.Faktisk kan funktionel programmerings.Nogle rene sprog er Haskell og Erlang.Mathematica er specialiseret i symbolsk matematik, R er specialiseret i statistik, og J er specialiseret i økonomisk analyse.Multiparadigmsprog såsom Scala og F# understøtter både funktionel programmering og andre programmeringsstile.