Diferența dintre programarea funcțională și programarea imperativă

Diferența cheie - funcțională Programare vs programare imperativă
 

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ă.

CUPRINS

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

Ce este programarea funcțională?

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ă.

Ce este 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.

Care este asemănarea dintre programarea funcțională și programarea imperativă?

  • Atât programarea funcțională cât și programarea imperativă sunt paradigme de programare.

Care este diferența dintre programarea funcțională și programarea imperativă?

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.

Rezumat - Funcțional Programare vs programare imperativă

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.

Referinţă:

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 

Datorită fotografiei:

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