Razlika između funkcionalnog programiranja i imperativnog programiranja

Sadržaj:

Razlika između funkcionalnog programiranja i imperativnog programiranja
Razlika između funkcionalnog programiranja i imperativnog programiranja

Video: Razlika između funkcionalnog programiranja i imperativnog programiranja

Video: Razlika između funkcionalnog programiranja i imperativnog programiranja
Video: sublimacija, filtracija, destilacija, kristalizacija, ekstrakcija, itd. 2024, Juli
Anonim

Ključna razlika – funkcionalno programiranje naspram imperativnog programiranja

Ključna razlika između funkcionalnog programiranja i imperativnog programiranja je u tome što funkcionalno programiranje razmatra proračune kao matematičke funkcije i izbjegava promjenu stanja i promjenjive podatke dok imperativno programiranje koristi izraze koji mijenjaju stanje programa.

Programska paradigma pruža stil izgradnje strukture i elemenata kompjuterskog programa. Programske paradigme pomažu u klasifikaciji programskih jezika na osnovu njihovih karakteristika. Programski jezik može uticati na više paradigmi. U objektno orijentiranoj paradigmi, program je strukturiran pomoću objekata, a objekti prosljeđuju poruke koristeći metode. Logičko programiranje može izraziti računanje isključivo u terminima matematičke logike. Druge dvije programske paradigme su funkcionalno programiranje i imperativno programiranje. Funkcionalno programiranje omogućava izražavanje računanja kao evaluacije matematičkih funkcija. Imperativno programiranje daje izjave koje eksplicitno mijenjaju stanje memorije. Ovaj članak govori o razlici između funkcionalnog programiranja i imperativnog programiranja.

Šta je funkcionalno programiranje?

Funkcionalno programiranje je bazirano na matematici. Ključni princip iza funkcionalnog programiranja je da se sva računanja posmatraju kao kombinacija odvojenih matematičkih funkcija. Matematička funkcija mapira ulaze u izlaze. Pretpostavimo da postoji funkcija koja se zove f(x)=xx. Vrijednost x 1 se preslikava na izlaz 1. Vrijednost x 2 se preslikava na izlaz 4. Vrijednost x 3 je mapirana u izlaz 9 i tako dalje.

Razlika između funkcionalnog programiranja i imperativnog programiranja
Razlika između funkcionalnog programiranja i imperativnog programiranja

Slika 01: Primjer funkcionalnog programskog jezika – Haskell

U funkcionalnom programiranju uzimaju se u obzir obrasci. Funkcionalni programski jezici Haskell, koristi donju metodu da pronađe zbir brojeva.

Funkcija suma ima cjelobrojne vrijednosti, a rezultat će također biti cijeli broj. Može se napisati kao zbir: [int] -> int. Sumiranje se može izvršiti slijedeći donje obrasce.

sum[n]=n, zbir jednog broja je sam broj.

Ako postoji lista brojeva, može se napisati na sljedeći način. n predstavlja prvi broj, a ns ostale brojeve

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

Iznad obrasci se mogu primijeniti da se pronađe zbir tri broja koji su 3, 4, 5.

3 + suma [4, 5]

3 + (4 + suma [5])

3+ 4 + 5=12

Za funkciju ili izraz se kaže da ima nuspojave ako modificira neko stanje izvan svog opsega ili ima vidljivu interakciju sa svojim pozivnim funkcijama osim povratne vrijednosti. Funkcionalno programiranje minimizira ove nuspojave. Promjene stanja ne ovise o ulazima funkcije. Korisno je za razumijevanje ponašanja programa. Jedan nedostatak funkcionalnog programiranja je taj što je učenje funkcionalnog programiranja teže u poređenju sa imperativnim programiranjem.

Šta je imperativno programiranje?

Imperativno programiranje je programska paradigma koja koristi iskaze koji mijenjaju stanje programa. Fokusira se na opisivanje kako program funkcioniše. Programski jezici kao što su Java, C i C su imperativni programski jezici. On pruža korak po korak proceduru o tome šta treba učiniti. Imperativni programski jezici sadrže strukture kao što su if, else, while, za petlje, klase, objekte i funkcije.

Ključna razlika između funkcionalnog programiranja i imperativnog programiranja
Ključna razlika između funkcionalnog programiranja i imperativnog programiranja

Slika 02: Primjer imperativnog programskog jezika – Java

Zbir deset brojeva može se naći u Javi na sljedeći način. U svakoj iteraciji, vrijednost i se dodaje zbroju i dodjeljuje varijabli suma. U svakoj iteraciji, vrijednost sume nastavlja da se dodaje prethodno izračunatom zbroju.

int suma=0;

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

sum=suma + i;

}

Imperativno programiranje je lako naučiti, razumjeti i otkloniti greške. Lako je pronaći stanje programa zbog korištenja varijabli stanja. Neki nedostaci su što može učiniti kod dugotrajnim i također može minimizirati skalabilnost.

Koja je sličnost između funkcionalnog programiranja i imperativnog programiranja?

I funkcionalno programiranje i imperativno programiranje su programske paradigme

Koja je razlika između funkcionalnog programiranja i imperativnog programiranja?

Funkcionalno protiv imperativnog programiranja

Funkcionalno programiranje je programska paradigma koja računanje razmatra kao evaluaciju matematičkih funkcija i izbjegava promjenu stanja i promjenjive podatke. Imperativno programiranje je programska paradigma koja koristi iskaze, koji mijenjaju stanje programa.
Strukture
Funkcionalno programiranje sadrži pozive funkcija i funkcije višeg reda. Imperativno programiranje sadrži if, else, while, za petlje, funkcije, klase i objekte.
Programski jezici
Scala, Haskell i Lisp su funkcionalni programski jezici. C, C++, Java su imperativni programski jezici.
Focus
Funkcionalno programiranje se fokusira na krajnji rezultat. Imperativno programiranje se fokusira na opisivanje kako program funkcioniše.
Simplicity
Funkcionalno programiranje je teško. Imperativno programiranje je lakše.

Sažetak – Funkcionalno programiranje naspram imperativnog programiranja

Programska paradigma pruža stil izgradnje strukture i elemenata kompjuterskog programa. Funkcionalno programiranje i imperativno programiranje su dva od njih. Razlika između funkcionalnog programiranja i imperativnog programiranja je u tome što funkcionalno programiranje razmatra proračune kao matematičke funkcije i izbjegava promjenu stanja i promjenjive podatke dok imperativno programiranje koristi izraze koji mijenjaju stanje programa.

Preporučuje se: