Diese Frage lautet nicht: "Warum verwenden die Leute immer noch alte Programmiersprachen?" Ich verstehe das ganz gut. Die beiden Programmiersprachen, die ich am besten kenne, sind C und Scheme. Beide stammen aus den 70er Jahren.
Kürzlich las ich über die Änderungen in C99 und C11 gegenüber C89 (die in der Praxis immer noch die am häufigsten verwendete Version von C zu sein scheint und die Version, die ich von K & R gelernt habe). Wenn man sich umschaut, sieht es so aus, als würde jede stark genutzte Programmiersprache mindestens einmal pro Jahrzehnt oder so eine neue Spezifikation erhalten. Sogar Fortran wird immer wieder überarbeitet, obwohl die meisten Benutzer FORTRAN 77 verwenden.
Vergleichen Sie dies beispielsweise mit dem Ansatz des Schriftsatzsystems TeX. Im Jahr 1989, mit der Veröffentlichung von TeX 3.0, erklärte Donald Knuth, dass TeX über alle Funktionen verfügt und zukünftige Versionen nur noch Fehlerkorrekturen enthalten würden. Auch darüber hinaus hat er erklärt, dass nach seinem Tod "alle verbleibenden Bugs zu Features werden" und absolut keine weiteren Updates vorgenommen werden. Andere können TeX nach Belieben verteilen und haben dies bereits getan. Die resultierenden Systeme werden jedoch umbenannt, um anzuzeigen, dass sie sich von der offiziellen TeX unterscheiden. Dies liegt nicht daran, dass Knuth TeX für perfekt hält, sondern daran, dass er den Wert eines stabilen, vorhersehbaren Systems versteht, das in fünfzig Jahren dasselbe tun wird wie jetzt.
Warum folgen die meisten Programmiersprachendesigner nicht demselben Prinzip? Wenn eine Sprache relativ neu ist, ist es natürlich sinnvoll, dass sie eine Zeit des raschen Wandels durchläuft, bevor sie sich niederlässt. Und niemand kann gegen geringfügige Änderungen Einwände erheben, die nicht viel mehr bewirken, als bestehende Pseudostandards zu kodifizieren oder unbeabsichtigte Messwerte zu korrigieren. Aber wenn eine Sprache nach zehn oder zwanzig Jahren noch verbesserungswürdig zu sein scheint, warum nicht einfach die Sprache wechseln oder neu anfangen, anstatt zu versuchen, das zu ändern, was bereits verwendet wird? Wenn einige Leute wirklich objektorientiertes Programmieren in Fortran wollen, warum nicht "Objective Fortran" für diesen Zweck erstellen und Fortran selbst in Ruhe lassen?
Ich nehme an, man könnte sagen, dass C89 unabhängig von zukünftigen Revisionen bereits ein Standard ist und nichts die Leute davon abhält, ihn weiter zu verwenden. Das stimmt, aber Konnotationen haben Konsequenzen. GCC warnt im pedantischen Modus vor Syntax, die entweder veraltet ist oder eine etwas andere Bedeutung in C99 hat, was bedeutet, dass C89-Programmierer den neuen Standard nicht einfach vollständig ignorieren können. Es muss also einen Vorteil in C99 geben, der ausreicht, um jedem, der die Sprache verwendet, diesen Mehraufwand aufzuerlegen.
Dies ist eine echte Frage, keine Aufforderung zum Streiten. Natürlich habe ich eine Meinung dazu, aber im Moment versuche ich nur zu verstehen, warum dies nicht nur so ist, wie die Dinge bereits gemacht werden. Ich nehme an, die Frage ist:
Was sind die (realen oder wahrgenommenen) Vorteile der Aktualisierung eines Sprachstandards gegenüber der Schaffung einer neuen Sprache auf der Grundlage der alten?
--std=x
Schalter von GCC ). Es ist also nicht so, als würde das Erstellen neuer Standards zu Tools führen, die älteren Code destabilisieren.