Questa domanda non è: "Perché le persone usano ancora 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 ho letto delle modifiche in C99 e C11 rispetto a C89 (che sembra essere ancora la versione più utilizzata di C in pratica e la versione che ho imparato da K&R). Guardando in giro, sembra che ogni linguaggio di programmazione in uso pesante ottenga una nuova specifica almeno una volta ogni decennio circa. Anche Fortran sta ancora ricevendo nuove revisioni, nonostante il fatto che la maggior parte delle persone lo stia ancora utilizzando FORTRAN 77.
In contrasto con l'approccio, diciamo, del 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 errori. Anche oltre a ciò, ha dichiarato che alla sua morte, "tutti i bug rimanenti diventeranno funzionalità" e assolutamente non verranno effettuati ulteriori aggiornamenti. Altri sono liberi di fork di TeX e lo hanno fatto, ma i sistemi risultanti vengono rinominati per indicare che sono diversi dal TeX ufficiale. Ciò 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? Naturalmente, quando una lingua è relativamente nuova, ha senso che attraverserà un periodo di rapido cambiamento prima di stabilizzarsi. E nessuno può davvero obiettare a cambiamenti minori che non fanno molto di più che codificare pseudo-standard esistenti o correggere letture indesiderate. Ma quando una lingua sembra aver ancora bisogno di miglioramenti dopo dieci o venti anni, perché non limitarla o ricominciare da capo, piuttosto che provare a cambiare ciò che è già in uso? Se alcune persone vogliono davvero fare una programmazione orientata agli oggetti in Fortran, perché non creare "Objective Fortran" a tale scopo e lasciare in sé Fortran?
Suppongo che si possa dire che, indipendentemente dalle future revisioni, C89 è già uno standard e nulla impedisce alle persone di continuare a usarlo. Questo è un po 'vero, ma le connotazioni hanno conseguenze. GCC, in modalità pedante, avvertirà della sintassi che è deprecata o ha un significato leggermente diverso in C99, il che significa che i programmatori C89 non possono semplicemente ignorare totalmente il nuovo standard. Quindi ci deve essere qualche vantaggio in C99 che è sufficiente per imporre questo sovraccarico a tutti coloro che usano la lingua.
Questa è una vera domanda, 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:
Quali sono i vantaggi (reali o percepiti) dell'aggiornamento di uno standard linguistico rispetto alla creazione di un nuovo linguaggio basato sul vecchio?
--std=x
switch di GCC ), quindi non è come se la creazione di standard più recenti produca strumenti che destabilizzano il codice più vecchio.