Tuttavia, ultimamente il mondo del software sembra inclinarsi a favore di altri paradigmi come la programmazione funzionale.
È discutibile. In primo luogo, non vedo altri paradigmi oltre a OOP e la programmazione funzionale che sono discussi in modo ampio, quindi immagino che possiamo dimenticare la frase "altri paradigmi come" , parliamo di FP, nient'altro.
I motivi per cui la programmazione funzionale è diventata così popolare negli ultimi anni sono stati discussi in altre domande qui in profondità, non ho intenzione di ripeterlo (vedi qui o qui , per esempio). Ma, secondo me, ciò non è dovuto al fatto che "OOP è stato un grosso errore", o "Funzionale contro OOP si escludono a vicenda", è più come se le persone estendessero la loro cassetta degli attrezzi e cercassero di ottenere il meglio da entrambi i mondi. Ok, ci sono sicuramente esperti che sono sostenitori della linea dura che favoriscono l'uno sull'altro, ma troverai quei ragazzi da entrambe le parti.
Mi fa pensare, che dire dell'incapsulamento e di altri principi OOP? Si sbagliano?
L'incapsulamento ha molti gusti diversi. I linguaggi di programmazione funzionale e i costrutti del linguaggio forniscono alcune forme di incapsulamento, altre orientate agli oggetti. Se stai cercando esempi di incapsulamento con mezzi funzionali, inizia con le chiusure .
Per quanto riguarda gli "altri principi": no, non sono sbagliati, ma per alcuni scenari come la parallelizzazione su larga scala, gli approcci funzionali probabilmente si ridimensionano meglio. Per altri scenari, come la creazione di framework UI ben progettati, gli approcci OOP si adattano probabilmente meglio (YMMV, non ho solo un esempio migliore a portata di mano). Inoltre, sono sicuro per la maggior parte degli scenari del mondo reale che dipende dalla conoscenza e dall'esperienza del team con il suo paradigma di programmazione preferito quanto bene un determinato sistema scalerà.
OOP è applicato in modo errato? Ad esempio, Alan Kay è noto per aver detto nel Keynote di OOPSLA'97: "Ho inventato il termine orientato agli oggetti e posso dire che non avevo in mente C ++".
Sicuramente OOP viene spesso applicato in modo errato da molte persone, ma sono sicuro che lo stesso vale per FP. E sarei sorpreso se John Mc Carthy (designer di Lisp) avesse in mente qualcosa come Javascript quando pensava alla programmazione funzionale (pietà di me, non farmi troppo fuoco per quel confronto ;-)
Joe Armstrong - "Gli oggetti associano funzioni e strutture di dati in unità indivisibili. Penso che questo sia un errore fondamentale poiché funzioni e strutture di dati appartengono a mondi totalmente diversi."
Immagino che l'inventore di Erlang abbia delle buone argomentazioni, ma ha anche il suo punto di vista personale, quindi lasciagli la sua opinione e costruisci la tua. Ci sono molti altri esperti che hanno un'idea diversa di questo.