Questa domanda non è, "Perché le persone usano ancora i vecchi linguaggi di programmazione?" Lo capisco abbastanza bene. In effetti i due linguaggi di programmazione che conosco meglio sono C e Scheme, entrambi risalenti agli anni '70.
Recentemente stavo leggendo i cambiamenti in C99 e C11 contro C89 (che sembra essere ancora la versione più utilizzata di C in pratica e la versione che ho imparato da K & R). Guardandosi attorno, sembra che ogni linguaggio di programmazione in uso pesante ottenga una nuova specifica almeno una volta ogni dieci anni circa. Persino Fortran sta ancora ottenendo nuove revisioni, nonostante il fatto che la maggior parte delle persone lo stia utilizzando ancora FORTRAN 77.
Confrontalo con l'approccio di, diciamo, il sistema di composizione TeX. Nel 1989, con il rilascio di TeX 3.0, Donald Knuth dichiarò che TeX era completo di funzionalità e le versioni future conterrebbero solo correzioni di bug. Anche al di là di questo, ha dichiarato che alla sua morte, "tutti gli altri bug diventeranno funzionalità" e assolutamente non verranno fatti ulteriori aggiornamenti. Altri sono liberi di puntare TeX e lo hanno fatto, ma i sistemi risultanti vengono rinominati per indicare che sono diversi dal TeX ufficiale. Questo non perché Knuth pensa che TeX sia perfetto, ma perché comprende il valore di un sistema stabile e prevedibile che farà la stessa cosa in cinquant'anni che fa ora.
Perché la maggior parte dei progettisti di linguaggi di programmazione non segue lo stesso principio? Ovviamente, quando una lingua è relativamente nuova, ha senso che passerà attraverso un periodo di rapidi cambiamenti prima di sistemarsi. E nessuno può obiettare a modifiche minori che non fanno molto più che codificare pseudo-standard esistenti o correggere letture non volute. Ma quando una lingua sembra ancora aver bisogno di miglioramenti dopo dieci o venti anni, perché non limitarsi a biforcarla o ricominciare da capo, piuttosto che cercare di cambiare ciò che è già in uso? Se alcune persone vogliono davvero programmare in Fortran la programmazione orientata agli oggetti, perché non creare "Objective Fortran" a tale scopo e lasciare da solo Fortran?
Suppongo che si possa dire che, indipendentemente dalle revisioni future, C89 è già uno standard e nulla impedisce alle persone di continuare a usarlo. Questo è vero, ma le connotazioni hanno delle conseguenze. GCC, in modalità pedante, avverte della sintassi che è deprecata o ha un significato leggermente diverso in C99, il che significa che i programmatori C89 non possono ignorare del tutto il nuovo standard. Pertanto, è necessario apportare alcuni benefici in C99 sufficienti per imporre questo sovraccarico a tutti coloro che utilizzano la lingua.
Questa è una domanda reale, non un invito a discutere. Ovviamente ho un'opinione su questo, ma al momento sto solo cercando di capire perché questo non è solo il modo in cui le cose sono già fatte. Suppongo che la domanda sia:
What are the (real or perceived) advantages of updating a language standard, as opposed to creating a new language based on the old?