Cette question n'est pas "Pourquoi les gens utilisent-ils encore les anciens langages de programmation?" Je le comprends très bien. En fait, les deux langages de programmation que je connais le mieux sont C et Scheme, tous deux remontant aux années 70.
Je lisais récemment des articles sur les modifications apportées aux versions C99 et C11 par rapport à C89 (qui semble toujours être la version de C la plus utilisée dans la pratique et la version que j'ai apprise de K & R). En regardant autour de vous, il semble que chaque langage de programmation très utilisé reçoit une nouvelle spécification au moins une fois par décennie environ. Même Fortran reçoit toujours de nouvelles révisions, malgré le fait que la plupart des utilisateurs l'utilisent toujours.
Comparez cela à l’approche du système de composition TeX, par exemple. En 1989, avec la sortie de TeX 3.0, Donald Knuth déclara que TeX était complet et que les versions futures ne contiendraient que des corrections de bugs. Même au-delà de cela, il a déclaré qu'à sa mort, "tous les bogues restants deviendront des fonctionnalités" et qu'aucune autre mise à jour ne sera faite. D'autres sont libres d'utiliser TeX et l'ont fait, mais les systèmes résultants sont renommés pour indiquer qu'ils sont différents de TeX officiel. Ce n'est pas parce que Knuth pense que TeX est parfait, mais parce qu'il comprend la valeur d'un système stable et prévisible qui fera la même chose dans cinquante ans.
Pourquoi la plupart des concepteurs de langages de programmation ne suivent-ils pas le même principe? Bien sûr, lorsqu'une langue est relativement nouvelle, il est logique qu'elle passe par une période de changements rapides avant de s'installer. Et personne ne peut vraiment s'opposer à des modifications mineures qui ne font que codifier des pseudo-normes existantes ou corriger des lectures inattendues. Mais lorsqu'une langue semble encore avoir besoin d'amélioration après dix ou vingt ans, pourquoi ne pas simplement la bifurquer ou recommencer, plutôt que d'essayer de changer ce qui est déjà utilisé? Si certaines personnes veulent vraiment faire de la programmation orientée objet en Fortran, pourquoi ne pas créer "Objective Fortran" à cette fin et laisser Fortran lui-même?
Je suppose que l’on pourrait dire que, indépendamment des révisions futures, C89 est déjà une norme et que rien n’empêche les utilisateurs de continuer à l’utiliser. C'est un peu vrai, mais les connotations ont des conséquences. En mode pédant, GCC mettra en garde sur une syntaxe dépréciée ou ayant une signification légèrement différente en C99, ce qui signifie que les programmeurs C89 ne peuvent tout simplement pas ignorer la nouvelle norme. C99 doit donc comporter un avantage suffisant pour imposer ces frais généraux à tous les utilisateurs du langage.
C'est une vraie question, pas une invitation à argumenter. Bien entendu, j’ai une opinion à ce sujet, mais pour le moment, j’essaie seulement de comprendre pourquoi ce n’est pas simplement la façon dont les choses se passent. Je suppose que la question est:
Quels sont les avantages (réels ou perçus) de la mise à jour d'une norme linguistique par opposition à la création d'une nouvelle langue basée sur l'ancienne?
--std=x
commutateur de GCC ). Ce n'est donc pas comme si la création de normes plus récentes aboutissait à des outils qui déstabilisaient le code plus ancien.