![]() |
Кнут "Искусство Программирования"
Сразу хочу предупредить, что это не офтоп. Мне просто нужно прочитать мнения более опытных, нежели я программистов.
Дело вот в чём: покоится мирно у меня на книжных полках именитый трёхтомеик Кнута, и пользовался я им просто как справочником, находя нужную мне информацию или алгоритм. Но вскоре мне буквально все мои знакомые начали втирать, что я очень много потерял не прочитав эти книги. Что, мол, прочитав их, я добъюсь максимальной компактности и изящества кода. Я, признаться, ухи развесил и попробовал прочитать "Искусство программирования" максимально вникая в суть поставленых проблем... Где-то после двухста страниц я не выдержал и забросил чтение. Слишком уж много математематических терминов сваливается на голову при изучении материала. В общем, мне, как я уже говорил выше, нужен совет действительно опытных программистов, знакомых с писаниной Кнута: стоит ли мне её читать или это пустая трата времени? Действительно ли "Искусство программирование" так помогает, как об этом говорят? Заранее благодарен за ответы. |
В большинстве задач прикладного программирования дословное знание Кнута не требуется. Свои плюсы, конечно, есть. Фишка в том, что Кнут - математик и занимается не программированием, а математикой и, в самом лучшем случае, построением алгоритмов решения конкретных задач. Вот он и строит (или описывает) алгоритмы пользуясь познаниями в тех или иных областях математики, доказывая их (алгоритмов) корректность и оптимальность.
Могут ли помочь такие познания программистам!? Как справочная литература, такое вполне возможно. Существует немало и других книг, в которых описываются алгоритмы и их построение. Я читал некоторые книги Кнута только из-за того, что я немного увлекался математикой и хотел развить свой мозг, а не из-за того, что в его книгах содержится масса советов для программистов. Чтение такой литературы развивает способности мышления и может пригодиться не только в областях, связанных с програмированием. |
Я тоже пользуюсь как справочником, но про алгоритмы сортировки прочитал от начала и до конца... так же как и про полезные структуры данных... очень полезная вещь, хотя еще полезней было бы если бы программы из книги были написанны на с++ :)
|
Ну, как сказал Билли, если вы прочитали все тома Кнута и даже что-то поняли, вам определенно нужно отправить мне резюме ;)
|
Чтение Кнута - непростое, и, я бы сказал, не очень увлекательное задание.
Отличный справочник, особенно по алгоритмам сортировки. В идейном плане он меня совсем не вдохновил. Есть намного более увлекательные авторы (пишущие об искусстве и/или ремесле программирования) :) |
Посоветуйте что почитать НУЖНО для начинающего и для практикующего программиста. Какие книги реально рекомендуете по программированию. Не по языкам а по сущности.
|
В универе профессор сказал, что каждый программист должен прочитать " Джон Бентли Жемчужины программирования ".
Сам я ещё не прочитал, но книжку заимел :) |
Я считаю, Кнут полезен для алгоритмиста, но не для программиста.
Кстати мой опыт показывает, что математики и алгоритмисты как правило плохие программисты и не в состоянии написать толковый код. Как пправило им нужна няня. И когда такой вот няней ставили меня, мне было очень тоскливо объяснять, что такое наследование классов. Сам я книги честно пытался прочесть, но очень быстро охладел - и ничего, где я не работаю, везде считаюсь толковым программистом. Вообще, я очень критично отнушусь к фразам типа: каждый программист должен прочесть ххх. Говорить так - все равно что говорить, что из А в Б только одна дорога. Но ведь это не так. Совершенствования в своей профессии можно достичь многими путями. |
Я бы посоветовал почитать работы ныне покойного Э. Дейкстры (E.Dijkstra).
Например "Дисциплина программирования". Или его Заметки и Программистские басни Одно из его (шуточных) высказываний (по памяти): "Если отладка это процесс устранения ошибок, то программирование это процесс создания ошибок" :) |
Кстати, если будете искать работы Бентли на английском, имейте ввиду что он не совсем Джон (John). Он Jon Bentley. :)
Еще из полезных книг: - некоторые работы Кернигана (одного из "отцов" C) , например "Элементы стиля программирования"; - Code Complete, by Steve McConnell (отличная книга, должно быть русское издание); - Rapid Development его же. Более полезна правда для менеджеров программных проектов, но много дает для понимания происходящих процессов. Современный аналог знаменитого "Мифического человеко-месяца" Фреда Брукса (тоже достойнейшая, хоть и немного устаревшая, книга!);. - Design Patterns, by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (тоже долна быть на русском). |
Не знаю, как начет прочтения творения профессора, однако книги по математике почитать стоит.
|
На мой взгляд, чем абстрактней книга, тем меньше от нее пользы практикующему программисту, а больше будущему профессору ВУЗа, чтобы было чем своих подопечных пригружать по полной программе... Однако, думаю,что фундаментальные сочинения, в которых повествуется об искусстве составления алгоритмов, просто необходимо изучать, чтобы не изобретать велосипед при составлении собственных программ.
Именно сочинения: "Искусство Программирования", Кнут -- пробовал читать, местами интересно, местами кажется примитивным, но есть и много мест, для меня не вполне усваиваемых, поэтому это четие я временно забросил... |
Ну, понять ВСЕ без оконченного Матмеха тяжело, но почитать все равно стоит. Насчет "компактности и изящества кода" не знаю, но для глубокого понимания очень полезно.
|
Цитата:
|
Цитата:
Я бы добавил Кормена - "Алгоритмы: построение и анализ" очень помогает развить алгоритмическое мышление и доступно обьясняет многие не тривиальные алгоритмы. |
Если процесс обучения приводит к результатам, то это не пустая трата времени. Если процесс обучения не приводит к результатам, то это пустая трата времени.
Смотри сам - если посли чтения Кнута, что-то отсаётся в голове, то почему бы и не поучится. Ведь гораздо полезнее помнить как решить, а не где искать решение. Хотя последнее, тоже, не мало важно. И, как ты понимаеш, это отностится к любым книгам, а не только к Кнуту... |
Цитата:
Время, потраченное на чтение любой книги, возможно было "украдено" у другого занятия, например ... чтения другой книги, возможно более полезной с точки зрения выбранной цели и установленных приоритетов. |
Я рекомендую ее почитать хотя бы из-за главы "Сортировка"
|
Цитата:
Хотя, за последние несколько лет мне несколько раз понадобилось сделать имплементацию специфичных сортировок. И что, вы думаете я стал вспоминать что я давным давно прочел у Кнута? Или, может быть, стал перечитывать эту главу? Нет, нет, и еще раз нет. Я "пошел в Гугл" и сделал пару ПРОДУМАННЫХ запросов. И все. Правда, наверное должен признать что Кнут-таки помог мне в составлении этих запросов. |
Эх, я всё это читал, изучал, ломал голову, а теперь ни фига не помню... прошло всего пару лет
|
Цитата:
|
Не стоит воспринимать Кнута как чтиво "на всякий случай"
В данной дискуссии несколько линий (и пару гадостных замечаний на которые в целом следовало бы ответить...). ;)
По главной линии... Как алгоритмист, имеющий продвинутую степень и по компьютерам и по науке, скажу для расширения горизонтов, чтение Кнута, как рекомедация, мало полезны: до него надо созреть самому, иначе это будет пустая трата времени. Для иллюстрации скажу, что это примерно тоже что считать Страуструпа - первым в жизни учебником по C++: он что угодно, но не это. Это беседы о C++ с очень умным и интересным собеседником, приводящим аргументы в спорах, вопросы которых вам непонятны, до которых вы возможно еще не дозрели. Там очень много полезного, но никакой дидактики. Тоже с Кнутом: очень много вглубь, но часто малопонятно почему здесь а не чуть в сторону. Знать то о чем он говорит, на глубину которую он достигает, невредно, на мало необходимо. Для полудосужего чтения рекомендовал бы скорее CLR (Кормана): там больше вширь чем слишком глубоко вглубь --- это значительно расширит пространство идей и даст базис при необходимости капать вглубь уже на полную необходимую глубину (т.е. по статьям, обзорам и монографиям, а не учебникам) |
| Часовой пояс GMT +4, время: 00:03. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.