Kertas Kajian 1998 Mencetuskan Perdebatan Mengenai Penyelesaian Reka Bentuk Bahasa Pengaturcaraan

Pasukan Komuniti BigGo
Kertas Kajian 1998 Mencetuskan Perdebatan Mengenai Penyelesaian Reka Bentuk Bahasa Pengaturcaraan

Sebuah kertas kajian 1998 yang mencadangkan corak Extensible Visitor untuk merapatkan pengaturcaraan berfungsi dan berorientasikan objek telah mencetuskan semula perbincangan mengenai cabaran asas reka bentuk bahasa pengaturcaraan. Kertas kajian tersebut menangani apa yang dikenali sebagai masalah ungkapan - kesukaran untuk memanjangkan kedua-dua jenis data dan operasi tanpa mengubah suai kod sedia ada.

Konteks Garis Masa (1998)

  • Java telah wujud tetapi tanpa generics
  • Scala belum dicipta lagi
  • Pelaksanaan Haskell tersedia tetapi dengan batasan prestasi
  • Common Lisp Object System ( CLOS ) telah wujud sejak tahun 1980-an

Cabaran Pengaturcaraan Teras

Penyelidikan ini menangani isu berterusan dalam pembangunan perisian: bagaimana untuk memanjangkan program dalam dua dimensi secara serentak. Pengaturcaraan berfungsi cemerlang dalam menambah operasi baharu kepada jenis data sedia ada, manakala pengaturcaraan berorientasikan objek memudahkan penambahan jenis data baharu. Walau bagaimanapun, kedua-dua pendekatan tidak mengendalikan kedua-dua sambungan dengan baik tanpa memerlukan perubahan kepada kod sedia ada.

Corak Extensible Visitor yang dicadangkan cuba menggabungkan kekuatan kedua-dua paradigma. Ia menyusun alat dalam gaya berfungsi sambil menggunakan teknik berorientasikan objek untuk mencapai kebolehanjalan data.

Perbandingan Paradigma Pengaturcaraan

Pendekatan Kekuatan Batasan
Pengaturcaraan Berfungsi Mudah untuk menambah operasi baharu Sukar untuk memperluaskan jenis data
Pengaturcaraan Berorientasikan Objek Mudah untuk menambah jenis data baharu Mencabar untuk menambah operasi merentas jenis
Corak Pelawat Boleh Diperluas Cuba kedua-dua sambungan Pelaksanaan yang kompleks
Fungsi Generik CLOS Penghantaran berbilang, fungsi luaran Memerlukan ekosistem Lisp

Persoalan Komuniti Mengenai Karya Terdahulu

Pembangun mempersoalkan sama ada penyelesaian 1998 mengabaikan teknologi sedia ada. Sistem Common Lisp Object System ( CLOS ) dari tahun 1980-an sudah menyediakan fungsi generik dan keupayaan penghantaran berbilang yang menangani cabaran kebolehanjalan yang serupa. CLOS meletakkan fungsi generik di luar definisi kelas, membolehkan fungsi baharu ditambah tanpa mengubah suai kelas sedia ada.

Sesetengah ahli komuniti menyatakan bahawa kelas jenis Haskell , yang tersedia sebelum 1998, menawarkan penyelesaian lain kepada persatuan jenis terbuka. Kelas jenis secara khusus mengendalikan cabaran memanjangkan set jenis yang diterangkan dalam kertas kajian tersebut.

Kebimbangan Praktikal Mengenai Sambungan Kod

Tidak semua orang menerima falsafah jangan sekali-kali mengubah suai kod sedia ada. Pengkritik berhujah bahawa sentiasa menambah tampung baharu tanpa pemfaktoran semula membawa kepada pangkalan kod yang semakin kompleks dan sukar diselenggara.

Jika anda berkeras untuk melakukan segala-galanya tanpa mengubah suai kod sedia ada, apa yang anda lakukan ialah melemparkan tampung lumpur baharu ke atas bola lumpur yang semakin membesar, dan bola lumpur itu tidak seperti apa yang anda akan bangunkan jika anda perlu melaksanakan semua keperluan semasa dalam slate kosong.

Perspektif ini mencadangkan bahawa kadang-kadang mengubah suai dan menambah baik kod sedia ada menghasilkan keputusan yang lebih baik daripada mengatasi batasan melalui corak reka bentuk yang kompleks.

Evolusi Bahasa Moden

Perbincangan ini menyerlahkan bagaimana bahasa pengaturcaraan telah berkembang sejak 1998. Java wujud tetapi tidak mempunyai generik, Scala belum dicipta lagi, dan banyak ciri bahasa moden yang menangani kebolehanjalan masih dalam pembangunan. Bahasa-bahasa hari ini menawarkan penyelesaian yang lebih canggih kepada cabaran reka bentuk asas ini, menjadikan beberapa pendekatan bersejarah kurang relevan.

Perdebatan berterusan menunjukkan bahawa persoalan reka bentuk bahasa pengaturcaraan teras kekal sebagai bidang penyelidikan dan perbincangan yang aktif, walaupun beberapa dekad selepas cadangan awal.

Rujukan: Synthesizing Object-Oriented and Functional Design to Promote Re-Use