Я наткнулся на эту цитату из Билла Гейтса: «Вы обязательно должны отправить мне резюме, если вы можете прочитать все это». Он говорил о книгах «Искусство программирования». Так что мне было довольно любопытно, и я хочу прочитать все это, но, если честно, я совсем не понимаю… I'm really not that highly
intellectual being
.. Так что это должно быть причиной, почему я не могу понять это , но я стремлюсь учиться .. Я сейчас читаю том 1 о фундаментальном алгоритме .. Так есть ли какие-нибудь книги, которые дружелюбны для начинающих / медлительных людей, таких как я? Так что я могу собраться и, надеюсь, в будущем смогу спокойно читать книгу Кнута.
если вы определяете себя как not a highly intellectual being
то, тогда вы устанавливаете себе низкие ожидания. Ты должен сломать этот менталитет, если хочешь сделать что-то стоящее. Не должно быть никаких сомнений в том, что вы можете чего-то достичь. Кроме того, достижение этого не означает, что вы достигнете этого легко.
Вещи, которые стоит преследовать, это те, которые трудны ... и это не клише. В программировании, в разработке, в жизни вообще, если вы хотите чего-то достичь, вы должны идти на то, что трудно, на то, чего избегают люди, и не соглашаться на наименьшие общие знаменатели вещей.
Во-первых, не ясно, какой у вас опыт работы с CS. Книга Кнута требует определенной степени зрелости. Немногие люди со степенью CS могут пройти через это легко. Я не ожидал бы, что студент CS, который только что закончил свой первый курс по алгоритмам, действительно сможет пройти хотя бы одну книгу Кнута. Зрелости, необходимой для ее достижения, просто нет, и это никак не связано с умственными способностями ученика.
Вам нужно, чтобы ваши базовые алгоритмы были простыми и ясными, и вам нужно иметь достаточное количество программирования (рабочего и / или учебного) под своим поясом - я бы сказал, по крайней мере, 40 кредитов на программирование. Вы также должны иметь свою математику CS на прочной основе.
Вы не можете идти далеко вперед, не разбираясь в дискретной математике (и, возможно, в теории вычислений).
Это не значит, что вам понадобятся эти знания для работы над проблемами Кнута, но вам нужна зрелость, чтобы пройти через этот тип материала.
Сначала выберите только одну книгу и одну книгу (книга CLRS, как было предложено ранее) и работайте от начала до конца. По возможности делайте программы, реализующие алгоритмы. Не используйте Java или C #, даже C ++. Подойдите к голым костям C и почувствуйте, как строите вещи из металлических обрезков.
Также получите книгу Кнута «Конкретная математика», если вы еще не прошли курс по дискретной математике и теории вычислений. Было бы хорошо, если бы вы прочитали и эту книгу.
Затем изучите энциклопедию Кнута, один том, одну главу за раз. Не переходите к другой главе, не разбираясь в первой.
Я бы посоветовал вам сначала пройти том I (фундаментальные алгоритмы), а затем том III (поиск и сортировка). Это должно быть вашей непосредственной целью. Затем, позже (намного позже), рассмотрим том IV (Комбинаторные алгоритмы), а затем Том II (Получисленные алгоритмы).
Не расстраивайся, если сначала не получишь. Я пытался пройти том I и III в течение многих лет (сейчас 10 лет).
И вы не должны придавать этому слишком большой вес. Не делайте этого, чтобы что-то доказать кому-то или себе. Делайте это, потому что вы интеллектуально заинтересованы в этом. Вы можете стать опытным в алгоритмах, просто используя книгу CLRS (или любую из прекрасных книг уровня подготовки).
Будьте прагматичны и дайте себе отдохнуть. Рассматривайте прохождение книги Кнута как долгосрочную личную амбицию, а не как непосредственное доказательство того, что вы материал CS;)
Есть и другие более важные вещи (с точки зрения карьеры), ради которых нужно убивать себя;)