Це питання не: "Чому люди все ще використовують старі мови програмування?" Я це добре розумію. Насправді дві мови програмування, які я найкраще знаю, - це C і схема, обидві вони датуються 70 -ми.
Нещодавно я читав про зміни в C99 та C11 порівняно з C89 (що, здається, все ще є найбільш використовуваною версією C на практиці та версією, яку я дізнався у K&R). Оглядаючись навколо, здається, що кожна мова програмування у важкому використанні отримує нову специфікацію принаймні раз на десятиліття або близько того. Навіть Fortran все ще отримує нові версії, незважаючи на те, що більшість людей, які його використовують, все ще використовують FORTRAN 77.
Порівнюйте це з підходом, скажімо, набірної системи TeX. У 1989 році, випустивши TeX 3.0, Дональд Кнут заявив, що TeX є повноцінною функцією, і майбутні версії будуть містити лише виправлення помилок. Навіть поза цим він заявив, що після смерті "всі помилки, що залишилися, стануть функціями", і жодних додаткових оновлень абсолютно не проводиться. Інші можуть розщедрити TeX і зробили це, але отримані системи перейменовані, щоб вказати, що вони відрізняються від офіційних TeX. Це не тому, що Кнут вважає, що TeX є ідеальним, а тому, що він розуміє цінність стабільної передбачуваної системи, яка зробить те саме за п’ятдесят років, що це робить зараз.
Чому більшість дизайнерів мови програмування не дотримуються того самого принципу? Звичайно, коли мова є відносно новою, має сенс, що вона пройде через період швидких змін, перш ніж влаштуватися. І ніхто насправді не може заперечувати проти незначних змін, які не означають більше, ніж кодифікують існуючі псевдостандарти або виправляють ненавмисні показання. Але коли мова, як і раніше, потребує вдосконалення через десять-двадцять років, чому б не просто роздрібнити її або почати спочатку, а не спробувати змінити те, що вже використовується? Якщо деякі люди дійсно хочуть робити об'єктно-орієнтоване програмування у Fortran, чому б не створити для цієї мети "Objective Fortran", а залишити себе Fortran у спокої?
Я вважаю, що можна сказати, що незалежно від майбутніх змін C89 вже є стандартом, і ніщо не заважає людям продовжувати його використовувати. Це начебто правда, але конотації мають наслідки. GCC в педантичному режимі попереджатиме про синтаксис, який або застарілий, або має дещо інше значення в C99, що означає, що програмісти C89 не можуть просто повністю ігнорувати новий стандарт. Тож у C99 має бути якась користь, достатня для того, щоб накладати цю накладну вартість всім, хто користується цією мовою.
Це справжнє питання, а не запрошення сперечатися. Очевидно, у мене є думка з цього приводу, але на даний момент я просто намагаюся зрозуміти, чому це не просто так, як все вже робиться. Я припускаю, що питання:
Які (реальні чи сприйняті) переваги оновлення мовного стандарту, на відміну від створення нової мови на основі старої?
--std=x
перемикач GCC ), тому це не так, якби створення нових стандартів призводить до інструментів, що дестабілізує старий код.