Этот вопрос не «Почему люди до сих пор используют старые языки программирования?» Я это прекрасно понимаю. Фактически, два языка программирования, которые я знаю лучше всего, это C и Scheme, оба из которых восходят к 70-м годам.
Недавно я читал об изменениях в C99 и C11 по сравнению с C89 (который, похоже, все еще является наиболее используемой версией C на практике и версией, которую я узнал от K & R). Оглядываясь вокруг, кажется, что каждый язык интенсивного использования получает новую спецификацию, по крайней мере, один раз в десятилетие или около того. Даже Fortran все еще получает новые версии, несмотря на то, что большинство людей, использующих его, все еще используют FORTRAN 77.
Сравните это с подходом, скажем, системы набора текста TeX. В 1989 году, с выпуском TeX 3.0, Дональд Кнут объявил, что TeX полностью функциональн, и в будущих выпусках будут только исправления ошибок. Более того, он заявил, что после его смерти «все оставшиеся ошибки станут функциями», и никаких дальнейших обновлений не будет. Другие могут свободно разворачивать TeX и сделали это, но полученные системы переименованы, чтобы указать, что они отличаются от официального TeX. Это не потому, что Кнут думает, что TeX совершенен, а потому, что он понимает ценность стабильной, предсказуемой системы, которая будет делать то же самое через пятьдесят лет, что и сейчас.
Почему большинство разработчиков языков программирования не следуют одному и тому же принципу? Конечно, когда язык является относительно новым, имеет смысл, что он пройдет период быстрых изменений, прежде чем успокоится. И никто не может на самом деле возражать против незначительных изменений, которые делают не намного больше, чем кодификация существующих псевдостандартов или исправление непреднамеренных чтений. Но если после десяти или двадцати лет язык все еще нуждается в улучшении, почему бы просто не раскошелиться или начать все сначала, а не пытаться изменить то, что уже используется? Если некоторые люди действительно хотят заниматься объектно-ориентированным программированием на Фортране, почему бы не создать для этой цели «Objective Fortran» и оставить сам Фортран в покое?
Я полагаю, можно сказать, что, независимо от будущих изменений, C89 уже является стандартом, и ничто не мешает людям продолжать его использовать. Это своего рода правда, но коннотации имеют последствия. GCC в педантичном режиме предупреждает о синтаксисе, который либо устарел, либо имеет немного другое значение в C99, что означает, что программисты C89 не могут просто полностью игнорировать новый стандарт. Поэтому в C99 должно быть какое-то преимущество, достаточное для того, чтобы накладывать эти накладные расходы на всех, кто использует язык.
Это настоящий вопрос, а не приглашение спорить. Очевидно, у меня есть мнение по этому поводу, но сейчас я просто пытаюсь понять, почему это не просто так, как все уже сделано. Я предполагаю, что вопрос:
Каковы (реальные или предполагаемые) преимущества обновления языкового стандарта по сравнению с созданием нового языка на основе старого?
--std=x
переключатель GCC ), поэтому создание новых стандартов не приводит к созданию инструментов, дестабилизирующих старый код.