nyckelskillnad – funktionell programmering vs imperativ programmering
Nyckelskillnaden mellan funktionell programmering och imperativ programmering är att den funktionella programmeringen betraktar beräkningarna som matematiska funktioner och undviker att ändra tillstånd och föränderliga data medan imperativ programmering använder de satser som ändrar programmens tillstånd.
Ett programmeringsparadigm ger en stil för att bygga strukturen och elementen i ett datorprogram. Programmeringsparadigmen hjälper till att klassificera programmeringsspråk baserat på deras egenskaper. Ett programmeringsspråk kan påverka fler paradigm. I ett objektorienterat paradigm är programmet strukturerat med hjälp av objekt, och objekten skickar meddelanden med metoder. Den logiska programmeringen kan uttrycka beräkning uteslutande i termer av matematisk logik. Ytterligare två programmeringsparadigm är funktionell programmering och imperativ programmering. Funktionell programmering tillåter att uttrycka beräkningar som utvärdering av matematiska funktioner. Imperativ programmering tillhandahåller uttalanden som explicit ändrar minnets tillstånd. Den här artikeln diskuterar skillnaden mellan funktionell programmering och imperativ programmering.
Vad är funktionell programmering?
Funktionell programmering är baserad på matematik. Nyckelprincipen bakom funktionell programmering är att all beräkning betraktas som en kombination av separata matematiska funktioner. En matematisk funktion mappar ingångar till utgångar. Antag att det finns en funktion som heter f(x)=xx. x-värdet 1 mappas till utgång 1. x-värdet 2 mappas till utgång 4.x-värdet 3 mappas till utgång 9 och så vidare.
Figur 01: Exempel på funktionellt programmeringsspråk – Haskell
I funktionell programmering beaktas mönstren. De funktionella programmeringsspråken Haskell, använder metoden nedan för att hitta summeringen av talen.
Sumfunktionen har heltalsvärden, och resultatet blir också ett heltal. Det kan skrivas som summa: [int] -> int. Summeringen kan göras genom att följa mönstren nedan.
summa[n]=n, summan av ett tal är själva talet.
Om det finns en lista med nummer kan den skrivas enligt följande. n representerar det första talet och ns representerar de andra talen
summa (n, ns)=n + summa ns.
Ovanstående mönster kan användas för att hitta summeringen av tre tal 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 modifierar något tillstånd utanför dess räckvidd eller har en observerbar interaktion med dess anropande funktioner förutom det returnerande värdet. Funktionell programmering minimerar dessa biverkningar. Tillståndsändringarna beror inte på funktionsingångarna. Det är användbart när du förstår programmets beteende. En nackdel med funktionell programmering är att det är svårare att lära sig funktionell programmering jämfört med imperativ programmering.
Vad är imperativ programmering?
Imperativ programmering är ett programmeringsparadigm som använder påståenden som ändrar ett programs tillstånd. Den fokuserar på att beskriva hur ett program fungerar. Programmeringsspråk som Java, C och C är imperativa programmeringsspråk. Den ger en steg-för-steg-procedur om vad du ska göra. Imperativa programmeringsspråk innehåller strukturer som if, else, while, för loopar, klasser, objekt och funktioner.
Figur 02: Exempel på imperativt programmeringsspråk – Java
Summeringen av tio tal kan hittas i Java enligt följande. I varje iteration läggs i-värdet till summan och tilldelas summavariabeln. I varje iteration fortsätter summavärdet att läggas till den tidigare beräknade summan.
int summa=0;
for (int i=0; i<=10; i++) {
sum=summa + i;
}
Imperativ programmering är lätt att lära sig, förstå och felsöka. Det är lätt att hitta programtillståndet genom att använda tillståndsvariabler. Några nackdelar är att det kan göra koden lång och kan även minimera skalbarheten.
Vad är likheten mellan funktionell programmering och imperativ programmering?
Både funktionell programmering och imperativ programmering är programmeringsparadigm
Vad är skillnaden mellan funktionell programmering och imperativ programmering?
Funktionell kontra imperativ programmering |
|
Funktionell programmering är ett programmeringsparadigm som betraktar beräkning som en utvärdering av matematiska funktioner och undviker att ändra tillstånd och föränderliga data. | Imperativ programmering är ett programmeringsparadigm som använder satser som ändrar ett programs tillstånd. |
Strukturer | |
Funktionell programmering innehåller funktionsanrop och högre ordningsfunktioner. | Imperativ programmering innehåller if, else, while, för loopar, funktioner, klasser och objekt. |
Programmeringsspråk | |
Scala, Haskell och Lisp är funktionella programmeringsspråk. | C, C++, Java är imperativa programmeringsspråk. |
Fokus | |
Funktionell programmering fokuserar på slutresultatet. | Imperativ programmering fokuserar på att beskriva hur ett program fungerar. |
Simplicity | |
Funktionell programmering är svår. | Imperativ programmering är enklare. |
Sammanfattning – Funktionell programmering vs imperativ programmering
Ett programmeringsparadigm ger en stil för att bygga strukturen och elementen i ett datorprogram. Funktionell programmering och imperativ programmering är två av dem. Skillnaden mellan funktionell programmering och imperativ programmering är att funktionell programmering betraktar beräkningarna som matematiska funktioner och undviker att ändra tillstånd och föränderliga data medan imperativ programmering använder de satser som ändrar programmens tillstånd.