Hva er funksjonell programmering?

November 20  by Eliza

Funksjonell programmering er et programmeringsparadigme der base av beregningen er evaluering av uttrykk. Noen kjennetegn er bruk av overordnede funksjoner, referensiell åpenhet og lat evaluering. Fordelene med programmering stil inkluderer at programmer som er enkle å lese, er svært pålitelig og kan deles opp i komponenter. Ulempene er at beregninger kan være treg og stil og syntaks er helt forskjellig fra andre vanlige programmerings stiler. Funksjonell programmering stil er oftere omfavnet av akademikere enn ved informatikk fagfolk.

Som navnet antyder, funksjoner er en fundamental del av dette programmeringsparadigme. Funksjoner kan være nestet i andre funksjoner, kalt høyere ordens funksjoner, og hver høyere ordens funksjon kan bli brutt ned i byggestein funksjoner som er enkle å forstå og feilsøke. Eksempler på noen høyere ordens funksjoner er Kart og Nest. Funksjonskart tar en funksjon F, og en liste over variabler, for eksempel (x, y, z), og gir resultatet i en liste: Kart [F, (x, y, z)] = (F (x), F (y), F (z)). Nest tar funksjonen F, den variable x, og antallet iterasjoner: Nest [F, x, 3] = F (F (F (x))).

Pure funksjonell programmering tar en inngang og returnerer en utgang uten noen gang å endre en variabelA € ™ s tilstand. Med andre ord vil en funksjon med den samme inngang alltid gi samme resultat uansett hva som har forekommet tidligere i programmet. Dette kalles referanse åpenhet. Siden matematiske funksjoner er referentially gjennomsiktig, er funksjonell programmering intuitivt for mange matematikere, ingeniører og forskere.

Det referensielle åpenhet av funksjoner betyr at rekkefølgen av funksjon evaluering er ikke viktig. Derfor fungerer ikke behøver å bli undersøkt før deres resultater er nødvendig, noe som kalles lat evaluering. Dette er i fullstendig kontrast med imperativ programmering, hvor et program starter med den første kommando og går gjennom listen til den siste kommandoen. Lat evaluering hopper over deler av programmet som ikke følger logisk eller er overflødige, som automatisk optimaliserer programmet og kan redusere regnetid.

Funksjonell programmering har mange fordeler fremfor andre programmerings paradigmer. Funksjoner med tydelige innganger og utganger er lett å lese og forstå. Når en funksjon er grundig feilsøkt, kan den uten videre brukes i andre applikasjoner. Multicore-maskiner kan være i stand til å beregne funksjoner som evalueres uavhengig parallelt, drastisk forbedre ytelsen til programmer.

Dessverre ikke alle programmer egner seg til parallell databehandling, og databehandling funksjonelle programmer kan være ganske treg. Funksjonelle programmer avhengige av rekursjon, som ofte er mindre effektiv at bruk av tradisjonelle sløyfer eller iterasjonsmetoder. Faktisk kan funksjonell programmering være ganske klønete og vanskelig å lære fordi det ikke ligner andre mer vanlige paradigmer som objektorientert programmering.

Akademikere har en tendens til å favorisere funksjonell programmering siden det gir en klar og forståelig måte å programmere komplekse reelle problemstillinger. Noen rene språk er Haskell og Erlang. Mathematica er spesialisert i symbolske matematikk, er R spesialisert seg på statistikk og J er spesialisert i økonomisk analyse. Multiparadigm språk som Scala og F # støtter både funksjonell programmering og andre programmeringsstiler.

  • Funksjonell programmering er identifisert av sin klare innganger og utganger.