[Oop] Programmazione funzionale vs Programmazione orientata agli oggetti


Answers

Non devi necessariamente scegliere tra i due paradigmi. È possibile scrivere software con un'architettura OO utilizzando molti concetti funzionali. FP e OOP sono di natura ortogonale .

Prendi ad esempio C #. Si potrebbe dire che è principalmente OOP, ma ci sono molti concetti e costrutti FP. Se si considera Linq , i costrutti più importanti che consentono a Linq di esistere sono di natura funzionale: espressioni lambda .

Un altro esempio, F #. Si potrebbe dire che è principalmente FP, ma ci sono molti concetti e costrutti OOP disponibili. È possibile definire classi, classi astratte, interfacce, gestire l'ereditarietà. Puoi persino utilizzare la mutabilità quando rende il tuo codice più chiaro o quando aumenta notevolmente le prestazioni.

Molte lingue moderne sono multi-paradigma.

Letture consigliate

Dato che sono nella stessa barca (sfondo OOP, apprendimento FP), ti suggerisco alcune letture che ho davvero apprezzato:

Question

Sono stato principalmente esposto alla programmazione OO finora e non vedo l'ora di imparare un linguaggio funzionale. Le mie domande sono:

  • Quando scegli la programmazione funzionale rispetto all'oggetto?
  • Quali sono le definizioni tipiche dei problemi in cui la programmazione funzionale è una scelta migliore?



  1. Se ci si trova in un ambiente fortemente concorrente, è utile la pura programmazione funzionale. La mancanza di uno stato mutabile rende la concorrenza quasi banale. Vedi Erlang.

  2. In un linguaggio multiparadigm, potresti voler modellare alcune cose dal punto di vista funzionale se l'esistenza dello stato mutabile è necessario un dettaglio di implementazione, e quindi FP è un buon modello per il dominio del problema. Ad esempio, vedi le list comprehensions in Python o std.range nel linguaggio di programmazione D. Questi sono ispirati alla programmazione funzionale.