Я наткнулся на эту цитату из Билла Гейтса: «Вы обязательно должны отправить мне резюме, если вы можете прочитать все это». Он говорил о книгах по искусству программирования . Так что мне было довольно любопытно, и я хочу все это прочитать. Но, честно говоря, я этого не понимаю.
Я действительно не настолько интеллектуален. Так что это должно быть причиной, почему я не могу этого понять, но я стремлюсь учиться. В настоящее время я читаю Том 1 о фундаментальных алгоритмах. Существуют ли какие-либо книги, которые были бы полезны новичкам / медлительным людям, таким как я, которые помогли бы укрепить мои знания, чтобы я мог легко читать книгу Кнута в будущем?
Ответы:
Даже я думаю, что книга Кнута немного продвинута и трудна для понимания. Эти книги, безусловно, для исследовательских алгоритмистов уровня ИМХО.
Введение в алгоритмы от CLRS намного проще.
РЕДАКТИРОВАТЬ :
Тем не менее, если вы хотите прочитать книгу Кнута, вы должны сначала пройти конкретную математику . Кнут хочет, чтобы его ученики знали основную математическую часть анализа алгоритмов.
источник
Обязательно прочитайте все цитаты Гейтса, включая это:
Это не простые книги, и они не предназначены для этого. Помните, что одной из целей Кнута было привнести математическую строгость в информатику . Это здорово, если вы хотите что- то доказать в алгоритме, но не так здорово, если вы просто хотите знать, как он работает.
У Майкла Дорфмана есть несколько хороших советов для чтения книг в своем ответе на (теперь удаленный) вопрос о Stackoverflow о том, что я могу получить от чтения лота? , Если у вас нет 10 тыс. Повторений, вы можете просмотреть вопрос и его ответ на машине обратного хода .
Что касается других ресурсов, я обнаружил, что просмотр учебных программ известных школ информатики полезен. Например, учебники для начинающих алгоритмов занятий:
источник
Кнут - самый почитаемый, цитируемый, обсуждаемый и уважаемый автор компьютерных наук в истории. Его книги украшают книжные полки всех серьезных разработчиков программного обеспечения, и к ним относятся с тем же уровнем уважения, которое люди испытывают к Библии и искусству войны.
Я даже слышал, что некоторые люди действительно читали части книг Кнута.
Большинство людей просто намерены .
Лично я откладываю их на пенсию
источник
Книги Кнута навсегда изменили область алгоритмов. Сам он сказал, что «2 страницы в моей книге - это чья-то вся карьера», и что его книги трудно читать. Книга содержит сжатый материал за годы работы в области компьютерных наук.
Вы не должны чувствовать себя плохо, если вы не можете этого понять.
Как сказал Прасун, CLRS - это более простая книга для чтения.
У вас также есть Алгоритмы Раджасекарана, Сахни и др., Которые легко понять.
источник
Когда я только закончил, я взял первые три тома TAOCP в качестве подарка к выпускному экзамену и попытался прочитать их насквозь. Никогда не удавалось. В эти дни я прошел через, возможно, 1/3 из первых трех томов (не в определенном порядке). Материал определенно плотный, но я выучил три совета, которые мне очень помогли.
Во-первых, не пытайтесь читать от корки до корки. TAOCP на самом деле является такой же справочной работой, как и все остальное, и я обнаружил, что лучше читать раздел, когда он имеет отношение к проблеме, которую вы пытаетесь решить. Как и многие вещи в мире, понять решения гораздо легче, когда вы столкнулись с проблемами, которые они пытаются решить.
Далее, эта блок-схема в начале книги, это не просто юмор, а полезный совет. Прочитайте разделы, над которыми вы работаете итеративно, начиная сначала с общих понятий, а затем осторожно углубляясь в математику.
Наконец, держите под рукой старую старую старую бумагу и карандаш для работы с алгоритмами, как они описаны, и решите несколько простых проблем. Это поможет вам восстановить то, что вы читаете.
источник
Не волнуйтесь, большинство людей не понимают Искусство компьютерного программирования (TAOCP). Так что не думайте, что вы медлительны или новичок в том, что не понимаете - вы, как и другие 99,99% из нас, не понимаете этого.
Вы довольно амбициозны, если хотите дойти до уровня, на котором вы можете с легкостью читать TAOCP . Я сам только пролистал книги, прежде чем убрать их. Вероятно, на этой планете есть всего несколько человек, которые понимают TAOCP.
Проверьте почту: Книги Программисты не Читают Действительно Биллом Ящерицей.
Есть много других книг, перечисленных там, которые вполне читабельны , понятны , и вы можете извлечь выгоду прямо сейчас .
Мне лично нравится:
источник
если вы определяете себя как
not a highly intellectual being
то, тогда вы устанавливаете себе низкие ожидания. Ты должен сломать этот менталитет, если хочешь сделать что-то стоящее. Не должно быть никаких сомнений в том, что вы можете чего-то достичь. Кроме того, достижение этого не означает, что вы достигнете этого легко.Вещи, которые стоит преследовать, это те, которые трудны ... и это не клише. В программировании, в разработке, в жизни вообще, если вы хотите чего-то достичь, вы должны идти на то, что трудно, на то, чего избегают люди, и не соглашаться на наименьшие общие знаменатели вещей.
Во-первых, не ясно, какой у вас опыт работы с CS. Книга Кнута требует определенной степени зрелости. Немногие люди со степенью CS могут пройти через это легко. Я не ожидал бы, что студент CS, который только что закончил свой первый курс по алгоритмам, действительно сможет пройти хотя бы одну книгу Кнута. Зрелости, необходимой для ее достижения, просто нет, и это никак не связано с умственными способностями ученика.
Вам нужно, чтобы ваши базовые алгоритмы были простыми и ясными, и вам нужно иметь достаточное количество программирования (рабочего и / или учебного) под своим поясом - я бы сказал, по крайней мере, 40 кредитов на программирование. Вы также должны иметь свою математику CS на прочной основе.
Вы не можете идти далеко вперед, не разбираясь в дискретной математике (и, возможно, в теории вычислений).
Это не значит, что вам понадобятся эти знания для работы над проблемами Кнута, но вам нужна зрелость, чтобы пройти через этот тип материала.
Сначала выберите только одну книгу и одну книгу (книга CLRS, как было предложено ранее) и работайте от начала до конца. По возможности делайте программы, реализующие алгоритмы. Не используйте Java или C #, даже C ++. Подойдите к голым костям C и почувствуйте, как строите вещи из металлических обрезков.
Также получите книгу Кнута «Конкретная математика», если вы еще не прошли курс по дискретной математике и теории вычислений. Было бы хорошо, если бы вы прочитали и эту книгу.
Затем изучите энциклопедию Кнута, один том, одну главу за раз. Не переходите к другой главе, не разбираясь в первой.
Я бы посоветовал вам сначала пройти том I (фундаментальные алгоритмы), а затем том III (поиск и сортировка). Это должно быть вашей непосредственной целью. Затем, позже (намного позже), рассмотрим том IV (Комбинаторные алгоритмы), а затем Том II (Получисленные алгоритмы).
Не расстраивайся, если сначала не получишь. Я пытался пройти том I и III в течение многих лет (сейчас 10 лет).
И вы не должны придавать этому слишком большой вес. Не делайте этого, чтобы что-то доказать кому-то или себе. Делайте это, потому что вы интеллектуально заинтересованы в этом. Вы можете стать опытным в алгоритмах, просто используя книгу CLRS (или любую из прекрасных книг уровня подготовки).
Будьте прагматичны и дайте себе отдохнуть. Рассматривайте прохождение книги Кнута как долгосрочную личную амбицию, а не как непосредственное доказательство того, что вы материал CS;)
Есть и другие более важные вещи (с точки зрения карьеры), ради которых нужно убивать себя;)
источник
Прежде чем начать знакомство с Кнутом, мне пришлось пройтись по четырем различным книгам. Первые две книги Седжвика об алгоритмах. В них дается обзор большинства алгоритмов и структур данных в реально реализованной форме, чтобы вы могли увидеть, что они из себя представляют и как они работают. Эти книги выпускаются в разных языковых версиях - я читал те, которые написаны на C, но iirc изначально были написаны на Pascal, и есть версии на C ++ и Java.
После этого я проработал большую часть книги Кормена об алгоритмах и использовал « Введение в анализ алгоритмов» Седжвика и Флайолета в качестве дополнительного текста, поскольку он в большей степени соответствует математической строгости Кнута, чем книга Кормена. Я все еще должен закончить любой из них, в основном сбор вишни частей, которые мне нужны.
После прочтения и получения степени по математике я могу прочитать некоторые из TAOCP, но это трудно читать. Это не значит, что это бесполезно. TAOCP - одни из величайших справочных руководств по алгоритмам, но думать, что вы можете использовать их для «полного» понимания чего-либо, несколько проблематично.
источник