PDA

Просмотр полной версии : Кнут "Искусство Программирования"


Asgard
30.01.2005, 05:17
Сразу хочу предупредить, что это не офтоп. Мне просто нужно прочитать мнения более опытных, нежели я программистов.

Дело вот в чём: покоится мирно у меня на книжных полках именитый трёхтомеик Кнута, и пользовался я им просто как справочником, находя нужную мне информацию или алгоритм. Но вскоре мне буквально все мои знакомые начали втирать, что я очень много потерял не прочитав эти книги. Что, мол, прочитав их, я добъюсь максимальной компактности и изящества кода. Я, признаться, ухи развесил и попробовал прочитать "Искусство программирования" максимально вникая в суть поставленых проблем... Где-то после двухста страниц я не выдержал и забросил чтение. Слишком уж много математематических терминов сваливается на голову при изучении материала.

В общем, мне, как я уже говорил выше, нужен совет действительно опытных программистов, знакомых с писаниной Кнута: стоит ли мне её читать или это пустая трата времени? Действительно ли "Искусство программирование" так помогает, как об этом говорят?

Заранее благодарен за ответы.

Hex0gen
30.01.2005, 11:32
В большинстве задач прикладного программирования дословное знание Кнута не требуется. Свои плюсы, конечно, есть. Фишка в том, что Кнут - математик и занимается не программированием, а математикой и, в самом лучшем случае, построением алгоритмов решения конкретных задач. Вот он и строит (или описывает) алгоритмы пользуясь познаниями в тех или иных областях математики, доказывая их (алгоритмов) корректность и оптимальность.
Могут ли помочь такие познания программистам!? Как справочная литература, такое вполне возможно. Существует немало и других книг, в которых описываются алгоритмы и их построение.

Я читал некоторые книги Кнута только из-за того, что я немного увлекался математикой и хотел развить свой мозг, а не из-за того, что в его книгах содержится масса советов для программистов. Чтение такой литературы развивает способности мышления и может пригодиться не только в областях, связанных с програмированием.

blink
03.02.2005, 22:38
Я тоже пользуюсь как справочником, но про алгоритмы сортировки прочитал от начала и до конца... так же как и про полезные структуры данных... очень полезная вещь, хотя еще полезней было бы если бы программы из книги были написанны на с++ :)

Asker
04.02.2005, 22:57
Ну, как сказал Билли, если вы прочитали все тома Кнута и даже что-то поняли, вам определенно нужно отправить мне резюме ;)

BC Scout
08.02.2005, 23:32
Чтение Кнута - непростое, и, я бы сказал, не очень увлекательное задание.

Отличный справочник, особенно по алгоритмам сортировки.

В идейном плане он меня совсем не вдохновил. Есть намного более увлекательные авторы (пишущие об искусстве и/или ремесле программирования) :)

Vampire_Bat
16.02.2005, 07:54
Посоветуйте что почитать НУЖНО для начинающего и для практикующего программиста. Какие книги реально рекомендуете по программированию. Не по языкам а по сущности.

EvroStandart
16.02.2005, 15:02
В универе профессор сказал, что каждый программист должен прочитать " Джон Бентли Жемчужины программирования ".
Сам я ещё не прочитал, но книжку заимел :)

Dimm
16.02.2005, 16:16
Я считаю, Кнут полезен для алгоритмиста, но не для программиста.

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

Сам я книги честно пытался прочесть, но очень быстро охладел - и ничего, где я не работаю, везде считаюсь толковым программистом.

Вообще, я очень критично отнушусь к фразам типа: каждый программист должен прочесть ххх. Говорить так - все равно что говорить, что из А в Б только одна дорога. Но ведь это не так. Совершенствования в своей профессии можно достичь многими путями.

BC Scout
16.02.2005, 21:08
Я бы посоветовал почитать работы ныне покойного Э. Дейкстры (E.Dijkstra).
Например "Дисциплина программирования". Или его Заметки (http://khpi-iip.mipk.kharkiv.edu/library/extent/prog/djsp/) и Программистские басни (http://lib.luksian.com/textr/hum_comp/027/)

Одно из его (шуточных) высказываний (по памяти): "Если отладка это процесс устранения ошибок, то программирование это процесс создания ошибок" :)

BC Scout
18.02.2005, 20:15
Кстати, если будете искать работы Бентли на английском, имейте ввиду что он не совсем Джон (John). Он Jon Bentley. :)

Еще из полезных книг:

- некоторые работы Кернигана (одного из "отцов" C) , например "Элементы стиля программирования";

- Code Complete, by Steve McConnell (отличная книга, должно быть русское издание);

- Rapid Development его же. Более полезна правда для менеджеров программных проектов, но много дает для понимания происходящих процессов. Современный аналог знаменитого "Мифического человеко-месяца" Фреда Брукса (тоже достойнейшая, хоть и немного устаревшая, книга!);.

- Design Patterns, by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (тоже долна быть на русском).

Матроскин
03.03.2005, 18:57
Не знаю, как начет прочтения творения профессора, однако книги по математике почитать стоит.

CEO
03.03.2005, 23:17
На мой взгляд, чем абстрактней книга, тем меньше от нее пользы практикующему программисту, а больше будущему профессору ВУЗа, чтобы было чем своих подопечных пригружать по полной программе... Однако, думаю,что фундаментальные сочинения, в которых повествуется об искусстве составления алгоритмов, просто необходимо изучать, чтобы не изобретать велосипед при составлении собственных программ.
Именно сочинения: "Искусство Программирования", Кнут -- пробовал читать, местами интересно, местами кажется примитивным, но есть и много мест, для меня не вполне усваиваемых, поэтому это четие я временно забросил...

