Почему новые книги на C не соответствуют стандарту C99? - PullRequest
5 голосов
/ 20 февраля 2010

Почти каждая (относительно) новая книга о программировании на c, которую я видел, похоже, не соответствует стандарту C99 или освещает его в дополнительной главе. Исходя из Java-фона, стандарт C99 значительно облегчил миграцию (ну, по-прежнему, миграцию ^^), и это, вероятно, относится и к другим языкам.

Кажется, что C99 еще не достиг большинства разработчиков на C. Но почему?

Ответы [ 3 ]

13 голосов
/ 20 февраля 2010

Краткий ответ: Поддержка компилятора происходит медленно, и программисты на c - это консервативная партия, которая медленно меняет свое поведение.

11 голосов
/ 21 февраля 2010

Я сильно подозреваю, что это главным образом потому, что MSVC не пытается поддерживать C99, и, скорее всего, никогда не будет. В одной лодке есть несколько встроенных компиляторов, но они вряд ли достаточно распространены, чтобы иметь большое значение в индивидуальном порядке. AFAIK все остальные, по крайней мере, пытаются реализовать C99 в максимально возможной степени.

На практике нет особых причин не использовать выбранные функции C99, но если вы собираетесь учиться и писать в одном стандарте C, и только в одном, то это должен быть C89.

Кроме того, возможно, довольно сложно и запутанно написать вводный текст на языке C, который начинается со слов: «Хорошо, есть два разных стандарта, и я собираюсь использовать три разных цвета текста: один для C89, другой для С99, и один для обоих ". Также, вероятно, сложнее написать о С99 для всей книги, а затем «забрать» многое из того, что вы сказали в приложении о С89, чем написать о С89, а затем добавить к нему в приложении о С99 .

Все спекуляции, хотя. На самом деле вам нужно спросить авторов книг, которые вы читаете (или, возможно, в некоторых случаях пойти против всех ваших программных инстинктов, и прочитать предисловие ; -))

3 голосов
/ 20 февраля 2010

Риск переключения на новый компилятор в существующей кодовой базе, как правило, неизвестен, но он может быть довольно болезненным, его целесообразно переключать только тогда, когда у вас есть месяцы времени, чтобы устранить любые ошибки / изменения. А для действительно старых баз кода иногда лучше вообще никогда не переключаться.

Я бы хотел поспорить, что большинство проектов, использующих C, вообще не хотят переходить на C99, так как вряд ли есть потенциал для большой существующей кодовой базы и большого количества потенциала недостаток Я работал в одном крупном программном центре, который проверял компиляторы в дереве исходных текстов прямо вдоль кода и никогда не переключал бы компиляторы для продукта.

...