@kurgeniy_L

Стоит ли грузить голову алгоритмами и структурами данных?

Здравствуйте!
Хочу поработать по своей прямой специальности - программистом. Сейчас подтягиваю знания, многое забылось (на данный момент работаю в техподдержке). Мне мой коллега посоветовал пока на время забить на программирование и лучше изучить алгоритмы и структуры данных. Решил так и сделать. Выбрал книгу авторства Никлауса Вирта.

Прочитал уже первые 40 страниц, но ничерта не понял. Вот прям совсем. Ну, я помню, что такое массивы и записи, например. Знаю, как с ними работать (ещё во время учёбы в институте изучал всё это). Нужно только освежить память. Но вот что хотел донести автор книги - прошло мимо моего мозга. Честно говоря, после прочтения пары страниц хотелось её закрыть. А я уже прочитал 40 страниц. Вот читаю страницу - вроде прочитал, а что я прочитал - хрен знает...

Собственно, ради чего я вообще задал этот вопрос? Меня постоянно преследует чувство, что либо я жутко тупой, либо я что-то делаю не так, т. к. не усвоил почти ничего. 95% информации из данной книги прошла как-то мимо... В связи с этим вопрос: а стоит ли вообще изучать алгоритмы и структуры данных на начальных этапах? Или лучше пока отложить? Просто реально не чувствую, чтобы я что-то усвоил для себя... Или, может, лучше сменить автора?
  • Вопрос задан
  • 495 просмотров
Решения вопроса 6
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Мне мой коллега посоветовал пока на время забить на программирование и лучше изучить алгоритмы и структуры данных.

Очень популярный идиотский совет. Это то же самое, что советовать изучать литературные приёмы написания поэм тому, кто ещё не выучил алфавит.
Ответ написан
Комментировать
gbg
@gbg
Любые ответы на любые вопросы
1. Процент людей, которые с удовольствием читают учебники вместо развлекательной литературы очень мал.

2. До некоторых людей новые знания из учебников не доходят, им нужен другой формат, например, занятия с ментором или самостоятельная практика.

3. Нужно или не нужно что-то учить? Ответ тут такой - если вы сами в состоянии навелосипедить некоторые фундаментальные алгоритмы - это очень хорошо. НО! Нужно понимать, что создатели этих решений, как правило, создали их, уже имея ученые степени Ph. D в области математики, физики, информатики, биологии и так далее. То есть, не учась фундаментальным вещам, вы не встаете на плечи гигантов, чтобы видеть дальше (нагуглите, кто это сказал), а ползаете у них под ногами.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега IT-образование
software engineer
Изучать алгоритмы нельзя просто читая. Надо решать задачки.
Но для программиста, задачки лучше решать не в тетрадке а на языке программирования.
Поэтому забивать на программирование не нужно.
Берите различные задачки по алгоритмам и пишите программы которые этот алгоритм реализуют и что-то считают.
Но да, чтобы написать программу для алгоритма, надо этот алгоритм сперва понять.

P.S. Сложные алгоритмы нужны не всем. Начните с простых - с банальных сортировок и обходов массивов/графов.
Ответ написан
@antares4045
Всё сильно зависит от того, в какой области программирования вы себя видите: фронтендеру врядли всё это понадобится, как и вероятно архитектору БД. В большинстве случаев в современном IT знание о том, как можно реализовать сортировку больше мешает (руки чешутся написать самому, причём почти наверняка выйдет хуже реализации из стандартной библиотеки). И почти всем я отвечаю, что алгоритмы скорее полезно не знать, но их необходимо понимать. И именно из второй половины лично для вас у меня выросло большое "но": не знаю, что именно вы там читали, но из полусотни страниц текста общей тематики профиля, совпадающего с вашим образованием вы поняли, по вашим словам, "ничерта"... это как то пугает, знаете ли.
Настоятельно рекомендую первым делом сменить автора: малоли на какого фрукта вы напололись. Алоритмы и структуры, помимо просто исторически сложившейся практики, изучают, чтобы просто настроить разум обучающегося на нужный лад: что-бы вы не делали в IT ваша работа сводися к тому, что вы вербализируете свои мысли в строгие и однозначные формулировки -- если чтение признаных авторов (простите вы не назвали свое направление так что конкретных имён не будет) не вызовет ни просветления ни мыслей в ключе "всё и так ясно -- зачем об этом писать?", то... не то что бы у вас не получится, но путь будет полон страданий как ваших так и ваших коллег.

И настоятельно рекомендую не скатываться в эзотерику по типу SICP и фундаменталистику вроде Кнута: они все по своему прекрасны, но чтобы изучать нужны авторы укладывающиеся в сотни страниц а не тысячи.
Ответ написан
@dmshar
Видел сотни юных дарований, выучивших назубок синтаксис языка программирования и не умеющих написать не одной нормальной программы сложнее сложения двух массивов. Т.е. не умеющих ДУМАТЬ как программист.
Вот курсы Алгоритмов и структур данных как раз и учат этому. И даже если потом вы не будете ни свои алгоритмы поиска писать, ни искать кратчайшие пути на графах - курс в первую очередь научит вас оперировать более сложными понятиями, чем просто оператор.
Неоднократно уже писал. Выучить язык программирования - это выучить ноты. Изучать алгоритмы - это набить руку в гаммах. Без этого брынчать по струнам сможешь, а вот классным музыкантом стать - нет. А в программировании - кодером станешь, а классным разработчиком - очень вряд-ли.
Вот как-то так.
Ответ написан
Комментировать
Aleksandr-JS-Developer
@Aleksandr-JS-Developer
Лучше проще, чем никогда
Соблюдайте принцип "От простого к сложному" и всё будет хорошо.
Алгоритмы и структуры данных решают проблемы. Как вы можете понять суть решения проблемы, если вы с проблемой не столкнулись?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Nameisconfidentialinfo
За что-то даже платят
Очень хорошо, когда ты просто знаешь о том, что что-то можно улучшить. Ещё лучше, если знаешь как.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы