С99 делает книгу K & R устаревшей? Если так, что рекомендовать на его месте? [закрыто]


10

С99 уже давно с нами. В нем представлено множество функций, которых нет в K & Rs The C Programming Language . Ни один из них не является особенно радикальным. Однако даже небольшие функции, такие как возможность смешивать объявления и код, меняют порядок организации кода.

Хотя я все еще считаю книгу K & R бесценным справочником, и, как и ее стиль письма, есть ли лучшая книга, которая учитывает стандарт C99? Я бы купил третье издание K & R в одно мгновение, но я не думаю, что это произойдет.


Там действительно нет C99 обновленной английской версии? Чешский перевод этой книги обновлен для C99.
Шимон Тот

@Let_Me_Be 2-е издание книги K & R было опубликовано в 1988 году. Более новой английской версии книги не существует. Это издание охватывает ANSI C с 1988 года.
Томас Оуэнс

Из-за того, как установлены авторские права / роялти, K & R ничего не сделает, написав третье издание, поэтому мы еще не видели его.
Блэкджек

@ BlackJack это настоящий позор.
Джастин Даринг

2
@Let_Me_Be - Сколько стоит перевод чешского перевода обратно на английский? :-) Я думаю, что это единственный способ получить версию K & R для C99 ...
voretaq7

Ответы:


8

Я бы по-прежнему предлагал (ANSIfied второе издание) K & R для тех, кто только изучает C и хочет изучать Straight Procedural C (минус объекты). Я бы удвоил эту рекомендацию, если бы они намеревались однажды взломать код ядра * NIX, поскольку K & R действительно имеет "Unix Mentality" в книге по программированию.

После того, как они освоили основы синтаксиса C и получили разумное представление о стиле, вы можете познакомить их с другими ссылками, в которых рассказывается о возможностях C99, и объяснить, что это может изменить способ организации того, что они пишут, но они это сделают ( в общем) хорошие привычки начинать с K & R (например, делать объявления заранее), и они будут знать, почему стоит делать что-то вопреки этим привычкам - я думаю, что вы создаете лучших программистов таким образом.


3
Делать объявление заранее - на самом деле плохая практика, унаследованная от стиля C89, переменные должны быть объявлены непосредственно перед их первым использованием. Смотрите, например, ответ на этот вопрос
Этьен

2
@ Étienne Под «авансом» я подразумеваю «Все переменные должны быть объявлены как можно раньше в той области, где они будут использоваться». что в основном то, что этот другой ответ защищает (или по крайней мере показывает в своих очень упрощенных примерах). Я одобряю то, что защищает этот ответ, но вы хотите убедиться, что новые программисты понимают, что «О, черт, мне нужна {counter, temp переменная и т. Д.} - позвольте мне объявить это здесь, в середине моей логики». это плохо, потому что это нарушает читабельность, как указывает этот другой ответ (по крайней мере, ИМХО, это так)
voretaq7

2
Нет единого мнения, я с уважением не согласен с тем, что это плохо, и многие люди думают, что было бы хорошо объявить это в середине логики, см. Также programmers.stackexchange.com/questions/56585/…
Этьен

@ Étienne Это ваше мнение, и вы, безусловно, имеете на это право, но, если говорить откровенно, вы никак не сможете изменить МОЕ мнение: я капризный старый хакер Unix, и стиль кодирования на C очень религиозная вещь для меня. К счастью, никому из нас никогда не придется читать код другого :-)
voretaq7

Надеюсь, мы не будем ;-)
Этьен

8

Вы хотите Харбисон и Стил: " C: Справочное руководство "

Это явно покрывает C99 и сравнивает / контрастирует с другими разновидностями C. Я нашел это супер полезным.


1
Честно говоря, H & S - это именно то, о чем говорится: справочное руководство, и само по себе оно не является хорошим учебным ресурсом, как K & R.
Джон Боде

Согласен! Я думаю, что ОП ищет ссылку, однако.
Анджело

1

Я бы порекомендовал King's C Программирование: современный подход . Он толще, чем K & R, но все же не особо дополнен, и автор указывает на то, что является и не является новым для C99, а также на советы по стилю и другие подобные вещи.


1
95 долларов на Амазонке!
Эрнест Фридман-Хилл

На самом деле вы должны указать в своем ответе, что вы имеете в виду C Программирование: современный подход (второе издание). Также у меня есть кое-что спросить, можем ли мы поговорить немного?
Сурадж Джейн
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.