However, lately the software world seems to be tilting in favour of other
paradigms like functional programming.
Questo è discutibile. Innanzitutto, non vedo altri paradigmi oltre all'OOP e alla programmazione funzionale che sono discussi a grandi linee, quindi suppongo che possiamo dimenticare gli "altri paradigmi come" frase, parliamo di FP, nient'altro .
Le ragioni per cui la programmazione funzionale è diventata così popolare negli ultimi anni sono state discusse in altre domande qui in profondità, non ho intenzione di ripeterlo (vedi qui o qui , ad esempio). Ma, secondo me, non è perché "OOP è stato un grosso errore", o "Funzionale contro OOP si escludono a vicenda", è più come la gente che estende la sua cassetta degli attrezzi e cerca di ottenere il meglio da entrambi i mondi. Ok, ci sono sicuramente degli esperti che sono gli intransigenti che preferiscono l'uno rispetto all'altro, ma troverete quei ragazzi da entrambe le parti.
It makes me think, what about encapsulation and other OOP tenets? Are they wrong?
L'incapsulamento ha molti gusti diversi. I linguaggi di programmazione funzionale e i costrutti del linguaggio forniscono certe forme di incapsulamento, altri orientati agli oggetti. Se stai cercando esempi di incapsulamento con mezzi funzionali, inizia con chiusure .
Riguardo "altri principi": no, non sono sbagliati, ma per alcuni scenari come la parallelizzazione su larga scala, gli approcci funzionali probabilmente scalano meglio. Per altri scenari, come la creazione di framework di UI ben progettati, gli approcci di OOP sono probabilmente migliori (YMMV, non ho solo un esempio migliore disponibile). Inoltre, sono sicuro che per la maggior parte degli scenari del mondo reale dipende dalla conoscenza e dall'esperienza del team con il suo paradigma di programmazione preferito su come un determinato sistema verrà scalato.
Is it that OOP is applied wrong? For instance Alan Kay is noted for saying in the OOPSLA'97 Keynote: "I invented the term object-oriented, and I can tell you I did not have C++ in mind."
Sicuramente l'OOP viene spesso applicato in modo errato da molte persone, ma sono sicuro che lo stesso è vero per FP. E sarei stupito se John Mc Carthy (designer di Lisp) avesse in mente qualcosa di simile a Javascript quando pensava alla programmazione funzionale (abbi pietà di me, non mi infastidire troppo per quel confronto; -)
Joe Armstrong - "Objects bind functions and data structures together in indivisible units. I think this is a fundamental error since functions and data structures belong in totally different worlds."
Immagino che l'inventore di Erlang abbia delle buone argomentazioni, ma ha anche il suo punto di vista, quindi lascia che sia lui a pensare e costruisci il tuo. Ci sono molti altri esperti che hanno un'idea diversa di questo.