Esta pergunta não é: "Por que as pessoas ainda usam linguagens de programação antigas?" Eu entendo isso muito bem. De fato, as duas linguagens de programação que conheço melhor são C e Scheme, ambas datadas dos anos 70.
Recentemente, eu estava lendo sobre as mudanças em C99 e C11 versus C89 (que parece ainda ser a versão mais usada do C na prática e a versão que aprendi com a K&R). Olhando em volta, parece que toda linguagem de programação em uso pesado recebe uma nova especificação pelo menos uma vez a cada década. Até o Fortran ainda está recebendo novas revisões, apesar do fato de a maioria das pessoas ainda estar usando o FORTRAN 77.
Compare isso com a abordagem, digamos, do sistema de composição TeX. Em 1989, com o lançamento do TeX 3.0, Donald Knuth declarou que o TeX estava completo e os lançamentos futuros conteriam apenas correções de bugs. Mesmo além disso, ele afirmou que, após sua morte, "todos os bugs restantes se tornarão recursos" e absolutamente nenhuma atualização adicional será feita. Outros são livres para distribuir o TeX e o fizeram, mas os sistemas resultantes são renomeados para indicar que são diferentes do TeX oficial. Isso não ocorre porque Knuth acha que o TeX é perfeito, mas porque ele entende o valor de um sistema estável e previsível que fará a mesma coisa em cinquenta anos que faz agora.
Por que a maioria dos designers de linguagem de programação não segue o mesmo princípio? Obviamente, quando um idioma é relativamente novo, faz sentido passar por um período de rápidas mudanças antes de se estabelecer. E ninguém pode realmente se opor a pequenas mudanças que não fazem muito mais do que codificar pseudo-padrões existentes ou corrigir leituras indesejadas. Mas quando um idioma ainda parece precisar de melhorias depois de dez ou vinte anos, por que não forçar ou recomeçar, em vez de tentar mudar o que já está em uso? Se algumas pessoas realmente querem fazer programação orientada a objetos no Fortran, por que não criar o "Objective Fortran" para esse fim e deixar o Fortran sozinho?
Suponho que se possa dizer que, independentemente de futuras revisões, o C89 já é um padrão e nada impede que as pessoas continuem a usá-lo. Isso é verdade, mas as conotações têm consequências. O GCC, no modo pedante, avisa sobre a sintaxe que está obsoleta ou que tem um significado sutilmente diferente no C99, o que significa que os programadores do C89 não podem simplesmente ignorar totalmente o novo padrão. Portanto, deve haver algum benefício no C99 que seja suficiente para impor essa sobrecarga a todos que usam o idioma.
Esta é uma pergunta real, não um convite para discutir. Obviamente, tenho uma opinião sobre isso, mas no momento estou apenas tentando entender por que não é assim que as coisas já são feitas. Suponho que a pergunta é:
Quais são as vantagens (reais ou percebidas) de atualizar um padrão de idioma, em vez de criar um novo idioma com base no antigo?
--std=x
comutador do GCC ); portanto, não é como se a criação de novos padrões resultasse em ferramentas que desestabilizassem códigos antigos.