OOP sendiri tidak banyak berubah sejak awal. Beberapa sudut pandang baru telah dieksplorasi, tetapi prinsip-prinsip inti masih sama. Jika ada, pengetahuan kolektif yang dikumpulkan selama bertahun-tahun membuat hidup programmer lebih mudah daripada lebih sulit. Pola desain bukan halangan; mereka menyediakan kotak peralatan solusi untuk masalah standar, disaring dari pengalaman bertahun-tahun.
Jadi mengapa Anda menganggap OOP hari ini lebih kompleks daripada ketika Anda mulai menggunakannya?
Salah satu alasannya mungkin karena kode Anda terkena menjadi lebih kompleks - bukan karena OOP telah menjadi lebih kompleks, tetapi karena Anda telah maju pada tangga pembelajaran, dan bisa membaca basis kode yang lebih besar dan lebih kompleks.
Alasan lain mungkin karena paradigma kompleksitas tidak berubah, ukuran dan kompleksitas proyek perangkat lunak rata-rata mungkin sangat baik. Dengan kekuatan pemrosesan yang tersedia pada ponsel tingkat pelanggan yang akan menjadi mimpi basah pengembang di server kurang dari dua dekade lalu, masyarakat umum pada dasarnya mengharapkan GUI animasi apik untuk aplikasi pembuangan sekalipun yang termurah, dan PC desktop entry-level menjadi lebih kuat daripada "superkomputer" tahun 1980-an, wajar saja jika bilah telah dinaikkan sejak awal Smalltalk dan C ++.
Dan kemudian ada fakta bahwa dalam aplikasi modern, konkurensi dan paralelisme adalah norma daripada pengecualian, dan aplikasi sering perlu berkomunikasi antara mesin yang berbeda, mengeluarkan dan mengurai seluruh kebun binatang protokol. Meskipun OOP hebat sebagai paradigma organisasi, OOP memiliki keterbatasan, seperti halnya paradigma lain: misalnya, OOP tidak memberikan banyak abstraksi untuk konkurensi (sebagian besar implementasi lebih atau kurang merupakan renungan, atau di-outsource ke perpustakaan sepenuhnya) , dan itu bukan pendekatan terbaik untuk membangun parser dan mengubah data. Pemrograman modern sering mengalami keterbatasan paradigma OOP, dan pola desain hanya dapat membawa Anda sejauh ini. (Sendiri, Saya menganggap fakta bahwa kita membutuhkan pola desain tanda ini - jika paradigma menyediakan solusi ini di luar kotak, itu akan lebih ekspresif untuk masalah ini, dan solusi standar akan jelas. Tidak ada pola desain untuk menggambarkan pewarisan metode, karena ini adalah fitur inti dari OOP; tetapi ada Pola Pabrik, karena OOP tidak memberikan cara alami yang jelas untuk membuat objek secara polimorfis dan transparan.)
Karena itu, sebagian besar bahasa OOP modern menggabungkan fitur dari paradigma lain, yang membuatnya lebih ekspresif dan lebih kuat, tetapi juga lebih kompleks. C # adalah contoh utama untuk ini: ia memiliki akar OOP yang jelas, tetapi fitur seperti delegasi, peristiwa, inferensi tipe, tipe data varian, atribut, fungsi anonim, ekspresi lambda, generik, dll., Berasal dari paradigma lain, terutama Pemrograman Fungsional .