Skip to main content

Vad är funktionell programmering?

Funktionell programmering är ett programmeringsparadigm där beräkningsbasen är utvärderingen av uttryck.Vissa egenskaper är användningen av funktioner med högre ordning, referenstransparens och lat utvärdering.Fördelarna med programmeringsstilen inkluderar att program är lätta att läsa, är mycket pålitliga och kan delas in i komponenter.Nackdelar är att beräkningar kan vara långsamma och stilen och syntaxen skiljer sig helt från andra vanliga programmeringsstilar.Den funktionella programmeringsstilen omfattas oftare av akademiker än av datavetenskapliga yrkesverksamma.

Som namnet antyder är funktioner en grundläggande del av detta programmeringsparadigm.Funktioner kan kapslas in i andra funktioner, kallas högre ordningsfunktioner, och varje högre ordning kan delas upp i byggblockfunktioner som är lätta att förstå och felsöka.Exempel på vissa funktioner med högre ordning är karta och bo.Funktionskartan tar en funktion f och listan över variabler, till exempel (x, y, z) och ger resultatet i en lista: karta [f, (x, y, z)] ' (f (x), f(y), f (z)).Nest tar funktionen f, variabeln x och antalet iterationer: bo [f, x, 3] ' f (f (f (x))).

Ren funktionell programmering tar en inmatning och returnerar en utgång utan att någonsin ändra en variabel.Med andra ord, en funktion med samma input kommer alltid att ge samma resultat oavsett vad som tidigare har inträffat i programmet.Detta kallas referenstransparens.Eftersom matematiska funktioner är hänvisande till transparent är funktionell programmering intuitiv för många matematiker, ingenjörer och forskare.

Funktionens referensintressens innebär att ordningen för funktionsutvärdering inte är viktig.Därför behöver funktioner inte utvärderas förrän deras resultat behövs, vilket kallas lat utvärdering.Detta står i fullständig kontrast med imperativ programmering, där ett program börjar med det första kommandot och går igenom listan fram till det sista kommandot.Lat utvärdering hoppar över delar av programmet som inte följer logiskt eller är överflödiga, vilket automatiskt optimerar programmet och kan minska datortiden.

Funktionell programmering har många fördelar jämfört med andra programmeringsparadigmer.Funktioner med tydliga ingångar och utgångar är enkla att läsa och förstå.När en funktion är grundligt felsökad kan den användas pålitligt i andra applikationer.Multicore -maskiner kanske kan beräkna funktioner som utvärderas oberoende parallellt, drastiskt förbättra programens prestanda.

Tyvärr kan inte alla program själva lånar sig till parallell datoranvändning och datorfunktionsprogram kan vara ganska långsamma.Funktionella program förlitar sig starkt på rekursion, vilket ofta är mindre effektivt än att använda traditionella slingor eller iterationsmetoder.Faktum är att funktionell programmering kan vara ganska klumpig och svår att lära sig eftersom det inte liknar andra vanligare paradigmer som objektorienterad programmering.

Akademiker tenderar att gynna funktionell programmering eftersom det ger ett tydligt och förståeligt sätt att programmera komplexa verkliga problem med verkliga världar.Vissa rena språk är Haskell och Erlang.Mathematica är specialiserad på symbolisk matematik, R är specialiserad på statistik och J är specialiserad på ekonomisk analys.Multiparadigmspråk som Scala och F# stöder både funktionell programmering och andra programmeringsstilar.