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


10

Этот вопрос преследует меня, потому что я сейчас читаю Kernighan & Ritchie's: язык программирования C (K & R), но я встречаю много, и я имею в виду много программистов на C, которые никогда его не читали.

Итак, мой вопрос: есть ли преимущество в чтении K & R? Должна ли быть необходимость?


K & R был написан парнями, которые изобрели язык Си; долгое время это была единственная книга на С
Стивен А. Лоу

Нет. Книга K & R - не единственная книга C, когда-либо написанная. В зависимости от того, как вы учитесь, другая книга может подойти вам лучше.
user16764

1
@ StevenA.Lowe: обратите внимание, что создание и развитие языка не обязательно дает вам лучшие полномочия, чтобы написать о нем. Например, Гослинг сказал, что не считает себя экспертом по Java. И я не уверен, что мне так нравятся работы Страуструпа на C ++ в целом. Очевидно, они знают, о чем говорят о технических частях языка, но использовать его в полном объеме, определить стиль и сделать его частью жизнеспособной экосистемы - это совсем другое. (хотя я думаю, что K & R сделал это на
удивление

@ user16764: «нет» для «должно быть необходимостью?», надеюсь, не для «есть ли преимущество в чтении K & R?»
Хайлем

@haylem: конечно. К счастью, книга K & R довольно хорошая, но я не вижу очевидного преимущества в ее чтении вместо или в дополнение к другим ресурсам Си
Стивен А. Лоу

Ответы:


15

Полезно да, необходимо нет. K & R не является определением языка C. Это просто один из многих вводных текстов. Я нашел это особенно ясным и кратким, но другие читатели могут предпочесть другие тексты. Простое прочтение никак не отличает вас от других программистов.


так вы говорите мне, что если я читаю или нет, это не имеет значения?
Фарук Йоути

7
Чтение K & R и выполнение упражнений - отличный способ выучить вводный C. Однако, существует множество других книг и ресурсов для изучения C, и выбор K & R над одной из других книг сам по себе не демонстрирует вашу компетентность как программиста. ,
Чарльз Грант

7
Конечно, вы всегда можете научиться трудному пути .
Роберт Харви

4
K & R устранил страх узнать это для меня. Как будто они сидят рядом со мной и объясняют вещи в домашней дружеской беседе. В этом ценность «белой книги». (И я узнал об этом в 1985 году)
Роб

@Rob: Да, это очень дружелюбная книга, и она очень доступна. Я считаю это одним из его главных достоинств, наряду с очень четкими примерами / упражнениями.
Хайлем

8

Я бы согласился с Чарльзом Грантом: это не обязательно, но оно того стоит, и вот почему я так думаю:

Плохой материал

  • Это от и поэтому может быть запутанным.
  • Если вы уже хорошо знаете C, вы многому не научитесь.
  • Если вы не поклонник стиля кода K & R, ваши глаза могут загореться.

3-й пункт незначителен, а 2 первых пункта относительно безболезненны, по крайней мере, вы знаете, что чтение не повредит.

Хороший материал

  • Это хорошее введение для начинающих программистов, как для C, так и для программирования в целом.
  • Это хорошее чтение (как в: оно читается легко и хорошо написано).
  • Речь идет не только о технической ценности, но и об исторической ценности. Если вы стремитесь стать экспертом, хорошо знать, как развивался язык, поэтому хорошо взглянуть на книгу, появившуюся вскоре после ее появления, и одну из самых известных книг этого языка. С изменился. Незнание старых битов может оказаться бесполезным, если вам не нужно их использовать, но это может очень помочь, если вы столкнетесь со старым кодом или удивитесь, почему некоторые вещи были сделаны так или иначе.
  • Опять же, это история. Чтение «Хакеров» от Стивена Леви или «Дилеров Молнии» от Hitzlick не учит меня чему-то техническому, но это анекдотично. Так или иначе, я считаю, что K & R также имеет большое значение в этом отношении.

Это не пустая трата времени, поэтому я бы сказал, взять копию в местной библиотеке и оставить ее на столе. Поднимите его в какой-то момент, и вы можете быть удивлены, что в пространственно-временном континууме была небольшая дыра, когда вы снова подняли голову.


2
+1: Я согласен с «Если вы уже хорошо знаете C, вы многому не научитесь», но многие (если не большинство) программистов на C, впервые прочитавших его, обнаружат, что они не знают C так, как они думали.
Mattnz

1
@mattnz: Да. (Это, как говорится, я боюсь, что это не относится к C и к этой книге в частности. Мы склонны думать, что мы знаем вещи лучше, чем мы на самом деле.)
Хейлем

6

Да, K & R является необходимым.

Вы должны читать это так же, как вы должны читать «Гамлет» и «Властелин колец», так же, как вы должны видеть Касабланку и «Унесенные ветром» и «Звездные войны».

Это потрясающая маленькая книга. Это изменило программирование, и оно изменило техническое письмо, и для поколения это представляло вершину стиля.

Что вы получаете, не читая это? Шесть часов? Двенадцать? Двадцать? Если вы серьезно относитесь к программированию, вы потратите тысячи и тысячи часов на написание кода. Если вы не можете читать, что еще вы не можете сделать?

Вполне возможно, что K & R не должна быть вашей первой книгой по Си. И в наши дни C не должен быть вашим родным языком. Сначала не важно читать K & R, но вы должны это прочитать.

А почему ты не хочешь? Это весело.


1
На мой взгляд, это плохая аналогия. Я думаю, что люди должны читать эти книги, но опять же есть бесчисленные книги и фильмы, которые стоит посмотреть, и видеть или не видеть их в подавляющем большинстве не будет сильным показателем чего-либо. Кроме того, это довольно специфично для культуры, если вы думаете, что каждый должен прочитать их. Вы также ошибочно полагаете, что не чтение K & R - это потеря времени. Вы не знаете, как работает график OP, поскольку, насколько вы знаете, возможно, он или она планировали использовать это время для 57 других незаменимых книг, которые вы НЕ упоминали.
Хайлем

1
Кроме того, и хотя я в свое время советовал некоторым людям начать с других языков, кроме C, я сторонник того, что его нужно учить на ранних этапах и учить хорошо. По сути, единственное, с чем я могу от всей души согласиться в вашем ответе: «Это потрясающая маленькая книга. Она изменила программирование и техническую письменность, а для поколения она представляла вершину стиля». (хотя я даже не уверен насчет последней части, которая также казалась мне обобщенно)
Хайлем

1
Придерживаясь ваших рассуждений, каждый должен прочитать «Элементы алгебры» Эйлера или «Brāhmasphuṭasiddhānta». В конце концов, они изменили свою сферу как из-за своего содержания, так и из-за своей формы и в какой-то момент были вершиной стиля, вероятно, еще для нескольких поколений. Конечно, не читать их - большая трата времени.
Хайлем

Это 2019 год, и я не читал K & R и не смотрел и не читал ничего в вашем списке. Я серьезно.
Ронни

4

Да.

Это не очень хорошо, если вы хотите знать, как писать программы, используя текущие версии C, но ...

Это очень ясно объясняет, почему язык выглядит так, как и некоторые намерения, лежащие в основе проекта.

Если вас когда-либо просят документировать что-либо, «Язык программирования C» является абсолютным примером того, как это сделать. Хорошо организованный, четкий, лаконичный и читаемый. Это написано на простом английском языке с минимумом жаргона и ноль умных слов.


2

Я не уверен, что вы узнаете что-то отличное от K & R, чем от других книг по Си, но я склонен полагать, что вы можете узнать немного больше о людях, узнав, какие книги они предпочитают читать по этому вопросу.

  • K & R - хорошо написанная и лаконичная книга, но немного рекомендованная.
  • Моим личным фаворитом был Harbison & Steele , написанный так же хорошо, как K & R, но значительно более детальный.
  • Если кто-то предпочитает книги из серии «… для чайников», я бы заподозрил их преданность своему ремеслу не потому, что эти книги такие плохие, а потому, что они не углубляются в детали.
  • Если кто-то клянется книгами, написанными Гербертом Шильдтом, у него есть желание вдаваться в подробности, но я бы заподозрил его суждение в книгах, которые они выбрали.

В общем, я не думаю, что время, потраченное на чтение качественной технической книги (а K & R определенно одна, а не очень длинная), никогда не теряется.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.