Forskellen mellem funktionel programmering og imperativ programmering

Indholdsfortegnelse:

Forskellen mellem funktionel programmering og imperativ programmering
Forskellen mellem funktionel programmering og imperativ programmering

Video: Forskellen mellem funktionel programmering og imperativ programmering

Video: Forskellen mellem funktionel programmering og imperativ programmering
Video: Imperative vs Declarative Programming 2024, Juli
Anonim

Nøgleforskel – Funktionel programmering vs imperativ programmering

Nøgleforskellen mellem funktionel programmering og imperativ programmering er, at den funktionelle programmering betragter beregningerne som matematiske funktioner og undgår at ændre tilstand og foranderlige data, mens imperativ programmering bruger de udsagn, der ændrer programmernes tilstand.

Et programmeringsparadigme giver en stil til at bygge strukturen og elementerne i et computerprogram. Programmeringsparadigmerne hjælper med at klassificere programmeringssprog baseret på deres funktioner. Et programmeringssprog kan påvirke flere paradigmer. I objektorienteret paradigme er programmet struktureret ved hjælp af objekter, og objekterne sender beskeder ved hjælp af metoder. Den logiske programmering kan udtrykke beregning udelukkende i form af matematisk logik. Yderligere to programmeringsparadigmer er funktionel programmering og imperativ programmering. Funktionel programmering gør det muligt at udtrykke beregninger som evaluering af matematiske funktioner. Imperativ programmering giver udsagn, der eksplicit ændrer hukommelsens tilstand. Denne artikel diskuterer forskellen mellem funktionel programmering og imperativ programmering.

Hvad er funktionel programmering?

Funktionel programmering er baseret på matematik. Nøgleprincippet bag funktionel programmering er, at al beregning 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)=xx. x-værdien 1 er afbildet til output 1. x-værdien 2 er knyttet til output 4. X-værdien 3 er knyttet til output 9 og så videre.

Forskellen mellem funktionel programmering og imperativ programmering
Forskellen mellem funktionel programmering og imperativ programmering

Figur 01: Eksempel på funktionelt programmeringssprog – Haskell

I funktionel programmering tages der hensyn til mønstrene. De funktionelle programmeringssprog Haskell, bruger nedenstående metode til at finde summeringen af tallene.

Sumfunktionen har heltalsværdier, og resultatet vil også være et heltal. Det kan skrives som sum: [int] -> int. Summeringen 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 tal, 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.

Ovenstående mønstre kan anvendes til at finde sammenlægningen af tre tal, som er 3, 4, 5.

3 + sum [4, 5]

3 + (4 + sum [5])

3+ 4 + 5=12

En funktion eller et udtryk siges at have bivirkninger, hvis det ændrer en tilstand uden for dens rækkevidde eller har en observerbar interaktion med dens kaldende funktioner udover den returnerende værdi. Funktionel programmering minimerer disse bivirkninger. Tilstandsændringerne afhænger ikke af funktionsindgangene. Det er nyttigt, når du skal forstå programmets adfærd. En ulempe ved funktionel programmering er, at det er sværere at lære funktionel programmering sammenlignet med imperativ programmering.

Hvad er imperativ programmering?

Imperativ programmering er et programmeringsparadigme, der bruger de udsagn, der ændrer et programs tilstand. Den fokuserer på at beskrive, hvordan et program fungerer. Programmeringssprog som Java, C og C er imperative programmeringssprog. Det giver en trin for trin procedure for, hvad man skal gøre. Imperative programmeringssprog indeholder strukturer såsom if, else, while, for sløjfer, klasser, objekter og funktioner.

Nøgleforskel mellem funktionel programmering og imperativ programmering
Nøgleforskel mellem funktionel programmering og imperativ programmering

Figur 02: Eksempel på imperativt programmeringssprog – Java

Summeringen af ti tal kan findes i Java som følger. I hver iteration lægges i-værdien til summen og tildeles sumvariablen. I hver iteration bliver sumværdien ved med at lægges til 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 fejlfinde. Det er nemt at finde programtilstanden på grund af brugen af tilstandsvariable. Nogle ulemper er, at det kan gøre koden lang og også minimere skalerbarheden.

Hvad er ligheden mellem funktionel programmering og imperativ programmering?

Både funktionel programmering og imperativ programmering er programmeringsparadigmer

Hvad er forskellen mellem funktionel programmering og imperativ programmering?

Funktionel kontra imperativ programmering

Functional Programming er et programmeringsparadigme, der betragter beregning som evaluering af matematiske funktioner og undgår at ændre tilstand og foranderlige data. Imperativ programmering er et programmeringsparadigme, der bruger udsagn, der ændrer et programs tilstand.
Strukturer
Funktionel programmering indeholder funktionskald og højere-ordens funktioner. Imperativ programmering indeholder if, else, while, for sløjfer, funktioner, klasser og objekter.
Programmeringssprog
Scala, Haskell og Lisp er funktionelle programmeringssprog. C, C++, Java er imperative programmeringssprog.
Fokus
Funktionel programmering fokuserer på slutresultatet. Imperativ programmering fokuserer på at beskrive, hvordan et program fungerer.
Simplicity
Funktionel programmering er svær. Imperativ programmering er nemmere.

Opsummering – Funktionel programmering vs imperativ programmering

Et programmeringsparadigme giver en stil til at bygge 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 foranderlige data, mens imperativ programmering bruger de udsagn, der ændrer programmernes tilstand.

Anbefalede: