İlk olarak, bazı bağlamlar (zaten çoğunuzun bildiği şeyler):
Her popüler programlama dili, sürümüyle işaretlenen çoğu zaman açık bir gelişime sahiptir: Java 5, 6, 7 vb., PHP 5.1, 5.2, 5.3 vb. Vardır. Yeni bir sürüm yayınlamak, yeni API'leri kullanılabilir hale getirir, hataları giderir, yeni özellikler, yeni çerçeveler vb. Sonuç olarak: hepsi iyi.
Peki ya dilin (veya platformun) problemleri? Eğer bir dilde yanlış bir şey olursa, geliştiriciler ya onlardan kaçınabilir (eğer yapabilirlerse) veya onunla yaşamayı öğrenirler.
Şimdi, bu dillerin geliştiricileri, onları kullanan programcılardan çok fazla geri bildirim alıyor. Bu nedenle, zaman (ve sürüm numaraları) geçtikçe, bu dillerdeki sorunların yavaş ama kesin olarak ortadan kalkacağını anlamış oluyor. Şey, tam olarak değil. Neden? Geriye dönük uyumluluk, bu yüzden. Ama bu niye böyle? Daha somut bir durum için aşağıyı okuyun.
Sorumu açıklamanın en iyi yolu, PHP'yi örnek olarak kullanmaktır:
PHP binlerce insan tarafından sevilir ve nefret edilir. Tüm dillerin kusurları vardır, ancak görünüşe göre PHP özeldir. Bu blog gönderisine göz atın . PHP'de sözde kusurların çok uzun bir listesi vardır. Şimdi, bir PHP geliştiricisi değilim (henüz değil), ancak hepsini okudum ve bu listenin büyük bir kısmının gerçekten gerçek meseleler olduğundan eminim. (Potansiyel olarak öznel olduğu için hepsi değil).
Şimdi, aktif olarak PHP'yi geliştirenlerden biri olsaydım, kesinlikle tek tek bu sorunları çözmek isterdim. Ancak, bunu yaparsam, dilin belirli bir davranışına dayanan kod, yeni sürümde çalışıyorsa bozulur. 2 kelimeyle özetleyin: geriye uyumluluk.
Anlamadığım şey: neden PHP'yi geriye dönük olarak uyumlu tutmalıyım? PHP 8'i tüm bu sorunları çözdüğümde salıverirsem, "Bu sürümde eski kod çalıştırma!" Diyerek büyük bir uyarı veremem?
İtiraz denilen bir şey var. Yıllarca yaşadık ve çalışıyor. PHP bağlamında: insanların bugünlerde mysql_*
fonksiyonların kullanımını aktif olarak nasıl engellediğine bakın (ve bunun yerine tavsiye mysqli_*
ve PDO). Azaltma işe yarıyor. Kullanabiliriz. Kullanmalıyız. İşlevler için çalışıyorsa, neden tüm diller için çalışmamalı?
Diyelim ki (PHP geliştiricisi) bunu yapıyorum:
- Tüm bu hataların düzeltilmesiyle yeni bir PHP sürümü (diyelim 8).
- Yeni projeler bu sürümü kullanmaya başlayacak, çünkü çok daha iyi, daha net ve daha güvenli.
- Ancak, PHP'nin eski sürümlerini terk etmemek için, güncellemeleri yayınlamaya, güvenlik sorunlarını, hataları vb. Düzeltmeye devam ediyorum. Bu, burada listelemediğim nedenlerden dolayı mantıklı geliyor. Yaygın bir uygulamadır: örneğin, çoğunlukla 5.5.x sürümüne odaklanmış olsa da Oracle'ın MySQL'in 5.1.x sürümünü nasıl güncellediğine bakın.
- Yaklaşık 3 veya 4 yıl sonra, PHP'nin eski sürümlerini güncellemeyi bırakıp ölüme terk ediyorum. Bu iyi, çünkü o 3 veya 4 yıl içerisinde, çoğu proje yine de PHP 8'e geçecek.
Sorum şu: Bütün bu adımlar bir anlam ifade ediyor mu? Yapması çok mu zor olurdu? Yapılabilirse, neden yapılmıyor?
Evet, olumsuz tarafı geriye dönük uyumluluğu kırmanızdır. Ama bu bedel ödemeye değer değil mi? Bir üst olarak, 3 ya da 4 yıl içinde, problemlerinin% 90'ının sabit olduğu bir dile sahip olacaksınız… çalışmak için daha keyifli bir dil. Adı popülerliğini sağlayacak.
EDIT : Tamam, 3 veya 4 yıl içinde insanların varsayımsal PHP 8'e taşınacağını söylediğimde kendimi doğru ifade etmedim. Demek istediğim şuydu: 3 veya 4 yıl içinde, eğer insanlar başlarsa PHP 8 kullanacaklar yeni proje.
mysql_*
örneğin 5.5'te kullanımdan kaldırıldı), ancak dışarıdaki barındırma sağlayıcılarının çoğunluğunun bir veya iki sürümünün geri alınması durumunda (5.3 ise - ne yazık ki - hala çoğunluğunun ne olduğu sağlayıcılar sunar).