Saya tidak bisa memikirkan tempat yang lebih baik di antara saudara kandung untuk mengajukan pertanyaan seperti itu. Awalnya saya ingin bertanya, "Apakah python bahasa OO murni?" tetapi mempertimbangkan masalah dan semacam ketidaknyamanan yang dialami orang saat mencoba mendefinisikan istilah saya memutuskan untuk memulai dengan mendapatkan definisi yang jelas untuk istilah itu sendiri.
Akan lebih adil untuk memulai dengan korespondensi oleh Dr. Alan Kay, yang telah menciptakan istilah (perhatikan inspirasi dalam analogi biologis terhadap sel atau benda hidup lainnya).
Ada beberapa cara berikut untuk mendekati tugas:
- Berikan analisis komparatif dengan mendaftarkan bahasa pemrograman yang dapat menunjukkan (atau gagal melakukannya) properti tertentu yang unik dan cukup untuk mendefinisikan istilah (meskipun Smalltalk, Scala,
Java, dan sebagainya - adalah contoh yang mungkin tetapi IMO cara ini tampaknya tidak benar-benar lengkap tidak berbuah ) - Berikan definisi formal (atau dekat dengan itu, misalnya dalam gaya akademik atau matematika).
- Berikan definisi filosofis yang benar-benar akan bergantung pada konteks semantik bahasa konkret atau pengalaman pemrograman apriori (harus ada peluang penjelasan yang berhasil oleh masyarakat).
Versi saya saat ini: "Jika bahasa pemrograman ( formal ) tertentu yang dapat (secara tata bahasa ) membedakan antara operasi dan operan serta menyimpulkan tentang jenis setiap operan apakah jenis ini adalah objek (dalam arti OOP) atau tidak maka kita sebut bahasa seperti itu bahasa OO selama ada setidaknya satu jenis dalam bahasa ini yang merupakan objek. Akhirnya, jika semua jenis bahasa juga objek, kami mendefinisikan bahasa tersebut sebagai bahasa OO murni (kuat). "
Akan menghargai setiap peningkatan yang mungkin terjadi. Seperti yang Anda lihat, saya baru saja membuat definisi bergantung pada istilah "objek" (sering sepenuhnya dirujuk sebagai kelas objek).
[EDIT]
Selain itu, saya menggunakan gagasan (untungnya dipahami dengan baik) tentang jenis seperti dalam bahasa yang diketik. Pemrograman tipe data atau pemrograman berorientasi tipe bukan hanya interpretasi sintaksis (dari teks program, yaitu bagaimana memperlakukan nilai-nilai literal dan variabel data tertentu - sesuatu yang berevolusi menjadi tipe keamanan) tetapi dapat dikaitkan dengan tata bahasa dan dipelajari secara formal (Menggunakan logika matematika) seperti yang disebut sistem tipe . Perhatikan bahwa membutuhkan sistem tipe tertentu untuk memiliki tipe universal yang disebut adalah salah satu cara mendefinisikan kemurnian bahasa OO (ada cara untuk memperluas ini secara semantik).
NB
bagaimana menjawab :
- ini membantu jika Anda menentukan buku atau referensi yang mendukung / menjelaskan pemahaman Anda tentang terminologi dan konsep (biasanya definisi yang baik mencakup atau referensi semua konsep tergantung kecuali dasar).
- jika mungkin tunjukkan kategori indentasi dari jawaban / definisi Anda jika tidak jelas sebaliknya (lihat di atas: 1 - dengan contoh bahasa, 2 - logika matematika, 3 - deskripsi teknis dan filosofi pemrograman)
- Klasifikasi itu penting (dan juga karena istilah pure-OO dimasukkan ke dalam istilah OO) ketika menjawab pertanyaan mencoba untuk mencampur unsur-unsur paradigma OO dari metodologi terkenal lainnya (dan sama sekali tidak membingungkan / tumpang tindih mereka, misalnya biasanya elemen pemrograman modular dapat dibahas. / diwujudkan dengan pemrograman OO): mencoba membedakan OOP dari (termasuk atau menjadi bagian dari) pemrograman fungsional, pemrograman logis (terutama sangat khusus), Jenis Data Abstarct (ADT), Modular, Metaprogramming (generik dan ekspansi-waktu makro LISP), Kontrak (misalnya Eiffel), Berorientasi aspek (AO), (perbedaan antara klasifikasi deklaratif dan fungsional serta definisi historis struktur Dijkstra jelas)
pada kesulitan memberikan definisi formal : cukup mengejutkan sangat mudah untuk memberikan deskripsi matematis tentang OOP dalam bentuk sistem logis (formal) tertentu (berdasarkan tipe yang paling mungkin) dan mendefinisikan satu konsep setelah yang lain. Seseorang bahkan dapat mencoba untuk melakukan sesuatu yang lebih praktis dengan menerapkan formalisme itu untuk mengetik pemeriksaan keselamatan atau aspek desain bahasa baru dari sekadar hiburan atau olahragaabstrak(juga mencari formulasi OOP dalam Teori Tipe Intuitionistic , tipe Dependent , secara mandiri, dalam formalisme FOL sebagai lambda kalkulus dan hanya dengan menggunakan teori kategori). Poin utama di sini adalah tidak mengejutkanformulasi seperti itu IMO sangat bias (cacat) oleh kemungkinan besar pada awalnya tidak lengkap pemahaman tentang OOP (dalam teknik komputer) dan akhirnya menjadi hampir tidak dapat diakses setelah itu (sehingga sulit berkontribusi ke belakang ke dunia pemrograman - mungkin kecuali persentase tertentu menemukan aplikasi kembali dari dunia formal dengan menjadi diintegrasikan ke dalam bahasa populer ).
Jadi ya, sulit untuk memberikan definisi yang "baik", bukan hanya definisi. Tapi saya yakin menanyakan ini di sini karena pengalaman dan keterlibatan langsung Anda, teman-teman.