Существует множество книг о программировании, и кажется, что Code Complete в значительной степени находится в верхней части списка «обязательных к прочтению книг» большинства людей, но как насчет «Искусства компьютерного программирования » Дональда Кнута? Я занятой человек, между работой и молодой семьей, у меня нет тонны свободного времени, поэтому я должен быть разборчив в том, как я его использую.
Мне интересно - кто-нибудь здесь читал «TAOCP»? Если это так, стоит ли уделять время чтению, или какая-нибудь другая книга или более стороннее программирование, например, проекты для домашних животных или содействие открытому исходному коду, лучше использовало бы мое время с точки зрения профессионального развития?
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ - Для тех из вас, кто носит футболки с надписью «Кнут - мой домой», не поймите меня неправильно - я хочу прочитать это, но мне просто интересно, должно ли оно быть в верхней части моего списка приоритетов или если что-то еще должно прийти первым.
Ответы:
TAOCP - это бесценный справочник для понимания того, как структуры данных и алгоритмы, которые мы используем каждый день, и почему работа, но обязательство читать ее полностью, было бы экстраординарным вложением вашего времени.
Как один семьянин другому, проводите время со своими детьми.
источник
Замените «энциклопедию» в своем вопросе на все ссылки на TAOCP, и я думаю, что ответ должен быть очевидным. Потому что во многих отношениях это и есть TAOCP.
Есть (возможно, апокрифическая) история о том, как Стив Джобс встречался с Кнутом. Первое, что Джобс сказал ему: «Приятно познакомиться с вами, доктор Кнут. Я прочитал все ваши работы!». Кнут ответил: «Ты полон дерьма»: http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt
источник
Нет, он не должен быть в верхней части вашего списка приоритетов. У меня есть полный набор, и я не прочитал все это. Я использовал его (пока) как хороший справочник по некоторым проблемам (например, это было неоценимо в моем понимании случайности и тестировании случайных генераторов). Всякий раз, когда поднимается тема CS, с которой у меня ДЕЙСТВИТЕЛЬНО не получается справиться, я склоняюсь к тому, чтобы воспринимать TAOCP как хороший шаг в моем понимании.
Если вы решите прочесть его, это даст вам больше сил, и я определенно рекомендую брать его небольшими порциями. Не бойтесь прыгать и смотреть сначала на то, что интереснее.
источник
TOACP является важным чтением - в какой-то момент. В зависимости от того, что вы делаете ежедневно, это может быть не самым срочным.
Это одна из тех книг (ну, в общем, сборников книг), которую хорошо читать в начале своей карьеры, потому что она действительно дает вам хорошее понимание, к которому вы обычно не придете позже, но это не важно для выживания, пока вы не перейдете к этой части вашей карьеры, где вы не просто программируете, вы выбираете набор инструментов. Это тот момент, когда вы действительно хотите изучить алгоритмы, надеюсь, уже немного разбираетесь в дизайне языка и очень хорошо понимаете, какие инструменты, языки и системы существуют, и как каждый из них вписывается в экосистему вещей, которые вы можете опираться на конкретный проект.
Другими словами: это обучение с большой картиной, так что если вы навязчивы, как я, прочитайте это сейчас, если нет, то можно отложить это, пока вы не захотите подняться вверх по лестнице и не станете большим парнем.
источник
Выполнив недавно эту самую задачу, я могу сказать, что способ, которым он пишет, очень приятен, а проблемы обозначены (в зависимости от сложности) очень удачно. Получите первый том и прочитайте главы 1 и 2 и посмотрите, как вам это понравится.
источник
TAOCP - отличная работа, но ее чтение станет ужасной инвестицией для практикующего разработчика программного обеспечения. Если вы сделаете это, вы пожертвуете несколькими годами (то есть сколько времени это займет) вашего профессионального бюджета на самосовершенствование, чтобы узнать слишком много о слишком малом.
Я бы порекомендовал проработать одну или несколько менее «совершенных» книг об алгоритмах, моим любимым в этой области является «Руководство по разработке алгоритмов» Стивена С. Скиена.
Тогда, если вы чувствуете, что вам нужно / хотите больше, двигайтесь до Кнута.
В то же время вы можете купить один или несколько томов TAOCP, просмотреть его, чтобы понять, какие области охватывает Кнут, и сохранить его в своей библиотеке на тот случай, если вам действительно понадобится некоторая информация из него в повседневной жизни. работай. Мое обоснованное предположение, что вы не будете, и это еще одна причина, почему я не советую пытаться читать. Но если вы обнаружите, что ссылаетесь на него достаточно часто, то вы будете знать, что стоит потратить время на то, чтобы прочитать его от корки до корки.
источник
Основополагающая работа Кнута - самая популярная ссылка, которую программисты намерены прочитать или закончить чтение. Когда - нибудь.
источник
+10 на комментарий семьи / детей. Я стараюсь читать больше, оставаясь при этом на глазах у клиентов.
Но ... да, очень стоит прочитать. Нет смысла читать линейно, вместо этого просматривайте и выбирайте несколько интересующих тем.
источник
Я твердо нахожусь в лагере людей, которые считают, что каждый разработчик должен вложить деньги в получение книг в какой-то момент (и теперь становится легче, когда они выглядят так, как будто они перепечатываются в мягкой обложке ), но я бы сказал, что Также трудно быть уверенным, что кто-то сядет и прочитает их все от корки до корки.
Лучший подход к ним - если у вас нет поездок на работу, где у вас есть свободное время, чтобы сидеть и читать, - это читать их достаточно, чтобы знать, где что-то найти в них, а затем читать полную главу, когда вы используйте их в качестве справочников по данной проблеме. С Google и Stack Overflow не так часто можно найти справочные книги, но в некоторых случаях вы можете обнаружить, что эти книги дают некоторое представление о том, что вам придется отправлять дополнительное время на поиск в Интернете.
источник
Не забывайте, что в начале Кнут хотел написать кое-что о том, как написать компилятор.
Например, вы можете получить много информации в сети с помощью Википедии, но если вы не какой-то исследователь, просто прочитайте резюме, и вы получите удовлетворение.
Вы можете получить первый том, чтобы прочитать его, когда вам скучно ...
источник
Вероятно, более важно, чтобы вы делали эти проблемы в книге, чем просто читали ее. Это потребует много времени.
Он до нравится 4 тома и 5 (независимо от брошюр тех) , поэтому завершения книги была бы , вероятно , лучше , чем университетский курс основ информатики и сделать вас почти лучший программистом никогда.
Так как у вас молодая семья, как я, вы дали мне отличную идею. Я бы покупал книги по одной и учил их детям.
источник
Если вам любопытно, то сделайте это, но переваривание занимает довольно много времени, поэтому вам нужно не торопиться.
У вас есть поездка на работу, где вы можете читать - это было бы идеально.
РЕДАКТИРОВАТЬ: Вы можете найти этот предварительный просмотр небольшой части тома 4 интересным: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz
(примечание: сжатый постскриптум)
источник
Это не то, что большинство людей захотят сесть и читать от корки до корки, нет. Это невероятно бесценный справочник, и, конечно же, хорошо его взять, выбрать интересный раздел, прочитать его и выполнить некоторые упражнения. Но приведенные выше сравнения энциклопедии довольно уместны ... они большие, обширные и подробные. И некоторые из «упражнений» являются исследовательскими проблемами, на решение которых могут потребоваться годы.
Если вы просто хотите лучше узнать алгоритмы низкого уровня, лучше начать с книг Роберта Седжвика (например, «Алгоритмы на C», «Алгоритмы на Java» и т. Д.).
источник
Если вы хотите изменить мир, тогда читайте его. Если вы хотите изучать новые хаки, не читайте их.
источник
TAOCP Кнута - шедевр. Но, как и любой шедевр (например, «Иллиада», «Война и мир» или «В поисках утраченного времени» Пруста), он не для всех и не для вечности.
Книга очень хорошо написана и очень хорошо изучена. Проблемы велики, и объяснение алгоритмов сделано хорошо.
Большая проблема книги заключается в том, что Кнут показывает код для вымышленного ассемблера для вымышленного компьютера. Я понимаю, почему он это сделал, но факт - это отстой.
Я рекомендую использовать эту книгу как библию. Когда нужно, поищите. Вы найдете ответ. Это случалось со мной не раз!
источник