Offline
12.03.2005, 23:08
Ну, понять ВСЕ без оконченного Матмеха тяжело, но почитать все равно стоит. Насчет "компактности и изящества кода" не знаю, но для глубокого понимания очень полезно.

EvroStandart
14.03.2005, 10:58
Offline:
Ну, понять ВСЕ без оконченного Матмеха тяжело,

По моему вполне реально. Только рядом с книгой кнута надо положить пару учебников типа "Высшая математика для студентов". :)

shalomman
25.03.2005, 22:35
Кстати, если будете искать работы Бентли на английском, имейте ввиду что он не совсем Джон (John). Он Jon Bentley. :)

Еще из полезных книг:

- некоторые работы Кернигана (одного из "отцов" C) , например "Элементы стиля программирования";

- Code Complete, by Steve McConnell (отличная книга, должно быть русское издание);

- Rapid Development его же. Более полезна правда для менеджеров программных проектов, но много дает для понимания происходящих процессов. Современный аналог знаменитого "Мифического человеко-месяца" Фреда Брукса (тоже достойнейшая, хоть и немного устаревшая, книга!);.

- Design Patterns, by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (тоже долна быть на русском).


Я бы добавил Кормена - "Алгоритмы: построение и анализ" очень помогает развить алгоритмическое мышление и доступно обьясняет многие не тривиальные алгоритмы.

Willow
26.03.2005, 09:57
Если процесс обучения приводит к результатам, то это не пустая трата времени. Если процесс обучения не приводит к результатам, то это пустая трата времени.

Смотри сам - если посли чтения Кнута, что-то отсаётся в голове, то почему бы и не поучится. Ведь гораздо полезнее помнить как решить, а не где искать решение. Хотя последнее, тоже, не мало важно.
И, как ты понимаеш, это отностится к любым книгам, а не только к Кнуту...

BC Scout
26.03.2005, 11:53
Если процесс обучения приводит к результатам, то это не пустая трата времени. Если процесс обучения не приводит к результатам, то это пустая трата времени.

Смотри сам - если посли чтения Кнута, что-то отсаётся в голове, то почему бы и не поучится. Ведь гораздо полезнее помнить как решить, а не где искать решение. Хотя последнее, тоже, не мало важно.
И, как ты понимаеш, это отностится к любым книгам, а не только к Кнуту...

Такое понятие как КПД еще никто не отменял. :) Ведь ваши временнЫе ресурсы не бесконечны.
Время, потраченное на чтение любой книги, возможно было "украдено" у другого занятия, например ... чтения другой книги, возможно более полезной с точки зрения выбранной цели и установленных приоритетов.

Repressor
28.03.2005, 19:20
Я рекомендую ее почитать хотя бы из-за главы "Сортировка"

BC Scout
28.03.2005, 22:35
Я рекомендую ее почитать хотя бы из-за главы "Сортировка"

Да, глава познавательная. Академический интерес представляет точно.

Хотя, за последние несколько лет мне несколько раз понадобилось сделать имплементацию специфичных сортировок. И что, вы думаете я стал вспоминать что я давным давно прочел у Кнута? Или, может быть, стал перечитывать эту главу? Нет, нет, и еще раз нет.

Я "пошел в Гугл" и сделал пару ПРОДУМАННЫХ запросов. И все.
Правда, наверное должен признать что Кнут-таки помог мне в составлении этих запросов.

GRINDER
28.03.2005, 23:11
Эх, я всё это читал, изучал, ломал голову, а теперь ни фига не помню... прошло всего пару лет

Asgard
29.03.2005, 01:03
Я рекомендую ее почитать хотя бы из-за главы "Сортировка"

Я сортировку изучал ещё по старпёрским СССР'овским учебникам по алгоритмам. Посмотрел сортировку у Кнута и ничего нового для себя там не нашёл. Всё то же самое, только с занудным математическим анализом. Вывод: старые учебники 60-80х рулят.

a_ber
05.04.2005, 10:09
В данной дискуссии несколько линий (и пару гадостных замечаний на которые в целом следовало бы ответить...). ;)

По главной линии...
Как алгоритмист, имеющий продвинутую степень и по компьютерам и по науке, скажу для расширения горизонтов, чтение Кнута, как рекомедация, мало полезны: до него надо созреть самому, иначе это будет пустая трата времени. Для иллюстрации скажу, что это примерно тоже что считать Страуструпа - первым в жизни учебником по C++: он что угодно, но не это. Это беседы о C++ с очень умным и интересным собеседником, приводящим аргументы в спорах, вопросы которых вам непонятны, до которых вы возможно еще не дозрели. Там очень много полезного, но никакой дидактики.

Тоже с Кнутом: очень много вглубь, но часто малопонятно почему здесь а не чуть в сторону. Знать то о чем он говорит, на глубину которую он достигает, невредно, на мало необходимо. Для полудосужего чтения рекомендовал бы скорее CLR (Кормана): там больше вширь чем слишком глубоко вглубь --- это значительно расширит пространство идей и даст базис при необходимости капать вглубь уже на полную необходимую глубину (т.е. по статьям, обзорам и монографиям, а не учебникам)