Dalam salah satu dari banyak kata-kata kasar anti-OOP di cat-v.org saya menemukan sebuah bagian oleh Joe Armstrong mengajukan beberapa keberatan terhadap model OOP, salah satunya adalah sebagai berikut:
Keberatan 4 - Objek memiliki keadaan pribadi
Negara adalah akar dari semua kejahatan. Secara khusus fungsi dengan efek samping harus dihindari.
Sementara keadaan dalam bahasa pemrograman tidak diinginkan, di negara dunia nyata berlimpah. Saya sangat tertarik dengan keadaan rekening bank saya, dan ketika saya menyetor atau menarik uang dari bank saya, saya berharap keadaan rekening bank saya diperbarui dengan benar.
Mengingat bahwa negara ada di dunia nyata fasilitas apa yang harus disediakan oleh bahasa pemrograman untuk berurusan dengan negara?
OOPL mengatakan "sembunyikan negara dari programmer". Status disembunyikan dan hanya dapat dilihat melalui fungsi akses. Bahasa pemrograman konvensional (C, Pascal) mengatakan bahwa visibilitas variabel keadaan dikontrol oleh aturan ruang lingkup bahasa. Bahasa deklaratif murni mengatakan bahwa tidak ada keadaan. Keadaan global sistem dilakukan ke semua fungsi dan keluar dari semua fungsi. Mekanisme seperti monad (untuk FPL) dan DCG (bahasa logika) digunakan untuk menyembunyikan status dari pemrogram sehingga mereka dapat memprogram "seolah-olah keadaan tidak penting" tetapi memiliki akses penuh ke keadaan sistem jika ini diperlukan.
Opsi "sembunyikan negara dari programmer" yang dipilih oleh OOPL adalah pilihan yang lebih buruk. Alih-alih mengungkapkan negara dan berusaha mencari cara untuk meminimalkan gangguan negara, mereka menyembunyikannya.
Apa sebenarnya yang dimaksud dengan ini? Saya memiliki sedikit pengalaman tingkat rendah atau prosedural, sebagian besar OOP, sehingga mungkin menjelaskan betapa saya tidak terbiasa dengan ini. Dan dari sudut pandang yang lebih modern, sekarang sebagian besar histeria Object-Oriented dilewatkan (setidaknya sejauh yang saya tahu), seberapa akurat / relevan menurut Anda apakah bagian itu?
Terima kasih atas bantuan Anda.