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, que se remontan a los años 70.
Recientemente estaba leyendo sobre los cambios en C99 y C11 versus C89 (que parece ser la versión más utilizada de C en la práctica y la versión que aprendí de K&R). Mirando a su alrededor, parece que cada lenguaje de programación en uso intensivo obtiene una nueva especificación al menos una vez por década más o menos. Incluso Fortran todavía está recibiendo nuevas revisiones, a pesar del hecho de que la mayoría de las personas que lo usan todavía usan FORTRAN 77.
Compare esto con el enfoque del, por ejemplo, el sistema de composición tipográfica TeX. En 1989, con el lanzamiento de TeX 3.0, Donald Knuth declaró que TeX tenía características completas y las versiones futuras contendrían solo correcciones de errores. Incluso más allá de esto, ha declarado que después de 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 es porque Knuth piense que TeX es perfecto, sino porque comprende el valor de un sistema estable y predecible que hará lo mismo en cincuenta años que lo 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 idioma es relativamente nuevo, tiene sentido que atraviese un período de cambio rápido antes de establecerse. Y nadie puede realmente objetar cambios menores que no hacen mucho más que codificar pseudo-estándares existentes o corregir lecturas no deseadas. Pero cuando un idioma todavía parece necesitar mejorar después de diez o veinte años, ¿por qué no simplemente bifurcarlo o comenzar de nuevo, 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 "Objectran Fortran" para ese propósito y dejar solo a Fortran?
Supongo que se podría decir que, independientemente de futuras revisiones, C89 ya es un estándar y nada impide que la gente continúe usándolo. Esto es cierto, pero las connotaciones tienen consecuencias. GCC, en modo pedante, advertirá sobre la sintaxis que está en desuso o que 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 ya 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?
--std=x
conmutador de GCC ), por lo que no es como si la creación de estándares más nuevos resultara en herramientas que desestabilizan el código más antiguo.