Питер Макоуэн - Вычислительное мышление: Метод решения сложных задач
- Название:Вычислительное мышление: Метод решения сложных задач
- Автор:
- Жанр:
- Издательство:Альпина Паблишер
- Год:2017
- Город:Москва
- ISBN:978-5-9614-5020-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Питер Макоуэн - Вычислительное мышление: Метод решения сложных задач краткое содержание
Если вы хотите узнать больше о вычислительном мышлении, ищете новые способы стать эффективнее и любите математические игры и головоломки, эта книга для вас. В то же время вы научитесь навыкам, необходимым для программирования и создания новых технологий. Даже если вы не планируете писать программы и изобретать, вы сможете применять навыки вычислительного мышления, чтобы справиться с любыми жизненными проблемами.
Вычислительное мышление: Метод решения сложных задач - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
К компьютерному моделированию прибегают в физике, биологии, химии, географии, археологии... и многих других областях. Оно позволяет найти новый подход к теме, какой бы она ни была. Кроме того, новаторы, создавая экономические отрасли будущего, обнаруживают новые ниши для бизнеса.
Компьютерное моделирование даже изменило мир компьютерных игр. Например, World of Warcraft — это просто компьютерные модели фантазийного мира, а спортивные игры — компьютерные модели занятий спортом. В обоих случаях в программы встроены модели физических законов, чтобы, например, все, что поднимается вверх, непременно опускалось вниз!
Расцвет компьютерного моделирования показал, что, чем бы вы ни занимались, крайне важно иметь навыки вычислительного мышления, а не просто уметь обращаться с компьютером и использовать информационные технологии.
Научное мышление
Для практикующих вычислительное мышление не менее важно и научное мышление. Чтобы поддержать научный процесс, скажем, компьютерным моделированием, надо знать, как правильно заниматься наукой. Например, нужно понимать, что результаты, полученные для модели, справедливы только для нее. Они рассказывают именно о конкретной модели, и если она не соответствует реальности, то не соответствуют и результаты. Все расчетные данные нужно проверять, выдвигая новые гипотезы и тестируя их. Но если вы не упускаете из виду этот момент, вычислительное мышление дает вам мощный инструмент для понимания мира. Научное мышление необходимо и в других отношениях — в частности, для оценки алгоритмических решений. Научные методы обеспечивают ряд способов, которые позволяют проверить, соответствуют ли цели наши алгоритмы. Мы еще вернемся к этому пункту.
Эвристика
Иногда действительно невозможно создать алгоритм, который обеспечит наилучшее решение для задачи — или вообще, или в доступное время (и это правда невозможно, а не просто трудно). В таких ситуациях используется эвристическийалгоритм. Он не гарантирует оптимального решения, но обеспечивает разумный вариант в разумный срок. Для создания такого алгоритма необходимо эвристическое решение задачи. И пусть ответ не всегда будет лучшим — в большинстве случаев он окажется хорошим. По этому принципу действует ваш навигатор, когда прокладывает для вас путь.
Логическое мышление
Чтобы мыслить алгоритмически, необходимо логическое мышление, крайне тщательный и точный подход к деталям. Например, инструкции в алгоритме должны охватить все возможные варианты развития событий. Если в вашем алгоритме используется сложение, указали ли вы, что делать с отрицательными числами? Столкнувшись с ними, компьютер либо даст неправильный ответ, либо вообще зависнет. Разрабатывая алгоритм, нужно предельно логично оценить то, как он работает. Если не на бумаге, то уж точно в голове вам нужно иметь логические аргументы, подтверждающие его бесперебойную работу. Нельзя допустить, чтобы ваш спускаемый аппарат потерпел крушение, когда он наконец-то опустится на поверхность Марса спустя долгие месяцы, только потому, что вы забыли какую-то деталь. Как мы увидим далее, логическое мышление — это часть оценки.
Сопоставление с образцом
Умение видеть две одинаковые (или очень похожие) задачи — важный элемент вычислительного мышления, сопоставление с образцом.Мы все время занимаемся этим, даже не задумываясь, и специалисты постоянно используют в работе сопоставление с образцом — они узнают ситуацию и без колебаний делают то, что нужно. Этот же принцип лежит в основе многих программ: они сопоставляют правила с ситуацией и определяют, каким именно указаниям надо следовать. Программисты, создающие подобные программы, должны разработать образцы, на которые будет ориентироваться программа. Машинное самообучение тоже подразумевает сопоставление с образцом, но в этом случаи образцы подбирают сами программы.
При решении задач сопоставление с образцом помогает уменьшить объем работы, потому что при получении новой задачи позволяет не повторять одни и те же сложные операции каждый раз. Нужно найти аналогичную задачу из числа уже решенных и взять старое решение. Например, когда вы видите задачу или головоломку, связанную с составлением маршрута, нужно вспомнить о графах. Эту же мысль можно сформулировать по-другому: если вы видите, что задача соответствует модели передвижения из одной точки в другую, то для ее представления стоит использовать граф. Точки необязательно должны быть физически существующими местами. Например, это могут быть веб-страницы (с гиперссылками между ними), режимы будильника (с кнопочным переходом между ними), города (с перелетами из одного в другой) и так далее.
Представление
Решение проблемы можно облегчить, выбрав для нее хорошее представление, котороеявляется способом организации информации. Есть на удивление много возможностей представить одну и ту же информацию, и, как только вы это осознаете и с самого начала сосредоточитесь на выборе хорошего представления, задачи станут проще. Как мы видели на примере задач с составлением графа и игры «Бусы, хлеб, баня», хорошее представление значительно облегчает весь процесс как для людей, так и для компьютеров. Однако оно может полностью поменять используемый алгоритм. Порой очевидно, что благодаря верному представлению открываются возможности использовать простой и быстрый алгоритм вместо медленного и сложного. В этой книге мы ознакомились с разными представлениями — например, растровыеизображения, состоящие из большого количества пикселов,формирующих решетку, и векторныеизображения в виде линий и фигур. Мы узнали, что представление в виде сетки открывает самые разные возможности. Также мы увидели, что если числа хранятся в двоичном представлении на перфокартах, то возможен быстрый поиск и применение алгоритма упорядочивания. Представление образца в виде цифрового фильтрапозволяет создать алгоритмы, помогающие компьютерам видеть. То есть выбор хорошего представления является важной частью абстрагированияи генерализации.
Абстрагирование
Абстрагирование— это сокрытие деталей разными способами с целью облегчить решение задачи. Есть масса разных способов, которые позволяют спрятать подробности. Этому способствует создание алгоритмов и их оценка.
Один из важных способов использования абстрагирования, который называется абстракция управления,мы рассмотрели на примере фокусов. Он состоит в объединении инструкций, что позволяет получить инструкции для достаточно больших этапов процесса. Идея здесь состоит в том, чтобы спрятать подробности отдельных маленьких шагов. В кулинарных книгах это встречается на каждом шагу. Там даются инструкции вроде «сварите картошку». Сюда входит много этапов: наполнить кастрюлю водой, включить конфорку, довести воду до кипения, положить картошку и так далее. Все эти шаги сведены вместе в одну простую команду «сварите картошку». Чтобы выполнить инструкцию, нужны все детали, но абстрагирование помогает записать инструкции и воспринимать алгоритм (или рецепт) в целом, чтобы работать с большими шагами. Изобилие подробностей мешает думать, пока вы не дойдете до них и не начнете с ними работать. Эта форма абстрагирования очень близка к декомпозиции, которую мы опишем ниже.
Читать дальшеИнтервал:
Закладка: