Esta pregunta no es, "¿Por qué la gente todavía usa lenguajes de programación antiguos?" Lo entiendo bastante bien. De hecho, los dos lenguajes de programación que mejor conozco son C y Scheme, ambos de los cuales se remontan a los años 70.
Recientemente estuve leyendo sobre los cambios en C99 y C11 versus C89 (que parece ser la versión más usada de C en la práctica y la versión que aprendí de K & R). Mirando alrededor, parece que cada lenguaje de programación en uso intensivo obtiene una nueva especificación al menos una vez por década. Incluso Fortran sigue recibiendo nuevas revisiones, a pesar del hecho de que la mayoría de las personas que lo usan siguen usando FORTRAN 77.
Contraste esto con el enfoque de, digamos, el sistema de composición tipográfica TeX. En 1989, con el lanzamiento de TeX 3.0, Donald Knuth declaró que TeX estaba completo y que las futuras versiones contendrían solo correcciones de errores. Incluso más allá de esto, ha declarado que, tras su muerte, "todos los errores restantes se convertirán en características" y no se realizarán más actualizaciones. Otros son libres de bifurcar TeX y lo han hecho, pero los sistemas resultantes se renombran para indicar que son diferentes del TeX oficial. Esto no se debe a que Knuth piense que TeX es perfecto, sino porque entiende el valor de un sistema estable y predecible que hará lo mismo en cincuenta años que hace ahora.
¿Por qué la mayoría de los diseñadores de lenguajes de programación no siguen el mismo principio? Por supuesto, cuando un lenguaje es relativamente nuevo, tiene sentido que pasará por un período de rápido cambio antes de establecerse. Y nadie puede realmente objetar los cambios menores que no hacen mucho más que codificar los pseudo estándares existentes o corregir lecturas no deseadas. Pero cuando un idioma parece necesitar una mejora después de diez o veinte años, ¿por qué no simplemente bifurcarlo o volver a empezar, en lugar de intentar cambiar lo que ya está en uso? Si algunas personas realmente quieren hacer programación orientada a objetos en Fortran, ¿por qué no crear el "Objetivo Fortran" para ese propósito y dejar a Fortran solo?
Supongo que se podría decir que, independientemente de las revisiones futuras, C89 ya es un estándar y nada impide que las personas continúen usándolo. Esto es cierto, pero las connotaciones tienen consecuencias. GCC, en modo pedante, advertirá sobre la sintaxis que está obsoleta o tiene un significado sutilmente diferente en C99, lo que significa que los programadores de C89 no pueden ignorar totalmente el nuevo estándar. Por lo tanto, debe haber algún beneficio en C99 que sea suficiente para imponer esta sobrecarga a todos los que usan el lenguaje.
Esta es una pregunta real, no una invitación a discutir. Obviamente tengo una opinión sobre esto, pero en este momento solo estoy tratando de entender por qué esto no es solo cómo se hacen las cosas. Supongo que la pregunta es:
¿Cuáles son las ventajas (reales o percibidas) de actualizar un estándar de idioma, en lugar de crear un nuevo idioma basado en el antiguo?