Det vigtigste forskel mellem funktionel programmering og imperativ programmering er, at funktionel programmering betragter beregningerne som matematiske funktioner og undgår at ændre tilstand og mutable data, mens imperativ programmering bruger udsagnene, der ændrer programtilstanden.
Et programmeringsparadigme giver en stil til at opbygge strukturen og elementerne i et computerprogram. Programmeringsparadigmerne hjælper med at klassificere programmeringssprog baseret på deres funktioner. Et programmeringssprog kan have indflydelse på flere paradigmer. I objektorienteret paradigme er programmet struktureret ved hjælp af objekter, og objekterne videresender beskeder ved hjælp af metoder. Den logiske programmering kan udtrykke beregning udelukkende med hensyn til matematisk logik. Yderligere to programmeringsparadigmer er funktionel programmering og imperativ programmering. Funktionel programmering tillader at udtrykke beregninger som evaluering af matematiske funktioner. Imperativ programmering indeholder udsagn, der eksplicit ændrer hukommelsens tilstand. Denne artikel diskuterer forskellen mellem funktionel programmering og imperativ programmering.
1. Oversigt og nøgleforskel
2. Hvad er funktionel programmering
3. Hvad er vigtig programmering
4. Ligheder mellem funktionel programmering og imperativ programmering
5. Sammenligning side ved side - Funktionel programmering vs imperativ programmering i tabelform
6. Resume
Funktionel programmering er baseret på matematik. Det centrale princip bag funktionel programmering er, at al beregningen betragtes som en kombination af separate matematiske funktioner. En matematisk funktion kortlægger input til output. Antag, at der er en funktion kaldet f (x) = x * x. X-værdien 1 er kortlagt til output 1. x-værdien 2 kortlægges til output 4. x-værdien 3 er kortlagt til output 9 og så videre.
Figur 01: Eksempel på funktionelt programmeringssprog - Haskell
I funktionel programmering overvejes mønstrene. Funktionelle programmeringssprog Haskell bruger nedenstående metode til at finde summen af numrene.
Sumfunktionen har heltalværdier, og resultatet vil også være et heltal. Det kan skrives som sum: [int] -> int. Summationen kan udføres ved at følge nedenstående mønstre.
sum [n] = n, summen af et tal er selve tallet.
Hvis der er en liste over numre, kan den skrives som følger. N repræsenterer det første tal, og ns repræsenterer de andre tal
sum (n, ns) = n + sum ns.
Ovenfor mønstre kan anvendes til at finde summen af tre tal, der er 3,4,5.
3 + sum [4,5]
3 + (4 + sum [5])
3+ 4 + 5 = 12
Det siges, at en funktion eller et udtryk har bivirkninger, hvis den ændrer en eller anden tilstand uden for dens rammer eller har en observerbar interaktion med dens opkaldsfunktioner udover den returnerende værdi. Funktionel programmering minimerer denne bivirkning. Tilstandsændringerne afhænger ikke af funktionsindgange. Det er nyttigt, når man forstå programmets opførsel. En ulempe ved funktionel programmering er, at det er sværere at lære funktionel programmering sammenlignet med den nødvendige programmering.
Imperativ programmering er et programmeringsparadigme, der bruger udsagn, der ændrer et programs tilstand. Det fokuserer på at beskrive, hvordan et program fungerer. Programmeringssprog som Java, C og C # er afgørende programmeringssprog. Det giver en trinvis procedure for, hvad man skal gøre. Imperative programmeringssprog indeholder strukturer som ellers, mens, til løkker, klasser, objekter og funktioner.
Figur 02: Eksempel på imperativt programmeringssprog - Java
Sammendraget af ti numre findes i Java som følger. I hver iteration føjes i-værdien til summen og tildeles til sumvariablen. I hver iteration fortsætter sumværdien med at tilføje den tidligere beregnede sum.
int sum = 0;
for (int i = 0; i< =10; i++)
sum = sum + i;
Imperativ programmering er let at lære, forstå og fejlsøge. Det er let at finde programtilstanden på grund af brug af tilstandsvariabler. Nogle ulemper er, at det kan gøre koden langvarig og kan også minimere skalerbarheden.
Funktionel vs imperativ programmering | |
Funktionel programmering er et programmeringsparadigme, der betragter beregning som evaluering af matematiske funktioner og undgår at ændre tilstand og mutable data. | Imperativ programmering er et programmeringsparadigme, der bruger udsagn, der ændrer et programs tilstand. |
strukturer | |
Funktionel programmering indeholder funktionsopkald og funktioner med højere orden. | Imperativ programmering indeholder hvis, ellers, mens, for loops, funktioner, klasser og objekter. |
Programmeringssprog | |
Scala, Haskell og Lisp er funktionelle programmeringssprog. | C, C ++, Java er tvingende programmeringssprog. |
Fokus | |
Funktionel programmering fokuserer på slutresultatet. | Imperativ programmering fokuserer på at beskrive, hvordan et program fungerer. |
Enkelhed | |
Funktionel programmering er hård. | Imperativ programmering er lettere. |
Et programmeringsparadigme giver en stil til at opbygge strukturen og elementerne i et computerprogram. Funktionel programmering og imperativ programmering er to af dem. Forskellen mellem funktionel programmering og imperativ programmering er, at funktionel programmering betragter beregningerne som matematiske funktioner og undgår at ændre tilstand og mutable data, mens imperativ programmering bruger udsagnene, der ændrer programtilstanden.
1. "Imperativ programmering." Wikipedia, Wikimedia Foundation, 28. mar. 2018. Tilgængelig her
2. "Funktionel programmering." Wikipedia, Wikimedia Foundation, 28. mar. 2018. Tilgængelig her
3.Computerphile. YouTube, YouTube, 30. august 2013. Findes her
1.'Haskell Logo'By Haskell1965 - Eget arbejde, (CC BY-SA 3.0) via Commons Wikimedia
2.'14485179234'by Linux Screenshots (CC BY 2.0) via Flickr