diferența cheie între programarea funcțională și programarea imperativă este faptul că programarea funcțională consideră calculele ca funcții matematice și evită schimbarea datelor de stat și mutabil, în timp ce programarea imperativă folosește instrucțiunile care schimbă starea programelor.
O paradigmă de programare oferă un stil de construire a structurii și a elementelor unui program de calculator. Paradigmele de programare ajută la clasificarea limbajelor de programare pe baza caracteristicilor acestora. Un limbaj de programare ar putea influența mai multe paradigme. În paradigma orientată pe obiecte, programul este structurat folosind obiecte, iar obiectele transmit mesaje utilizând metode. Programarea logică poate exprima calculul exclusiv în termeni de logică matematică. Alte două paradigme de programare sunt programarea funcțională și programarea imperativă. Programarea funcțională permite exprimarea calculelor ca și evaluarea funcțiilor matematice. Programarea imperativă oferă afirmații care schimbă în mod explicit starea memoriei. Acest articol discută diferența dintre programarea funcțională și programarea imperativă.
1. Prezentare generală și diferență cheie
2. Ce este programarea funcțională
3. Ce este programarea imperativă
4. Asemănări între programarea funcțională și programarea imperativă
5. Comparație comparativă - programare funcțională vs programare imperativă în formă tabulară
6. rezumat
Programarea funcțională se bazează pe matematică. Principiul cheie din spatele programării funcționale este acela că toată calculul este considerată o combinație de funcții matematice separate. O funcție matematică integrează intrările către ieșiri. Presupunem că există o funcție numită f (x) = x * x. Valoarea x 1 este mapată la ieșirea 1. Valoarea x 2 este mapată la ieșirea 4. Valoarea x 3 este mapată la ieșirea 9 și așa mai departe.
Figura 01: Exemplu de limbaj de programare funcțional - Haskell
În programarea funcțională, modelele sunt luate în considerare. Limbile de programare funcționale Haskell utilizează metoda de mai jos pentru a găsi sumarea numerelor.
Funcția sumă are valori întregi, iar rezultatul va fi și un număr întreg. Se poate scrie ca sumă: [int] -> int. Sumarea se poate face urmând modelele de mai jos.
suma [n] = n, suma unui număr este numărul în sine.
Dacă există o listă de numere, ea poate fi scrisă după cum urmează. N reprezintă primul număr și ns reprezintă celelalte numere
suma (n, ns) = n + suma ns.
Modelele de mai sus pot fi aplicate pentru a găsi sumarea a trei numere care sunt 3,4,5.
3 + suma [4,5]
3 + (4 + suma [5])
3 + 4 + 5 = 12
Se consideră că o funcție sau o expresie are efecte secundare dacă modifică o anumită stare în afara domeniului său de aplicare sau are o interacțiune observabilă cu funcțiile sale de apelare în afară de valoarea returnată. Programarea funcțională minimizează aceste efecte secundare. Schimbările de stare nu depind de intrările de funcții. Este util atunci când înțelegeți comportamentul programului. Un dezavantaj al programării funcționale este că învățarea programării funcționale este mai dificilă în comparație cu programarea imperativă.
Programarea imperativă este o paradigmă de programare care folosește instrucțiunile care schimbă starea unui program. Se concentrează pe descrierea modului în care funcționează un program. Limbile de programare precum Java, C și C # sunt limbi de programare imperative. Acesta oferă o procedură pas cu pas cu privire la ceea ce trebuie făcut. Limbile de programare imperative conțin structuri cum ar fi dacă, altfel, în timp ce, pentru bucle, clase, obiecte și funcții.
Figura 02: Exemplu de limbaj de programare imperativă - Java
Sumarea a zece numere poate fi găsită în Java după cum urmează. În fiecare iterație, valoarea i este adăugată la suma și atribuită variabilei sumă. În fiecare iterație, valoarea sumă continuă să fie adăugată la suma calculată anterior.
suma int = 0;
pentru (int i = 0; i< =10; i++)
sumă = suma + i;
Programarea imperativă este ușor de învățat, înțeleasă și depanată. Este ușor de găsit starea programului din cauza utilizării variabilelor de stare. Unele dezavantaje sunt că pot face codul lung și pot, de asemenea, să minimizeze scalabilitatea.
Programare funcțională vs. imperativă | |
Programarea funcțională este o paradigmă de programare care consideră calculele ca evaluarea funcțiilor matematice și evită schimbarea datelor de stare și a datelor transferabile. | Programarea imperativă este o paradigmă de programare care folosește declarații care schimbă starea unui program. |
structuri | |
Programarea funcțională conține apeluri funcționale și funcții de ordin superior. | Programarea imperativă conține dacă, altfel, în timp ce, pentru bucle, funcții, clase și obiecte. |
Limbaje de programare | |
Scala, Haskell și Lisp sunt limbi de programare funcționale. | C, C ++, Java sunt limbi de programare imperative. |
concentra | |
Programarea funcțională se concentrează asupra rezultatului final. | Programarea imperativă se concentrează pe descrierea modului în care funcționează un program. |
Simplitate | |
Funcționarea programată este greu. | Programarea imperativa este mai usoara. |
O paradigmă de programare oferă un stil de construire a structurii și a elementelor unui program de calculator. Programarea funcțională și programarea imperativă sunt două dintre ele. Diferența dintre programarea funcțională și programarea imperativă constă în faptul că programarea funcțională consideră calculele ca funcții matematice și evită modificarea datelor de stare și a datelor transferabile, în timp ce programarea imperativă utilizează instrucțiunile care schimbă starea programelor.
1. "Programare imperativă" Wikipedia, Fundația Wikimedia, 28 martie 2018. Disponibil aici
2. "Programarea funcțională". Wikipedia, Fundația Wikimedia, 28 martie 2018. Disponibil aici
3.Computerphile. YouTube, YouTube, 30 august 2013. Disponibil aici
1.'Haskell Logo'By Haskell1965 - Muncă proprie, (CC BY-SA 3.0) prin intermediul Commons Wikimedia
2.'14485179234'de screenshot-uri de Linux (CC BY 2.0) prin intermediul Flickr