Следование методам решения проблем Джорджа Полиа. Как это может помочь вам в процессе кодирования.
26 мая 2022 г.Несколько месяцев назад, когда мой инструктор по программированию начал преподавать тему 'Подход к решению проблемы' в теме структур данных JavaScript, он представил методы решения проблем Джорджа Полиа.
Как уже говорилось, это в основном пошаговая дорожная карта приближения к решению проблемы, не ограничиваясь только проблемами кодирования, но и всеми аспектами жизни. И за эти месяцы я начал применять тот же основной принцип решения проблем, и поверьте мне, он работает фантастически!
Этот метод взят из книги Джорджа Полиа How to Solve It (1945).
В этой статье я попытаюсь разобрать этот великолепный метод решения проблем.
В основном метод делится на четыре шага:
- Понимание постановки задачи.
- Составление структурированного плана.
- Выполнение плана.
- Оглядываясь назад и улучшая решение.
Вот и все. Это волшебные шаги для решения любой проблемы.
Давайте углубимся в них и вкратце разберемся.
Первый принцип: Понимание формулировки проблемы.
Это, безусловно, кажется очевидным на первый взгляд, но когда я анализирую себя до того, как применил эту технику, большую часть времени я не понимал скрытой цели, стоящей за утверждением, и переход сразу к написанию кода никогда не был мудрым выбором. .
Понимание проблемы кодирования — самый сложный и важный этап для выяснения соответствующего конечного результата для задачи. Понимание того, что экземпляр требует от нас, и как мы можем разбить его на крошечные части, очень помогает.
После того, как я прочел формулировку задачи и чувствую, что понял ее, алгоритм мышления, которому я следую, следующий:
- Выяснить, можно ли еще что-нибудь извлечь из проблемы? Повторный анализ вопроса всегда приносит что-то большее, что облегчает мою работу.
- Могу ли я разбить то же самое на очень простые и упрощенные слова, которые я могу объяснить пятилетнему ребенку? Иногда перевод вопроса на мой L1 также очень полезен.
- Могу ли я визуализировать четкую картину или результат того, что от меня требуется?
- Могу ли я предсказать вывод или результат того, о чем спрашивают?
- Существуют ли какие-либо ограничения, с которыми я могу столкнуться при составлении плана ее решения?
Если уделить должное время этому алгоритму и выполнить его, это, по сути, решит 50% проблемы.
Переход к следующему шагу:
Второй принцип: Составьте структурированный план.
Из того, что извлечено из первого принципа, попробуйте написать псевдокод в виде комментариев, нарисуйте примерную блок-схему или временную шкалу того, как вы будете приближаться к конечному результату, и постепенно шаблоны решения начнут всплывать. , что очень упрощает работу.
Лучшие практики для полного соблюдения второго принципа при написании кода:
- Написание шагов для решения проблемы.
- Рисование блок-схем и графиков времени.
- Грубые пробные прогоны и казни.
- Пересмотр идей из первого принципа.
Трудно поверить, что с этими двумя принципами уже сделано 70% работы, при этом мы не написали ни строчки финального кода!
Давайте посмотрим, как будут выполнены оставшиеся 30% работы?
Третий принцип: Выполнение плана.
Этот шаг включает в себя написание кода, и поверьте мне, это самый простой из всех четырех шагов.
Из формулировки трех вышеперечисленных этапов преобразуйте свой псевдокод в хорошо структурированный исполняемый код.
Это просто перевод ваших слов и блок-схемы (которая у вас уже есть) в код, с единственной проблемой запоминания правильного синтаксиса!
К настоящему времени у вас должно быть работающее решение проблемы, которое выполняется без каких-либо ошибок и дает ожидаемый результат.
Это означает, что проблема решена на 90%.
Четвертый принцип: оглянитесь назад и улучшите свое решение.
Об остальных 10% позаботится этот четвертый принцип. На этом шаге мы повторно рассмотрим наше решение и попытаемся улучшить его таким образом, чтобы оно стало лучше и эффективнее.
Этот принцип может включать некоторые из следующих идеологий:
- Настройка кода таким образом, чтобы он был более читабельным и не требующим пояснений (сложно, но попробуйте).
- Любая незамеченная ошибка или ошибка должны быть исправлены при повторном анализе кода.
- Код не должен давать неожиданного поведения для некоторых пограничных случаев.
- Как можно сделать код более эффективным, чтобы улучшить его временную и пространственную сложность?
Это может вывести ваш код на новый уровень, вот и все! Если вы правильно и тщательно реализовали все четыре принципа, ваше решение должно быть правильным на 100% или, по крайней мере, близким к нему.
Я нашел эту технику очень полезной и проницательной, и со временем я вижу улучшения в своей точности.
Спасибо, что дочитали до этого места.
Эта история была впервые опубликована [здесь].
Оригинал