Bu soru , "Neden insanlar hala eski programlama dillerini kullanıyor?" Değil. Bunu oldukça iyi anlıyorum. Aslında en iyi tanıdığım iki programlama dili, her ikisi de 70'lere dayanan C ve Scheme'dir.
Son zamanlarda C99 ve C11'deki C89 ile C89 arasındaki değişiklikleri okudum (hala pratikte C'nin en çok kullanılan versiyonu ve K & R'den öğrendiğim versiyon gibi görünüyor). Etrafa bakınca, yoğun kullanımdaki her programlama dili, en az on yılda bir kez yeni bir özellik kazanıyor gibi görünüyor. Fortran bile, hala kullananların çoğunun hala FORTRAN 77 kullanıyor olmasına rağmen hala yeni revizyonlar alıyor.
Bunu, örneğin, TeX'in dizgi sistemi yaklaşımıyla karşılaştırın. 1989'da, TeX 3.0'ın piyasaya sürülmesiyle Donald Knuth, TeX'in özelliklerin tamamlandığını ve gelecekteki sürümlerin yalnızca hata düzeltmeleri içereceğini açıkladı. Bunun ötesinde, ölümü üzerine "kalan tüm hataların özellik haline geleceğini" ve kesinlikle daha fazla güncelleme yapılmayacağını belirtti. Diğerleri TeX'i çatallamakta özgürdür ve bunu başarmıştır, ancak ortaya çıkan sistemler, resmi TeX'ten farklı olduklarını belirtmek için yeniden adlandırılmıştır. Bu, Knuth'un TeX'in mükemmel olduğunu düşündüğü için değil, elli yılda aynı şeyi yapacak olan istikrarlı, öngörülebilir bir sistemin değerini anladığı için değil.
Neden çoğu programlama dili tasarımcısı aynı prensibi izlemiyor? Elbette, bir dil nispeten yeni olduğunda, yerleşmeden önce hızlı bir değişim döneminden geçeceği anlaşılır. Ve hiç kimse, mevcut sözde standartları kodlamaktan veya istenmeyen okumaları düzeltmekten çok daha fazlasını yapmayan küçük değişikliklere karşı çıkamaz. Ancak bir dil on ya da yirmi yıl sonra hala gelişime ihtiyaç duyuyorsa, neden kullanılmakta olanı değiştirmeye çalışmak yerine neden sadece onu kullanmıyor ya da yeniden başlamıyorsunuz? Bazı insanlar gerçekten Fortran'da nesne yönelimli programlama yapmak istiyorlarsa, neden bu amaç için "Objective Fortran" oluşturup Fortran'ı yalnız bırakmıyorlar?
Sanırım, gelecekteki revizyonlardan bağımsız olarak, C89'un zaten bir standart olduğunu ve hiçbir şeyin insanların onu kullanmaya devam etmesini engellemediğini söyleyebilirim. Bu doğru, ancak çağrışımların sonuçları var. GCC, pedantik modda, ya C99 programında yeni standardı tamamen görmezden gelemeyeceği anlamına gelen, ya C99'da ya kullanım dışı ya da çok farklı bir anlama sahip olan sözdizimi hakkında uyarır. Öyleyse, C99'da bu ek yükü dili kullanan herkese dayatmak için yeterli olan bir fayda olmalı.
Bu gerçek bir soru, tartışmak için bir davet değil. Açıkçası bu konuda bir fikrim var, ama şu anda bunun neden sadece işler böyle yapılmadığını anlamaya çalışıyorum. Sanırım soru şudur:
Eski dili temel alan yeni bir dil yaratmanın aksine, bir dil standardını güncellemenin (gerçek veya algılanan) avantajları nelerdir?
--std=x
anahtarı), bu nedenle daha yeni standartlar oluşturmak sanki daha eski kodu dengesizleştiren araçlarla sonuçlanır.