Skip to main content

Hva er funksjonell programmering?

Funksjonell programmering er et programmeringsparadigme der beregningsbasen er evaluering av uttrykk.Noen egenskaper er bruken av høyere ordenfunksjoner, referansetransparens og lat evaluering.Fordelene med programmeringsstilen inkluderer at programmene er enkle å lese, er veldig pålitelige og kan deles inn i komponenter.Ulemper er at beregningene kan være trege og stilen og syntaks er helt forskjellige fra andre vanlige programmeringsstiler.Den funksjonelle programmeringsstilen er oftere omfavnet av akademikere enn av fagfolk.

Som navnet antyder, er funksjoner en grunnleggende del av dette programmeringsparadigmet.Funksjoner kan nestes innenfor andre funksjoner, kalt høyere ordenfunksjoner, og hver høyere ordenfunksjon kan deles inn i byggesteinfunksjoner som er enkle å forstå og feilsøke.Eksempler på noen funksjoner med høyere orden er kart og reir.Funksjonskartet tar en funksjon f og listen 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, variabelen x, og antall iterasjoner: reir [f, x, 3] ' f (f (f (x))).

Ren funksjonell programmering tar en inngang og returnerer en utgang uten noen gang å endre en variabel tilstand.Med andre ord, en funksjon med samme inngang vil alltid gi de samme resultatene uavhengig av hva som har skjedd tidligere i programmet.Dette kalles referansesidens gjennomsiktighet.Siden matematiske funksjoner er referansende gjennomsiktige, er funksjonell programmering intuitiv for mange matematikere, ingeniører og forskere.

Referensiell gjennomsiktighet av funksjoner betyr at rekkefølgen på funksjonsevaluering ikke er viktig.Derfor trenger funksjoner ikke evalueres før resultatene er nødvendige, noe som kalles lat evaluering.Dette er i full kontrast med imperativ programmering, der et program begynner med den første kommandoen og går gjennom listen til forrige kommando.Lat evaluering hopper over deler av programmet som ikke følger logisk eller er overflødige, som automatisk optimaliserer programmet og kan redusere datatiden.

Funksjonell programmering har mange fordeler i forhold til andre programmeringsparadigmer.Funksjoner med klare innganger og utganger er enkle å lese og forstå.Når en funksjon er grundig feilsøkte, kan den brukes pålitelig i andre applikasjoner.Multicore -maskiner kan være i stand til å beregne funksjoner som blir evaluert uavhengig parallelt, og forbedrer ytelsen til programmer drastisk.

Dessverre gir ikke alle programmer seg til parallell databehandling, og databehandlingsfunksjonsprogrammer kan være ganske trege.Funksjonelle programmer er avhengige av rekursjon, noe som ofte er mindre effektivt at bruk av tradisjonelle løkker eller iterasjonsmetoder.Faktisk kan funksjonell programmering være ganske klønete og vanskelig å lære, siden 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 problemer i virkelige verden.Noen rene språk er Haskell og Erlang.Mathematica er spesialisert i symbolsk matematikk, R er spesialisert i statistikk og J er spesialisert i økonomisk analyse.Multiparadigm -språk som Scala og F# støtter både funksjonell programmering og andre programmeringsstiler.