Namun, akhir-akhir ini dunia perangkat lunak tampaknya cenderung mendukung paradigma lain seperti pemrograman fungsional.
Itu bisa diperdebatkan. Pertama, saya tidak melihat paradigma lain selain OOP dan pemrograman fungsional yang dibahas secara luas, jadi saya kira kita bisa melupakan frasa "paradigma lain seperti" , mari kita bicara tentang FP, tidak ada yang lain.
Alasan mengapa pemrograman fungsional menjadi sangat populer selama beberapa tahun terakhir dibahas dalam pertanyaan lain di sini secara mendalam, saya tidak akan mengulangi ini (lihat di sini atau di sini , misalnya). Tapi, menurut saya ini bukan karena "OOP adalah kesalahan besar", atau "Fungsional vs OOP saling eksklusif", itu lebih seperti orang memperluas kotak alat mereka dan mencoba untuk mendapatkan yang terbaik dari kedua dunia. Ok, pasti ada ahli yang garis keras lebih menyukai satu sama lain, tetapi Anda akan menemukan orang-orang di kedua sisi.
Itu membuat saya berpikir, bagaimana dengan enkapsulasi dan prinsip OOP lainnya? Apakah mereka salah?
Enkapsulasi memiliki banyak rasa yang berbeda. Bahasa pemrograman fungsional dan konstruksi bahasa menyediakan bentuk enkapsulasi tertentu, berorientasi objek lainnya. Jika Anda mencari contoh enkapsulasi dengan cara fungsional, mulailah dengan penutupan .
Mengenai "prinsip lain": tidak, mereka tidak salah, tetapi untuk skenario tertentu seperti paralelisasi skala tinggi, pendekatan fungsional mungkin berskala lebih baik. Untuk skenario lain, seperti membuat kerangka UI yang dirancang dengan baik, OOP mendekati skala mungkin lebih baik (YMMV, saya tidak hanya memiliki contoh yang lebih baik di tangan). Selain itu, saya yakin untuk sebagian besar skenario dunia nyata itu tergantung pada pengetahuan dan pengalaman tim dengan paradigma pemrograman favoritnya seberapa baik skala sistem tertentu.
Apakah OOP diterapkan salah? Sebagai contoh, Alan Kay terkenal karena mengatakan dalam Keynote OOPSLA'97: "Saya menemukan istilah berorientasi objek, dan saya dapat memberitahu Anda bahwa saya tidak memiliki C ++ dalam pikiran."
Tentunya OOP sering diterapkan salah oleh banyak orang, tetapi saya yakin hal yang sama berlaku untuk FP. Dan saya akan heran jika John Mc Carthy (desainer Lisp) memiliki sesuatu seperti Javascript dalam pikiran ketika dia berpikir tentang pemrograman fungsional (kasihanilah saya, jangan nyalakan saya terlalu banyak untuk perbandingan itu ;-)
Joe Armstrong - "Objek mengikat fungsi dan struktur data bersama dalam unit yang tidak dapat dibagi. Saya pikir ini adalah kesalahan mendasar karena fungsi dan struktur data termasuk dalam dunia yang sama sekali berbeda."
Saya kira penemu Erlang memiliki beberapa argumen bagus, tetapi ia juga memiliki sudut pandangnya sendiri, jadi biarkan dia pendapatnya dan bangun pendapat Anda sendiri. Ada banyak ahli lain yang memiliki gagasan berbeda tentang ini.