Следование методам решения проблем Джорджа Полиа. Как это может помочь вам в процессе кодирования.

Следование методам решения проблем Джорджа Полиа. Как это может помочь вам в процессе кодирования.

26 мая 2022 г.

Несколько месяцев назад, когда мой инструктор по программированию начал преподавать тему 'Подход к решению проблемы' в теме структур данных JavaScript, он представил методы решения проблем Джорджа Полиа.


Как уже говорилось, это в основном пошаговая дорожная карта приближения к решению проблемы, не ограничиваясь только проблемами кодирования, но и всеми аспектами жизни. И за эти месяцы я начал применять тот же основной принцип решения проблем, и поверьте мне, он работает фантастически!


Этот метод взят из книги Джорджа Полиа How ​​to Solve It (1945).


В этой статье я попытаюсь разобрать этот великолепный метод решения проблем.


В основном метод делится на четыре шага:


  1. Понимание постановки задачи.

  1. Составление структурированного плана.

  1. Выполнение плана.

  1. Оглядываясь назад и улучшая решение.

Вот и все. Это волшебные шаги для решения любой проблемы.


Давайте углубимся в них и вкратце разберемся.


Первый принцип: Понимание формулировки проблемы.


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


Понимание проблемы кодирования — самый сложный и важный этап для выяснения соответствующего конечного результата для задачи. Понимание того, что экземпляр требует от нас, и как мы можем разбить его на крошечные части, очень помогает.


После того, как я прочел формулировку задачи и чувствую, что понял ее, алгоритм мышления, которому я следую, следующий:


  • Выяснить, можно ли еще что-нибудь извлечь из проблемы? Повторный анализ вопроса всегда приносит что-то большее, что облегчает мою работу.

  • Могу ли я разбить то же самое на очень простые и упрощенные слова, которые я могу объяснить пятилетнему ребенку? Иногда перевод вопроса на мой L1 также очень полезен.

  • Могу ли я визуализировать четкую картину или результат того, что от меня требуется?

  • Могу ли я предсказать вывод или результат того, о чем спрашивают?

  • Существуют ли какие-либо ограничения, с которыми я могу столкнуться при составлении плана ее решения?

Если уделить должное время этому алгоритму и выполнить его, это, по сути, решит 50% проблемы.


Переход к следующему шагу:


Второй принцип: Составьте структурированный план.


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


Лучшие практики для полного соблюдения второго принципа при написании кода:


  • Написание шагов для решения проблемы.

  • Рисование блок-схем и графиков времени.

  • Грубые пробные прогоны и казни.

  • Пересмотр идей из первого принципа.

Трудно поверить, что с этими двумя принципами уже сделано 70% работы, при этом мы не написали ни строчки финального кода!


Давайте посмотрим, как будут выполнены оставшиеся 30% работы?


Третий принцип: Выполнение плана.


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


Это просто перевод ваших слов и блок-схемы (которая у вас уже есть) в код, с единственной проблемой запоминания правильного синтаксиса!


К настоящему времени у вас должно быть работающее решение проблемы, которое выполняется без каких-либо ошибок и дает ожидаемый результат.


Это означает, что проблема решена на 90%.


Четвертый принцип: оглянитесь назад и улучшите свое решение.


Об остальных 10% позаботится этот четвертый принцип. На этом шаге мы повторно рассмотрим наше решение и попытаемся улучшить его таким образом, чтобы оно стало лучше и эффективнее.


Этот принцип может включать некоторые из следующих идеологий:


  • Настройка кода таким образом, чтобы он был более читабельным и не требующим пояснений (сложно, но попробуйте).

  • Любая незамеченная ошибка или ошибка должны быть исправлены при повторном анализе кода.

  • Код не должен давать неожиданного поведения для некоторых пограничных случаев.

  • Как можно сделать код более эффективным, чтобы улучшить его временную и пространственную сложность?

Это может вывести ваш код на новый уровень, вот и все! Если вы правильно и тщательно реализовали все четыре принципа, ваше решение должно быть правильным на 100% или, по крайней мере, близким к нему.


Я нашел эту технику очень полезной и проницательной, и со временем я вижу улучшения в своей точности.


Спасибо, что дочитали до этого места.


Эта история была впервые опубликована [здесь].



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE