Как научиться составлять алгоритмы


Как научиться алгоритмическому мышлению? — Хабр Q&A

Бьёрн Страуструп, описывая C++, говорил: "Язык программирования служит двум связанным между собой целям: он является выразительным средством программиста для указания действий, которые надо выполнить, а также набором концепций, которыми пользуется программист при решении проблемы." Но язык программирования точно не является решением проблемы, он только средство выражения и инструмент. Поэтому для начала давайте оставим в стороне программирование.

С остальным всё просто. Программисту часто не хватает некоторой "прелюдии", позволяющей перебросить мостик между идеей программы и написанием кода. Мостик этот строится так:

  1. Имеем некоторую идею: "а хорошо бы написать программу, которая делала бы...".
  2. Определяете предметную область с теми процессами, которые имеют отношение к разрабатываемой программе.
  3. Формулируете цель проекта: как программа должна повлиять на предметную область (не вдаваясь в реализацию).
  4. Формулируете бизнес-задачи, решение которых позволят достичь поставленной цели.
  5. Указываете ограничения, в рамках которых будет создаваться программа.
  6. Создаёте концепцию - некое видение того, какой будет новая программа, без технических деталей.
  7. Решаете, а нужна ли такая программа?
  8. Если нужна, то прорабатываете одно или несколько технических решений, как можно сделать программу. Делаете оценки реализуемости и оставляете одно решение.
  9. Разрабатываете детальные требования к вашей программе.
  10. Создаёте архитектурное решение, логическое и физическое.
  11. Проводите детальное проектирование каждого компонента вашей архитектуры.
  12. Программируете, тестируете, отлаживаете код.
  13. И - ура! - внедряете программу.

Это выглядит сложным. Но не очень сложно.

Как я смотрю на весь этот процесс, можете посмотреть тут: Обзор процесса разработки программного обеспечения. Краткий академический обзор всего процесса можно найти в книге Макконнелла "Остаться в живых. Руководство для менеджеров программных проектов" - книга небольшая, для начала самое то.

Как изучать алгоритмы? - Simple Programmer

Недавно я снял видео об алгоритмах и о том, стоит ли изучать его или нет. Я вижу, как многие программисты шумят о том, как изучать алгоритмы, и, ну… В конце концов, это может быть не совсем ВСЕ, чтобы вы так сильно об этом беспокоились.

Я знаю, что эта тема в Интернете разделяет мнения. Некоторые программисты могут сказать, что алгоритмы обучения определенно выделят вашу карьеру из толпы, в то время как другие могут сказать, что вам не следует тратить свое время на изучение алгоритмов, потому что это бесполезно.

Алгоритм - это автономный пошаговый набор операций, которые необходимо выполнить. Алгоритмы выполняют задачи вычислений, обработки данных и / или автоматических рассуждений. Итак, многие программисты начали спрашивать меня: хорошо, Джон, как мне все-таки изучать алгоритмы?

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

Расшифровка видео

Джон Сонмез:

Эй, как дела? Это Джон Сонмез из простого программиста.ком. У меня есть вопрос, который многие люди задают в последнее время с тех пор, как я снял это видео на тему «Нужно ли мне изучать алгоритмы?» Теперь вопрос: «Как изучать алгоритмы?» Очевидно, это было - я должен был знать, что это произойдет. Этот вопрос от Рысса, и он говорит: «Я хочу знать лучший подход к эффективному изучению и применению алгоритмов». Ладно. Довольно простой и понятный вопрос. Я не знаю, смогу ли я предложить вам лучший подход, но я дам вам несколько идей здесь.

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

Первый - это сообщение, о котором я упоминал ранее. Это с сайта Raywenderlich.com.Я действительно брал у него интервью на этом канале. Он действительно классный парень. Я должен встретиться с ним лично. Между прочим, он создал огромный блог, который называется «Как стать лучшим разработчиком с проблемами программирования». Вы можете проверить этот пост в блоге, и там есть масса ресурсов. Это, наверное, лучшие ресурсы, которые я нашел. В нем есть сводка всего, что вы можете сделать для изучения алгоритмов, особенно алгоритмов, которые вы бы использовали в тестах программирования, онлайн-программировании на белой или белой доске и, в основном, на онлайн-собеседованиях по кодированию.Я думаю, что это, наверное, лучшая группа ресурсов, которую я нашел.

