Forskjellen mellom funksjonell programmering og imperativ programmering

Innholdsfortegnelse:

Forskjellen mellom funksjonell programmering og imperativ programmering
Forskjellen mellom funksjonell programmering og imperativ programmering

Video: Forskjellen mellom funksjonell programmering og imperativ programmering

Video: Forskjellen mellom funksjonell programmering og imperativ programmering
Video: Imperative vs Declarative Programming 2024, Juli
Anonim

Nøkkelforskjell – funksjonell programmering vs imperativ programmering

Nøkkelforskjellen mellom funksjonell programmering og imperativ programmering er at funksjonell programmering anser beregningene som matematiske funksjoner og unngår å endre tilstand og mutable data mens imperativ programmering bruker setningene som endrer programmenes tilstand.

Et programmeringsparadigme gir en stil for å bygge strukturen og elementene i et dataprogram. Programmeringsparadigmene hjelper til med å klassifisere programmeringsspråk basert på funksjonene deres. Et programmeringsspråk kan påvirke flere paradigmer. I objektorientert paradigme er programmet strukturert ved hjelp av objekter, og objektene sender meldinger ved hjelp av metoder. Den logiske programmeringen kan uttrykke beregning utelukkende i form av matematisk logikk. Ytterligere to programmeringsparadigmer er funksjonell programmering og imperativ programmering. Funksjonell programmering gjør det mulig å uttrykke beregninger som evaluering av matematiske funksjoner. Imperativ programmering gir utsagn som eksplisitt endrer tilstanden til minnet. Denne artikkelen diskuterer forskjellen mellom funksjonell programmering og imperativ programmering.

Hva er funksjonell programmering?

Funksjonell programmering er basert på matematikk. Nøkkelprinsippet bak funksjonell programmering er at all beregning betraktes som en kombinasjon av separate matematiske funksjoner. En matematisk funksjon kartlegger innganger til utganger. Anta at det er en funksjon k alt f(x)=xx. x-verdien 1 er tilordnet utgang 1. x-verdien 2 er tilordnet utgang 4.x-verdien 3 er tilordnet utgang 9 og så videre.

Forskjellen mellom funksjonell programmering og imperativ programmering
Forskjellen mellom funksjonell programmering og imperativ programmering

Figur 01: Eksempel på funksjonelt programmeringsspråk – Haskell

I funksjonell programmering vurderes mønstrene. De funksjonelle programmeringsspråkene Haskell, bruker metoden nedenfor for å finne summeringen av tallene.

Sumfunksjonen har heltallsverdier, og resultatet vil også være et heltall. Det kan skrives som sum: [int] -> int. Summen kan gjøres ved å følge mønstrene nedenfor.

sum[n]=n, summen av ett tall er selve tallet.

Hvis det er en liste med tall, kan den skrives som følger. n representerer det første tallet, og ns representerer de andre tallene

sum (n, ns)=n + sum ns.

Mønstrene ovenfor kan brukes for å finne summeringen av tre tall som er 3, 4, 5.

3 + sum [4, 5]

3 + (4 + sum [5])

3+ 4 + 5=12

En funksjon eller et uttrykk sies å ha bivirkninger hvis den modifiserer en tilstand utenfor dens omfang eller har en observerbar interaksjon med dens kallefunksjoner i tillegg til den returnerende verdien. Funksjonell programmering minimerer disse bivirkningene. Tilstandsendringene avhenger ikke av funksjonsinngangene. Det er nyttig når du skal forstå oppførselen til programmet. En ulempe med funksjonell programmering er at det er vanskeligere å lære funksjonell programmering sammenlignet med imperativ programmering.

Hva er imperativ programmering?

Imperativ programmering er et programmeringsparadigme som bruker utsagnene som endrer et programs tilstand. Den fokuserer på å beskrive hvordan et program fungerer. Programmeringsspråk som Java, C og C er viktige programmeringsspråk. Den gir en trinnvis prosedyre for hva du skal gjøre. Imperative programmeringsspråk inneholder strukturer som if, else, while, for løkker, klasser, objekter og funksjoner.

Hovedforskjellen mellom funksjonell programmering og imperativ programmering
Hovedforskjellen mellom funksjonell programmering og imperativ programmering

Figur 02: Eksempel på imperativt programmeringsspråk – Java

Summeringen av ti tall kan bli funnet i Java som følger. I hver iterasjon legges i-verdien til summen og tilordnes sumvariabelen. I hver iterasjon fortsetter sumverdien å legges til den tidligere beregnede summen.

int sum=0;

for (int i=0; i<=10; i++) {

sum=sum + i;

}

Imperativ programmering er lett å lære, forstå og feilsøke. Det er lett å finne programtilstanden på grunn av bruk av tilstandsvariabler. Noen ulemper er at det kan gjøre koden lang og kan også minimere skalerbarheten.

Hva er likheten mellom funksjonell programmering og imperativ programmering?

Både funksjonell programmering og imperativ programmering er programmeringsparadigmer

Hva er forskjellen mellom funksjonell programmering og imperativ programmering?

Funksjonell kontra imperativ programmering

Functional Programming er et programmeringsparadigme som betrakter beregning som evaluering av matematiske funksjoner og unngår endring av tilstand og mutable data. Imperativ programmering er et programmeringsparadigme som bruker utsagn som endrer et programs tilstand.
strukturer
Funksjonell programmering inneholder funksjonskall og høyere ordensfunksjoner. Imperativ programmering inneholder if, else, while, for løkker, funksjoner, klasser og objekter.
Programmeringsspråk
Scala, Haskell og Lisp er funksjonelle programmeringsspråk. C, C++, Java er viktige programmeringsspråk.
Fokus
Funksjonell programmering fokuserer på sluttresultatet. Imperativ programmering fokuserer på å beskrive hvordan et program fungerer.
Simplicity
Funksjonell programmering er vanskelig. Imperativ programmering er enklere.

Sammendrag – Funksjonell programmering vs imperativ programmering

Et programmeringsparadigme gir en stil for å bygge strukturen og elementene i et dataprogram. Funksjonell programmering og imperativ programmering er to av dem. Forskjellen mellom funksjonell programmering og imperativ programmering er at funksjonell programmering betrakter beregningene som matematiske funksjoner og unngår å endre tilstand og mutable data, mens imperativ programmering bruker setningene som endrer programmenes tilstand.

Anbefalt: