Читать «Вычислительное мышление: Метод решения сложных задач» онлайн - страница 115
Питер Макоуэн
Декомпозиция
Разделение крупной задачи на мелкие части, с которыми легче справиться, называется . Мы видели применение этого принципа, когда делали робота-мошенника и собрали целое, продумав все отдельные компоненты. Это очень действенный способ решения проблем. Именно декомпозиция позволяет писать сложные программы, состоящие из миллиона инструкций. Без нее у нас не было бы программ, позволяющих делать все то, для чего сейчас используются компьютеры.
Использование метода декомпозиции при написании программ тесно связано с Идея состоит в том, чтобы разбить программу на массу более мелких задач. Каждую из этих небольших программ написать легко. После этого становится легче написать большую объединяющую их программу, потому что не надо думать обо всех деталях. Как только части завершены, мы учитываем только то, что они делают, а не как они это делают. Чтобы облегчить процесс, каждой части присваивается имя, которое четко указывает, чтó она делает, но подробности при этом скрыты (такого рода наименования — это еще один вид ). Потом при объединении маленьких программ уже не надо думать о мелких деталях.
Таким образом, декомпозиция обеспечивает еще один способ использования Если небольшие программы написаны в достаточно общем ключе, то их используют в других больших программах. Возможно, для решения определенных подзадач пригодятся уже существующие программы, если при выявится необходимое соответствие. Кроме того, существуют особые приемы, позволяющие использовать декомпозицию для быстрого нахождения работающих решений. Один из вариантов — Идея заключается в том, чтобы решить задачу, найдя способ разделить ее на более мелкие, но в остальном одинаковые задачи. Чтобы решить проблему поиска по телефонному справочнику, мы можем открыть его в середине и посмотреть, находятся ли напечатанные там фамилии до или после нужной нам фамилии. После этого мы игнорируем одну из половин, так как знаем, где надо искать. У нас остается похожая, но менее масштабная проблема — поиск в половине телефонного справочника. Мы решаем эту задачу так же — открываем выбранную часть на середине и так далее, пока не найдем нужную фамилию. Это позволяет решить задачу гораздо быстрее. Такой подход — пример особого вида На этой идее основан подход к созданию алгоритмов, в основе которого лежит деление задачи на похожие, но меньшего объема. Метод «разделяй и властвуй» выделяется в том плане, что задачу делят пополам (или на трети, четверти и т.п.), чтобы получившиеся при этом задачи были примерно одного объема, но гораздо меньшего по сравнению с общей задачей и, следовательно, легче в решении, чем изначальная.
Понимание людей
Высокие технологии в конечном итоге создаются для людей и в помощь людям. Это значит, что вычислительное мышление главным образом связано с решением проблем людей, а не технологий. Поэтому должно включать и особенно их сильных и слабых сторон. Мы видели это на многочисленных примерах — от помощи пациентам с синдромом «запертого человека» до заботы о том, чтобы медсестры не делали ошибок. Вот еще один пример, подтверждающий эту мысль. Представьте, что вы пишете алгоритм, обеспечивающий безопасность банковских операций в интернете. Можно придумать алгоритм, который потребует пароля из 1000 произвольных символов, куда нельзя вставлять существующие слова. Это, безусловно, обеспечит высокую степень безопасности! А еще это будет очень глупо. Ни один человек, за исключением пары случайных гениев, не запомнит такой пароль. Алгоритм окажется бесполезным. Решение задач с помощью вычислительного мышления должно быть связано с пониманием возможностей людей.