Теперь, далее, я собираюсь порекомендовать то, что я много рекомендовал, с которого я начал, а именно topcoder.com. Вы можете проверить это здесь, и я провел много соревнований, и я изучил алгоритмы и как создавать алгоритм из Top Coder. Вы можете просто перейти к соревнованию по алгоритмам совпадения отдельных комнат. У них есть тренировочная комната, где вы можете практиковаться на тестах и ​​даже соревноваться, но это отличный способ.Затем я собираюсь дать вам сайт, который используют многие компании для решения задач по программированию, и вы можете делать, я думаю, один бесплатный в месяц, и вы можете просматривать некоторые из их материалов. Я думаю, что у вас может быть даже план для практики, который называется codility.com. Я их очень рекомендую. Хороший сайт. У них действительно хорошие задачи, и вы можете получить сертификат, если сумеете пройти его за определенное время или что-то в этом роде. Я забыл. Я сделал это очень давно и получил сертификаты, если они до сих пор это делают.

Тогда я дам вам две книги. Первая называется Cracking the Coding Interview, и это действительно очень хорошая книга. Очевидно, что это номер один на Amazon в области разработки программного обеспечения, и я не могу просто поместить его в свою книгу. Эй, это потому, что это хорошая работа, и в ней говорится о собеседовании по программированию. Там есть масса информации о типах алгоритмов. Если вы прочтете эту книгу, и вы будете выполнять в ней упражнения и практические задачи, вы будете хороши в алгоритмах.Я обещаю тебе. Это просто гарантия. Я очень, очень рекомендую это.

И, наконец, я дам вам что-то вроде старой школьной книги по этому поводу, которая называется «Жемчуг программирования», которую вы можете найти здесь. Это своего рода старая школьная книга. Есть много интересных задач алгоритмического типа. Некоторые из них действительно очень сложны и связаны с памятью и оптимизацией. Много всего. Виды отличных от типичных проблем, которые вы можете увидеть на собеседовании по кодированию, но на самом деле они больше помогут вам в рабочей среде в разработке алгоритмов и понимании алгоритмов.

Вот и все. Я думаю, что это, вероятно, лучшие ресурсы, как я уже сказал, тот Рэй Вендерлих, который я дал вам в начале. Это, наверное, самое последнее из всех. Есть куча разных сайтов, на которых сложно программировать, и тому подобное, но это будет лучший способ изучить алгоритм. Тебе просто нужно это сделать. Вам просто нужно написать код. Как я уже сказал, если вы хотите увидеть, как я занимаюсь алгоритмами, если вы хотите, чтобы я учил их создавать алгоритмы, у меня есть сегмент в моем курсе Pluralsight по собеседованиям с разработчиками, которые вы можете проверить, и я покажу вам, как это сделать. который.Я, наверное, на самом деле сделаю какое-нибудь видео, может быть здесь или что-то в этом роде, или, может быть, курс, показывающий, как это сделать. Когда у меня будет время. У меня так много разных проектов, которые мне нужно сделать.

Надеюсь, это вам поможет. Если у вас есть вопросы ко мне, вы можете написать мне по адресу [email protected] Если вам нравится это видео, у меня есть простая просьба - нажать кнопку «Подписаться» ниже. Я определенно был бы признателен. Надеюсь, вы оцените это, так как каждый день получаете мои видео, которые я делаю для вас.Я поговорю с тобой в следующий раз. Береги себя.

.

gaerae / awesome-algorithmms-education: тщательно подобранный список для изучения и практики алгоритмов.

перейти к содержанию Зарегистрироваться
  • Почему именно GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • мобильный
    • Истории клиентов →
    • Безопасность →
  • команда
  • предприятие
  • Проводить исследования
.

Список областей математики, которые необходимо изучить для понимания книг по анализу алгоритмов (например, Введение в алгоритмы)

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. работы Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Смотрите также