Как то в начале 2020-го года разбирая книги неожиданно с верхней полки книгу "Вычислительное мышление", она упала и раскрылась на странице N, да так, что мне захотелось посмотреть, а что там дальше на N+1 странице. И так слово за слово я погрузился в идеи авторов, рассмотрел изящные способы решения абсолютно разных задач "ход конем" и построение графов пришел к идее разобрать и разобраться, что-же это такое - "вычислительное мышление"?
В книге вы найдете ответы на разные вопросы: "Как думает компьютер?", "Как разговаривать с компьютером?" и "Как объяснить компьютеру алгоритм решения той или иной задачи?. По сути все это и не только - является вычислительным мышлением!
И я решил собрать разные элементы этого мышления в матрицу, и возможно что в обозримом будущем разберем несколько элементов. При желании вы это сможете сделать самостоятельно.
1. Задача
Любой алгоритм - это способ что-то сделать, решить какую-то задачу! При том, всегда есть определенность и ясность в том есть результат или его нет. Вычислительное мышление хорошо работает когда есть определенность в том, что нужно сделать.
2. Декомпозиция
Разложение сложного на части, а части на отдельные детали и в конце концов на элементарные операции, которые ясно и понятно как выполнять. А потом все сложить в определенную инструкцию - последовательность шагов, которая ведет к искомому результату.
3. Абстрагирование
Этот элемент мышления предполагает, что мы не думаем что внутри той или иной задачи, части или операции. Как все это работает до тех пор, пока в этом не будет необходимости. Возможно даже что все эти вопросы уже кто-то решил и ответы лежат в библиотеке программ.
4. Сравнение с образцом
Это такой прием который позволяет программе "думать" и принимать решение за нас, пока нужный результат не будет достигнут. А для этого программе нужен ориентир, образец к которому будет идти вычислительный процесс, пока не будет решена задача.
5. Моделирование
Вычислительное мышление предполагает проведение мыслительных экспериментов на основе логического мышления. Моделирование позволяет проверить подходы и способы решения задач.
6. Эффективность
Этот элемент отвечает не столько за нахождение решения, сколько за скорость выполнения, по количество строк кода, сложность операций, загрузку памяти и требуемых аппаратных ресурсов.
7. Надежность
При решении задачи и составления алгоритма важно обращать внимание на надежности и легкости использования алгоритма в процессе вычислений. Алгоритм не должен заставлять человека думать.
8. Восприимчивость и читабельность кода
Это важный вопрос профессиональной этики программиста для последующей поддержки, развития ПО и улучшения кода.
9. Использование
Для удобства использования надо понять, что на самом деле хочет заказчик или пользователь и как он будет оценивать решение. Соответственно для этого необходимо вовлечь его в процесс разработки.
В итоге получилась небольшая зарисовка, в виде девяти ключевых элементов матрицы "3х3". Легко схватить главное, запомнить и при желании погрузиться в один из элементов.