Pertama, beberapa konteks (hal-hal yang sebagian besar dari Anda tahu):
Setiap bahasa pemrograman populer memiliki evolusi yang jelas, sebagian besar waktu ditandai oleh versinya: Anda memiliki Java 5, 6, 7 dll., PHP 5.1, 5.2, 5.3 dll. Melepaskan versi baru membuat API baru tersedia, memperbaiki bug, menambahkan fitur baru, kerangka kerja baru dll. Jadi semuanya: bagus.
Tapi bagaimana dengan masalah bahasa (atau platform)? Jika dan ketika ada sesuatu yang salah dalam suatu bahasa, pengembang menghindarinya (jika mereka bisa) atau mereka belajar untuk hidup dengannya.
Sekarang, para pengembang bahasa tersebut mendapatkan banyak umpan balik dari para programmer yang menggunakannya. Jadi masuk akal bahwa, seiring berjalannya waktu (dan nomor versi), masalah-masalah dalam bahasa-bahasa itu perlahan-lahan akan hilang. Yah, tidak juga. Mengapa? Kompatibilitas mundur, itu sebabnya. Tetapi mengapa demikian? Baca di bawah untuk situasi yang lebih konkret.
Cara terbaik saya bisa menjelaskan pertanyaan saya adalah dengan menggunakan PHP sebagai contoh:
PHP dicintai, dan dibenci oleh ribuan orang. Semua bahasa memiliki kekurangan, tetapi ternyata PHP itu spesial. Lihat posting blog ini . Ini memiliki daftar yang sangat panjang dari kekurangan yang disebut dalam PHP. Sekarang, saya bukan pengembang PHP (belum), tetapi saya membaca semua itu dan saya yakin bahwa sebagian besar daftar itu memang masalah nyata. (Tidak semuanya, karena berpotensi subyektif).
Sekarang, jika saya adalah salah satu dari orang-orang yang secara aktif mengembangkan PHP, saya pasti ingin memperbaiki masalah itu, satu per satu. Namun, jika saya melakukan itu, maka kode yang bergantung pada perilaku bahasa tertentu akan rusak jika berjalan pada versi baru. Ringkasnya dalam 2 kata: kompatibilitas ke belakang.
Yang tidak saya mengerti adalah: mengapa saya harus menjaga agar PHP tetap kompatibel? Jika saya merilis PHP versi 8 dengan semua masalah tersebut telah diperbaiki, tidak bisakah saya memberikan peringatan besar dengan mengatakan: "Jangan jalankan kode lama pada versi ini!"?
Ada hal yang disebut penghinaan. Kami memilikinya selama bertahun-tahun dan berhasil. Dalam konteks PHP: lihat bagaimana orang-orang saat ini secara aktif mencegah penggunaan mysql_*
fungsi (dan sebagai gantinya merekomendasikan mysqli_*
dan PDO). Penghentian bekerja. Kita bisa menggunakannya. Kita harus menggunakannya. Jika berfungsi untuk fungsi, mengapa itu tidak berfungsi untuk seluruh bahasa?
Katakanlah saya (pengembang PHP) melakukan ini:
- Luncurkan versi baru PHP (misalkan 8) dengan semua kekurangan itu diperbaiki
- Proyek-proyek baru akan mulai menggunakan versi itu, karena jauh lebih baik, lebih jelas, lebih aman, dll.
- Namun, agar tidak meninggalkan versi PHP yang lebih lama, saya terus merilis pembaruan untuk itu, memperbaiki masalah keamanan, bug dll. Ini masuk akal karena alasan saya tidak mendaftar di sini. Ini praktik umum: lihat misalnya bagaimana Oracle terus memperbarui versi 5.1.x dari MySQL, meskipun sebagian besar berfokus pada versi 5.5.x.
- Setelah sekitar 3 atau 4 tahun, saya berhenti memperbarui versi PHP lama dan membiarkannya mati. Ini bagus, karena dalam 3 atau 4 tahun itu, sebagian besar proyek akan beralih ke PHP 8.
Pertanyaan saya adalah: Apakah semua langkah ini masuk akal? Apakah akan sangat sulit untuk dilakukan? Jika itu bisa dilakukan, lalu mengapa itu tidak dilakukan?
Ya, sisi buruknya adalah Anda merusak kompatibilitas. Tapi bukankah itu harga yang pantas dibayar? Sebagai terbalik, dalam 3 atau 4 tahun Anda akan memiliki bahasa yang memiliki 90% dari masalahnya diperbaiki .... bahasa yang jauh lebih menyenangkan untuk digunakan. Namanya akan memastikan popularitasnya.
EDIT : OK, jadi saya tidak menyatakan diri dengan benar ketika saya mengatakan bahwa dalam 3 atau 4 tahun orang akan pindah ke hipotesis PHP 8. Apa yang saya maksudkan adalah: dalam 3 atau 4 tahun, orang akan menggunakan PHP 8 jika mereka memulai proyek baru.
mysql_*
sudah usang dalam 5,5, misalnya), tapi itu tidak relevan jika mayoritas penyedia hosting di luar sana satu atau bahkan dua versi kembali (5,3 adalah - sayangnya - masih apa mayoritas penawaran penyedia).