Saya sudah sering mendengar tentang pemrograman berorientasi aspek, kebanyakan bahwa itu adalah teknologi "generasi berikutnya" dalam pemrograman dan akan 'membunuh' OOP.
Apakah tepat? Apakah OOP akan mati atau apa alasannya?
sumber
Saya sudah sering mendengar tentang pemrograman berorientasi aspek, kebanyakan bahwa itu adalah teknologi "generasi berikutnya" dalam pemrograman dan akan 'membunuh' OOP.
Apakah tepat? Apakah OOP akan mati atau apa alasannya?
Setiap kali seseorang memberi tahu Anda bahwa satu teknologi perangkat lunak akan membunuh yang lain atau mendominasi seluruh pasar / penggunaan / audiens, ingat ini:
Ekosistem waras (dinamis tetapi stabil) terbuat dari berbagai spesies yang sangat berbeda.
Itu berarti bahwa setiap teknologi hyped baru akan melewati kurva sensasi dan pada akhirnya akan menemukan itu spesifik (s) tujuan melalui waktu dan pengalaman dengannya.
Itu juga berarti bahwa konsep ekstrem seperti pemrograman berorientasi aspek berguna jika diperlukan, artinya, tidak selalu dan tidak terlalu sering, karena biaya tersirat.
Tetapi sudah ada tempatnya, seperti pemrograman OOP, seperti pemrograman generik, seperti pemrograman fungsional, seperti pemrograman prosedural, dll.
Apakah Anda memperhatikan bahwa bahasa yang lebih banyak digunakan (dan populer secara kontroversial) dan tersebar luas di kehidupan nyata adalah "tidak murni"? Itu karena memungkinkan beberapa paradigma membuatnya lebih fleksibel untuk mengubah konteks melalui waktu dan mereka mengisi lebih banyak relung penggunaan.
OOP tidak akan mati karena AOP. AOP menambahkan beberapa nilai, tetapi ia hidup berdampingan secara sempurna dengan OOP. Saya tidak berpikir bahwa pemrograman fungsional akan membunuh OOP juga. OOP terlalu cocok untuk berbagai jenis domain masalah, tidak masuk akal untuk menggantinya dengan paradigma fungsional.
sumber
Paradigma datang dan pergi, tetapi kode warisan selamanya. Akan selalu ada kode C ++ untuk dipertahankan, jadi OOP tidak akan pernah mati sepenuhnya.
sumber
Jawaban singkat: Tidak, saya rasa tidak.
Jawaban yang lebih panjang: Dari apa yang saya mengerti tentang AOP, itu bukan paradigma pemrograman itu sendiri (seperti pada, itu tidak menggantikan OOP), tetapi lebih dari tambahan, toolkit yang membantu Anda menulis metode yang lebih pendek, lebih sederhana, kelas tanggung jawab tunggal , dan sebagainya. Tetapi itu tidak menggantikan OOP.
Hal yang tidak (setidaknya sebagian) menggantikan atau menambah OOP adalah pemrograman fungsional, yang sebenarnya merupakan paradigma pemrograman yang berbeda (meskipun dapat dicampur dengan OOP, misalnya dalam bahasa pemrograman Scala ). Itu lebih suka struktur data abadi dan semua jenis fitur mewah yang cenderung membuat frustasi pengembang OOP, terutama ketika datang ke concurrency.
sumber
OOP banyak dibicarakan belakangan ini karena dianggap sebagai pendekatan de facto dalam banyak situasi. AOP tidak pernah turun dari tanah sebagai gerakan massa apa pun.
sumber
Saya ingat pernah mendengar tentang Pemrograman Berorientasi Aspek untuk pertama kalinya duduk dalam Tutorial OOPSLA '97. Mereka mengatakan akan membunuh OO saat itu. Sejak itu, OO hanya tumbuh melampaui harapan terliar. AOP, masih hampir tidak dikenal dengan dasarnya tidak berdampak pada industri komputasi. Saya pikir jawabannya jelas bahwa AOP bukan pembunuh OO.
sumber
Lihatlah beberapa sistem AOP yang ada. Mereka bergantung pada Anda memiliki beberapa kode yang ditulis dalam beberapa bentuk - misalnya, Spring AOP bergantung pada Anda memiliki metode Anda didefinisikan pada kelas. Castle Windsor mendukungnya dalam C #, yang merupakan bahasa berorientasi objek.
Secara teoritis Anda dapat beralih dari OOP ke pemrograman terstruktur dan masih mempertahankan AOP, tetapi dalam praktiknya, itu akan sulit. Mudah untuk mensubklasifikasikan sesuatu, mengganti metode yang relevan untuk memanggil filter sebelum / sesudah yang sesuai, dan meneruskannya dalam proses injeksi ketergantungan.
Sangat sulit dibandingkan dengan menulis ulang panggilan metode statis untuk merutekan ke metode trampolin yang dirancang untuk memanggil filter yang ditentukan pengguna.
Jadi dari sudut pandang implementasi umum, AOP membutuhkan OOP.
sumber
Meskipun OOP jelas bukan peluru perak, hal yang sama dapat dikatakan untuk AOP. Ini mendukung desain berbasis komponen, namun dalam skema yang lebih besar komponen Anda adalah objek baru dan antarmuka komponen pada dasarnya adalah daftar metode transaksional, yang BUKAN benar OOP.
AOP lebih lanjut dan desain berbasis komponen mendukung Model Data Anemik, yang orang lebih pintar dari saya sendiri punya kritik.
http://martinfowler.com/bliki/AnemicDomainModel.html
(Saya tahu artikel di atas sudah tua, namun sangat relevan)
Intinya adalah bahwa sistem AOP di sini untuk tetap tetapi mereka juga jauh dari sempurna. Tidak ada sistem yang sempurna.
sumber