Как научиться алгоритмическому мышлению?

здраствуйте при решении задач возникают проблемы вроде синтаксис языка знаю но порой не знаю что и как написать чтоб это все выполнялось. как развить в себе такой навык? какую литературу посоветуете?
  • Вопрос задан
  • 17573 просмотра
Пригласить эксперта
Ответы на вопрос 9
max-kuznetsov
@max-kuznetsov
Главный IT-архитектор
Бьёрн Страуструп, описывая C++, говорил: "Язык программирования служит двум связанным между собой целям: он является выразительным средством программиста для указания действий, которые надо выполнить, а также набором концепций, которыми пользуется программист при решении проблемы." Но язык программирования точно не является решением проблемы, он только средство выражения и инструмент. Поэтому для начала давайте оставим в стороне программирование.

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

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


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

Как я смотрю на весь этот процесс, можете посмотреть тут: Обзор процесса разработки программного обеспечения. Краткий академический обзор всего процесса можно найти в книге Макконнелла "Остаться в живых. Руководство для менеджеров программных проектов" - книга небольшая, для начала самое то.
Ответ написан
hacker342
@hacker342
Like Linux
А я делаю по другому, если надо решить определенную задачу, я ее пишу на листе А4 и начинаю разбирать ее. У некоторых, как и у меня, не работает визуальная-алгоритмическая память, поэтому мой друг - листок и ручка. Ах, алгоритмы. Да возьмите книжку по алгоритмам, да прочитайте ее. В любом случае, штука полезная в жизни. Алгоритмы везде, даже в вашем смартфоне куча алгоритмов. Дерзайте, но не грызите. Это должно нравится. Ничего учить не надо. Вы себе в голове забиваете что не сможете решить задачку, а вы ее напишите и сразу все станет ясно.
Ответ написан
Комментировать
vagrantnotes
@vagrantnotes
Embedded-разработчик
На Coursera через месяц стартует курс Algorithmic Thinking, который как раз посвящён этой теме. Возможно, окажется полезным.
Ответ написан
Комментировать
@MJee
Разработчик мобильных приложений для Android
Можно взять книги из разряда "Задачи для программистов", например www.ozon.ru/context/detail/id/29561974

Несмотря на название, в этой книге много очень хороших задачи именно на алгоритмы. Попробуйте решить сами, потом сравните с ответами.
Ответ написан
Комментировать
@vilgeforce
Раздолбай и программист
Начать надо с заучивания определения алгоритма. Потом придется освоить разбиение задачи на части. Потом вопросов не будет.
Ответ написан
Комментировать
@kondaurov
Full stack developer
и как написать чтоб это все выполнялось

Это ответ на вопрос. Вы не видите цель и естественно никакой алгоритм на ум не прийдет.
Вот есть цель: Нужно приготовить кофе. Хочу кофе.
Дано: Кофеварка, Молотилка кофе, кофейные зерна.
Алгоритм: Придумайте сами...
Ответ написан
Комментировать
@iv_k
Взять задачу и написать как получится. Потом подумать, стереть все нафиг, и написать по нормальному. И так несколько раз. Чужой опыт тут мало чем поможет.
Ответ написан
Комментировать
suguby
@suguby
программист, python, django, mysql, git, hg, linux
Отличный вопрос. Всем бы так задумываться.
Я бы посоветовал книжку "Алгоритмы: построение и анализ" но она ооочень занудная и математическая. Если прочитаете (и поймете!) хотя бы первую главу +100 к скилу "Умный" :)
Ответ написан
Комментировать
Читайте Коромена "Алгоритмы. Построение и анализ" и решайте задачи на codeforces
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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