De nyckelskillnad mellan funktionell programmering och imperativ programmering är att funktionell programmering anser beräkningarna som matematiska funktioner och undviker att ändra statliga och mutable data medan nödvändig programmering använder de satser som ändrar programtillståndet.
Ett programmeringsparadigm ger en stil att bygga upp strukturen och elementen i ett datorprogram. Programmeringsparadigmerna hjälper till att klassificera programmeringsspråk baserat på deras funktioner. Ett programmeringsspråk kan påverka fler paradigmer. I objektorienterat paradigm är programmet strukturerat med hjälp av objekt och objekten skickar meddelanden med hjälp av metoder. Den logiska programmeringen kan uttrycka beräkning i uteslutande när det gäller matematisk logik. Ytterligare två programmeringsparadigmer är funktionell programmering och imperativ programmering. Funktionell programmering tillåter uttrycka beräkningar som utvärdering av matematiska funktioner. Imperativ programmering ger uttalanden som uttryckligen ändrar minnets tillstånd. I denna artikel diskuteras skillnaden mellan funktionell programmering och imperativ programmering.
1. Översikt och nyckelskillnad
2. Vad är funktionell programmering
3. Vad är Imperative Programming
4. Likheter mellan funktionell programmering och imperativ programmering
5. Jämförelse vid sida vid sida - Funktionsprogrammering mot imperativ programmering i tabellform
6. Sammanfattning
Funktionsprogrammering baseras på matematik. Huvudprincipen bakom funktionell programmering är att all beräkning anses vara en kombination av separata matematiska funktioner. En matematisk funktion kartlägger ingångar till utgångar. Antag att det finns en funktion som heter f (x) = x * x. X-värdet 1 är mappat till utgång 1. x-värdet 2 är mappat till utgång 4. x-värdet 3 är mappat till utgång 9 och så vidare.
Figur 01: Exempel på funktionellt programmeringsspråk - Haskell
I funktionell programmering betraktas mönstren. De funktionella programmeringsspråken Haskell, använder nedanstående metod för att hitta summan av numren.
Summan har heltal, och resultatet blir också ett heltal. Det kan skrivas som summa: [int] -> int. Sammanfattningen kan göras genom att följa nedanstående mönster.
summa [n] = n, summan av ett tal är själva numret.
Om det finns en lista med siffror kan den skrivas enligt följande. N representerar det första talet och ns representerar de andra talen
summa (n, ns) = n + sum ns.
Ovanstående mönster kan tillämpas för att hitta summan av tre siffror som är 3,4,5.
3 + summa [4,5]
3 + (4 + summa [5])
3+ 4 + 5 = 12
En funktion eller ett uttryck sägs ha biverkningar om det ändrar ett tillstånd utanför sitt räckvidd eller har en observerbar interaktion med sina ringerfunktioner förutom det återstående värdet. Funktionell programmering minimerar dessa biverkningar. Statens förändringar beror inte på funktionsingångarna. Det är användbart när man förstår programmets beteende. En nackdel med funktionell programmering är att inlärning funktionell programmering är svårare jämfört med nödvändig programmering.
Imperativ programmering är ett programmeringsparadigm som använder de uttalanden som ändrar ett programs tillstånd. Det fokuserar på att beskriva hur ett program fungerar. Programmeringsspråk som Java, C och C # är absolut nödvändiga programmeringsspråk. Det ger en stegvis procedur om vad man ska göra. Imperative programmeringsspråk innehåller strukturer som om, annars, för loopar, klasser, objekt och funktioner.
Figur 02: Exempel på Imperative programmeringsspråk - Java
Sammanfattningen av tio tal kan hittas i Java enligt följande. I varje iteration läggs i-värdet till summan och tilldelas summan variabeln. I varje iteration fortsätter summan med att lägga till den tidigare beräknade summan.
int summa = 0;
för (int i = 0; i< =10; i++)
summa = sum + i;
Imperativ programmering är lätt att lära, förstå och felsöka. Det är lätt att hitta programstatusen på grund av att du använder statliga variabler. Några nackdelar är att det kan göra koden lång och kan också minimera skalbarheten.
Funktionell vs Imperativ programmering | |
Funktionell programmering är ett programmeringsparadigm som betraktar beräkning som utvärdering av matematiska funktioner och undviker att ändra statliga och muterbara data. | Imperativ programmering är ett programmeringsparadigm som använder uttalanden, som ändrar ett programs tillstånd. |
strukturer | |
Funktionsprogrammering innehåller funktionssamtal och högre orderfunktioner. | Imperativ programmering innehåller om, annars, för loopar, funktioner, klasser och objekt. |
Programmeringsspråk | |
Scala, Haskell och Lisp är funktionella programmeringsspråk. | C, C ++, Java är absolut nödvändiga programmeringsspråk. |
Fokus | |
Funktionsprogrammering fokuserar på slutresultatet. | Imperativ programmering fokuserar på att beskriva hur ett program fungerar. |
Enkelhet | |
Funktionell programmering är svår. | Imperativ programmering är lättare. |
Ett programmeringsparadigm ger en stil att bygga upp strukturen och elementen i ett datorprogram. Funktionell programmering och avgörande programmering är två av dem. Skillnaden mellan funktionell programmering och imperativ programmering är att funktionell programmering anser beräkningarna som matematiska funktioner och undviker att ändra statliga och mutable data medan nödvändig programmering använder de uttalanden som ändrar programtillståndet.
1. "Imperative Programming." Wikipedia, Wikimedia Foundation, 28 mars 2018. Tillgänglig här
2. "Funktionsprogrammering." Wikipedia, Wikimedia Foundation, 28 mars 2018. Tillgänglig här
3.Computerphile. YouTube, YouTube, den 30 augusti 2013. Tillgänglig här
1.Haskell Logo'By Haskell1965 - eget arbete, (CC BY-SA 3.0) via Commons Wikimedia
2.'14485179234'by Linux Skärmdumpar (CC BY 2.0) via Flickr