Так что же такое вычислительное мышление. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Так что же такое вычислительное мышление.



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

Вычислительное мышление

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

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

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

Алгоритмическое мышление

Алгоритмическое мышление позволяет увидеть решение задачи в виде алгоритмов. Например, маршрут, который мы проложили, решая головоломку «Ход конем» и загадку экскурсовода, явился результатом серии инструкций, выполняя которые, нужно посетить все достопримечательности или все клетки на доске и вернуться к началу. Наше решение — простой алгоритм для экскурсии по городу и обхода доски. Можно использовать несколько маршрутов, при этом разные алгоритмы могут стать решением для одной задачи. Мы увидели, что фокусы — это тоже алгоритмы и фокусники используют их, чтобы создать магический эффект. Алгоритмы позволяют выигрывать в крестики-нолики и хорошо понимать пациентов с синдромом «запертого человека». Существуют алгоритмы приобретения знаний, которые в целом позволяют нам создавать разумные машины. При помощи алгоритмов зарабатывают деньги и создают произведения искусства. Более того, они спасают жизнь, будучи встроенными в медицинские приборы.

Почему, решив проблему, важно записать алгоритм? Во-первых, после этого ему можно следовать столько раз, сколько понадобится (снова и снова проводить экскурсии, всегда безошибочно играть в игру, каждый раз спасать жизнь...), и при этом не придется снова и снова решать одну и ту же задачу. Мы даже можем дать кому-то другому задание следовать алгоритму (например, младшему ассистенту, если вы менеджер туристического агентства; всем, кто посещает пациента с синдромом «запертого человека» в больнице; ассистенту фокусника...). В этом случае человеку не понадобится искать решение задачи с нуля. Сегодня алгоритмам следуют не только люди, как это было на протяжении тысячелетий. В эпоху компьютеров их превращают в программы, и на основе этих программ работу могут выполнять машины.

Компьютерное моделирование

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

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

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

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

Компьютерное моделирование даже изменило мир компьютерных игр. Например, World of Warcraft — это просто компьютерные модели фантазийного мира, а спортивные игры — компьютерные модели занятий спортом. В обоих случаях в программы встроены модели физических законов, чтобы, например, все, что поднимается вверх, непременно опускалось вниз!

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

Научное мышление

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

Эвристика

Иногда действительно невозможно создать алгоритм, который обеспечит наилучшее решение для задачи — или вообще, или в доступное время (и это правда невозможно, а не просто трудно). В таких ситуациях используется эвристический алгоритм. Он не гарантирует оптимального решения, но обеспечивает разумный вариант в разумный срок. Для создания такого алгоритма необходимо эвристическое решение задачи. И пусть ответ не всегда будет лучшим — в большинстве случаев он окажется хорошим. По этому принципу действует ваш навигатор, когда прокладывает для вас путь.

Логическое мышление

Чтобы мыслить алгоритмически, необходимо логическое мышление, крайне тщательный и точный подход к деталям. Например, инструкции в алгоритме должны охватить все возможные варианты развития событий. Если в вашем алгоритме используется сложение, указали ли вы, что делать с отрицательными числами? Столкнувшись с ними, компьютер либо даст неправильный ответ, либо вообще зависнет. Разрабатывая алгоритм, нужно предельно логично оценить то, как он работает. Если не на бумаге, то уж точно в голове вам нужно иметь логические аргументы, подтверждающие его бесперебойную работу. Нельзя допустить, чтобы ваш спускаемый аппарат потерпел крушение, когда он наконец-то опустится на поверхность Марса спустя долгие месяцы, только потому, что вы забыли какую-то деталь. Как мы увидим далее, логическое мышление — это часть оценки.

Сопоставление с образцом

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

При решении задач сопоставление с образцом помогает уменьшить объем работы, потому что при получении новой задачи позволяет не повторять одни и те же сложные операции каждый раз. Нужно найти аналогичную задачу из числа уже решенных и взять старое решение. Например, когда вы видите задачу или головоломку, связанную с составлением маршрута, нужно вспомнить о графах. Эту же мысль можно сформулировать по-другому: если вы видите, что задача соответствует модели передвижения из одной точки в другую, то для ее представления стоит использовать граф. Точки необязательно должны быть физически существующими местами. Например, это могут быть веб-страницы (с гиперссылками между ними), режимы будильника (с кнопочным переходом между ними), города (с перелетами из одного в другой) и так далее.

Представление

Решение проблемы можно облегчить, выбрав для нее хорошее представление, котороеявляется способом организации информации. Есть на удивление много возможностей представить одну и ту же информацию, и, как только вы это осознаете и с самого начала сосредоточитесь на выборе хорошего представления, задачи станут проще. Как мы видели на примере задач с составлением графа и игры «Бусы, хлеб, баня», хорошее представление значительно облегчает весь процесс как для людей, так и для компьютеров. Однако оно может полностью поменять используемый алгоритм. Порой очевидно, что благодаря верному представлению открываются возможности использовать простой и быстрый алгоритм вместо медленного и сложного. В этой книге мы ознакомились с разными представлениями — например, растровые изображения, состоящие из большого количества пикселов, формирующих решетку, и векторные изображения в виде линий и фигур. Мы узнали, что представление в виде сетки открывает самые разные возможности. Также мы увидели, что если числа хранятся в двоичном представлении на перфокартах, то возможен быстрый поиск и применение алгоритма упорядочивания. Представление образца в виде цифрового фильтра позволяет создать алгоритмы, помогающие компьютерам видеть. То есть выбор хорошего представления является важной частью абстрагирования и генерализации.

Абстрагирование

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

Один из важных способов использования абстрагирования, который называется абстракция управления, мы рассмотрели на примере фокусов. Он состоит в объединении инструкций, что позволяет получить инструкции для достаточно больших этапов процесса. Идея здесь состоит в том, чтобы спрятать подробности отдельных маленьких шагов. В кулинарных книгах это встречается на каждом шагу. Там даются инструкции вроде «сварите картошку». Сюда входит много этапов: наполнить кастрюлю водой, включить конфорку, довести воду до кипения, положить картошку и так далее. Все эти шаги сведены вместе в одну простую команду «сварите картошку». Чтобы выполнить инструкцию, нужны все детали, но абстрагирование помогает записать инструкции и воспринимать алгоритм (или рецепт) в целом, чтобы работать с большими шагами. Изобилие подробностей мешает думать, пока вы не дойдете до них и не начнете с ними работать. Эта форма абстрагирования очень близка к декомпозиции, которую мы опишем ниже.

Есть еще один тип абстрагирования — абстрагирование данных. В этом случае прячут подробности хранения данных, то есть как они представлены на самом деле. Например, числа в реальности хранятся на компьютере в бинарном коде — как последовательность нолей и единиц. То есть число 16 выглядит как 00010000. Мы игнорируем этот факт, когда думаем о числах. У нас в голове именно 16 — десятичное число, которое мы привыкли использовать. Когда мы пишем программы, то используем в инструкциях десятичные числа, а не двоичные. Но наши программы просят пользователей вводить десятичные числа. При этом компьютер с ними не работает. Пользователям вообще не надо знать, что числа хранятся именно в таком виде, — эта подробность спрятана.

Мы используем абстрагирование не только при создании программ. Оно подходит и для их оценки. Например, как мы видели ранее, оно кстати при выборе алгоритма для помощи пациенту с синдромом «запертого человека». Если нужно решить, какой из двух алгоритмов с одинаковой задачей работает быстрее, не надо думать о времени как таковом. Отвлечемся от этих подробностей и будем думать только о выполненной работе — сколько операций нужно провести, чтобы довести до конца каждый алгоритм и справиться с задачей. Если для одного алгоритма нужно выполнить 100 инструкций, а для другого — только 10, то второй будет быстрее. Проверяем это, просто пересчитывая операции, не засекая время. Мы прячем подробности о временны`х затратах на операции, чтобы облегчить себе задачу.

Обобщение

Идея взять решенную проблему и приспособить ее решение (алгоритм) к другим подобным задачам называется обобщением. Предположим, что нужно найти свое имя в списке рассадки гостей. Этот список — представление имен, из которого мы узнаем, где сидим. Вместо того чтобы искать в случайном порядке, мы начинаем сверху и проверяем каждое имя по очереди, пока мы не дойдем до своего. Другой пример — надо найти на полке CD, и мы понимаем, что это похожая задача. Таким образом мы осуществляем сопоставление с образцом — сравниваем одну задачу с другой. Как только мы осознаем, что две задачи сводятся к одной, то используем для обеих одно и то же решение, и необходимость поиска нового алгоритм отпадает. Мы начинаем с одного конца и ведем пальцем по полке, проверяя каждый диск по очереди, пока не найдем нужный (или не доберемся до конца, что будет означать отсутствие диска). Мы обобщили и преобразили алгоритм (решение для первой задачи) и используем его для решения новой задачи.

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

Обратите внимание: чтобы провести обобщение, необходимо скрыть часть деталей. Нам не нужно думать об особенностях имен или дисков, поэтому мы обобщили их до «элемента». Мы используем абстрагирование, чтобы провести обобщение.

Иногда мы проводим обобщение, чтобы создать очень общие алгоритмы, которые можно использовать во многих ситуациях, как показано выше. В других случаях мы понимаем, что новая задача в совершенно иной области похожа на уже решенную нами, и поэтому мы делаем однократное обобщение — переносим задачу (а значит, и решение). Например, в телефонах используется функция предиктивного набора текста. Когда вы начинаете вводить слово, телефон догадывается по набранным буквам, что за слово вы набираете. Парализованные люди, которые не могут говорить, общаются, выбирая буквы по системе моргания. Тот же самый алгоритм предиктивного набора текста можно использовать и в этой ситуации. Люди точно так же могут догадаться, что им хотят сказать, по первым буквам. Один алгоритм можно использовать для двух разных с виду проблем, как только становится очевидным их сходство при сопоставлении с образцом.

Сопоставление с образцом и обобщение используют на самых разных уровнях — от осознания, что задача аналогична уже решенной, и до понимания, что небольшие фрагменты задач одинаковы. Часто при написании программы видно, что отдельные ее части похожи на то, с чем мы уже имели дело. Предположим, нам нужно, чтобы программа каждый раз спрашивала, хотим ли мы сделать что-то еще раз (например, сыграть в игру снова после выигрыша). Если мы уже писали код для такого случая, то имеет смысл адаптировать его и интегрировать в новую программу, не продумывая необходимые команды с самого начала.

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

Декомпозиция

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

Использование метода декомпозиции при написании программ тесно связано с абстракцией управления. Идея состоит в том, чтобы разбить программу на массу более мелких задач. Каждую из этих небольших программ написать легко. После этого становится легче написать большую объединяющую их программу, потому что не надо думать обо всех деталях. Как только части завершены, мы учитываем только то, что они делают, а не как они это делают. Чтобы облегчить процесс, каждой части присваивается имя, которое четко указывает, чтó она делает, но подробности при этом скрыты (такого рода наименования — это еще один вид абстракции). Потом при объединении маленьких программ уже не надо думать о мелких деталях.

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

Понимание людей

Высокие технологии в конечном итоге создаются для людей и в помощь людям. Это значит, что вычислительное мышление главным образом связано с решением проблем людей, а не технологий. Поэтому алгоритмическое мышление должно включать понимание людей и особенно их сильных и слабых сторон. Мы видели это на многочисленных примерах — от помощи пациентам с синдромом «запертого человека» до заботы о том, чтобы медсестры не делали ошибок. Вот еще один пример, подтверждающий эту мысль. Представьте, что вы пишете алгоритм, обеспечивающий безопасность банковских операций в интернете. Можно придумать алгоритм, который потребует пароля из 1000 произвольных символов, куда нельзя вставлять существующие слова. Это, безусловно, обеспечит высокую степень безопасности! А еще это будет очень глупо. Ни один человек, за исключением пары случайных гениев, не запомнит такой пароль. Алгоритм окажется бесполезным. Решение задач с помощью вычислительного мышления должно быть связано с пониманием возможностей людей.

Оценка

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

Оценка подразумевает проверку соответствия вашего решения поставленной цели и его оценку по нескольким параметрам. Самый главный из них — функциональная корректность. Действительно ли ваш алгоритм работает? Это необходимо проверять всегда! Что бы ни случилось, он должен непременно давать правильный ответ. Обязательно в этом убедитесь. В противном случае человек или машина, которые будут его использовать, могут оказаться в сложной ситуации, слепо выполняя неправильные действия, и в итоге не будут знать, что делать. Мы видели это, в частности, на примере с фокусом, где надо было угадывать выбранные предметы. Даже если мы предусмотрим все возможные варианты, ничего не получится, если кто-нибудь выберет один из наших секретных предметов. Ни фокусники, ни компьютеры не должны оставаться без плана действий в подобных случаях.

Еще можно оценить производительность в плане скорости. Насколько быстро работает ваш алгоритм? Есть ли другие, которые справятся с задачей быстрее? Есть ли конкретные ситуации, когда алгоритм будет работать медленно? Насколько важны эти ситуации? Например, алгоритм быстрой сортировки quicksort обычно работает очень быстро. Однако, если одной из его версий заказать сортировку уже отсортированных позиций, работа будет идти до абсурдного медленно. То есть процесс сортировки уже расположенных по порядку позиций займет больше времени, чем сортировка бессистемно собранных позиций. Это отличный алгоритм, но было бы глупо использовать его, если вы знаете, что у вас почти все расположено по порядку. Ситуация, когда подходит один-единственный алгоритм, встречается редко. И нужно обязательно проверить, насколько он подходит для конкретного случая.

Третья, очень важная часть оценки — проверка соответствия разработанного решения поставленной цели. Как мы говорили, алгоритмы существуют для людей. Они должны работать так, чтобы мы могли их использовать, что уже обсуждалось при рассмотрении алгоритмического дизайна. Следовательно, вам необходимо оценить, насколько легко пользоваться программами, системами и решениями и какие впечатления останутся у пользователей. Вы же не хотите, чтобы у пользователей получались ошибочные результаты, они разочаровывались и злились? В ходе оценки вы, по сути, задаете вопрос: «Хорошо ли это работает, если учесть особенности людей? Учтены ли в разработанном решении наши сильные стороны и ограничены ли проблемы, связанные со слабыми сторонами?»

Предположим, вы разрабатываете медицинский прибор, который будет вводить пациентам обезболивающее. Медсестра настраивает дозу, включает подачу, и прибор в течение нескольких часов проводит внутривенное вливание лекарства. Конечно же, вам нужна функциональная корректность. Если по рецепту необходимо вводить 15,5 мг в час в течение шести часов и медсестра это запрограммировала, то прибор должен точно выполнять задачу. Кроме того, он должен работать быстро. Если медсестре придется ждать начала работы несколько минут после введения значений дозы, так дело не пойдет. Что еще важнее, он должен быть легким в использовании, уметь предотвращать ошибки и ликвидировать последствия. Если медсестра по ошибке вводит 155 мг вместо 15,5, что является опасным объемом, то аппарат должен по крайней мере предупредить медсестру и дать возможность исправить ошибку. Еще лучше, если он будет сконструирован так, чтобы вероятность таких ошибок изначально снижалась.

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

Существует еще и комплементарный подход к тестированию, который сводится к строгому аргументу. Вместо того чтобы запустить программу и смотреть, работает ли она, можно использовать право на аргумент. Для этого нужно с помощью логических рассуждений доказать, почему определенные тесты гарантируют, что система работает правильно. Крайнее проявление этого метода — использование только логических доказательств, являющихся разновидностью математических доказательств. Когда вы создаете алгоритм или программу, вы представляете себе причины, в соответствии с которыми, с вашей точки зрения, они должны работать. На стадии оценки вы проверяете эти причины и смотрите, не пропустили ли вы какие-то детали. Часто такие доказательства делаются при абстракции системы. Это означает, что неважные детали игнорируются, что облегчает поиски доказательства. Однако необходимо различать, когда результаты тестирования применимы к модели системы, а когда — к самой системе. Если модель правильная, это не всегда значит, что правильна и система.

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

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

И опять мы используем аналитические методы и логические рассуждения. В принципе, для этого нужно привлечь специалистов, которые хорошо знают особенности людей, понимают, что делает дизайн плохим или хорошим, и могут организованно оценить системы. Их цель — предсказать потенциальные проблемы, то есть те особенности, которые могут привести к трудностям. Например, эксперты могут взять какую-то задачу и на каждом этапе спросить: «Может ли человек неправильно понять, что здесь нужно делать и как?» Эксперты используют особые принципы, например: «В случае ошибки необходимо, чтобы всегда можно было отменить последний шаг». Если они обнаруживают ситуацию, где такая отмена невозможна, то сообщают об этом как о проблеме, требующей решения.

Креативность

Создание алгоритмов — процесс творческий, и поэтому с ним тесно связан навыккреативности. Конечно же, можно продвигаться очень медленно и использовать хорошо известные приемы — так начинает большинство. Однако блестящие программисты придумывают совершенно новые алгоритмы либо для старых, либо для совершенно новых задач. Они видят возможности там, где никто их не заметил. Идеи по реализации этих концептов, конечно же, тоже требуют творческого подхода. Другие элементы вычислительного мышления также связаны с креативностью. При абстрагировании креативность помогает выделить частности, которые лучше скрыть, чтобы значительно облегчить задачу. Подобным образом для обобщения и сопоставления с образцом порой нужны творческие озарения, которые позволяют увидеть связь между совершенно разными с виду ситуациями. Как оценить, насколько легко пользоваться мобильным приложением в реальных ситуациях? В лаборатории можно проследить за всем, что делают пользователи. Вне стен лаборатории это нереально... или реально?

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

Для креативности нужны подходящие условия. Участники должны быть склонны к игре и к ситуациям, которые ей способствуют. Помогает, если человеку хочется заниматься интересными вещами, ведь информатика — очень интересное занятие. Вам понадобятся время и место, которые позволят отпустить мысли на свободу. Кроме того, необходимо отсутствие стресса и жестких сроков. Конечно, самые творческие идеи приходят не индивидам, а группам, в которых принято обмениваться идеями и подпитываться креативностью друг от друга. Компании (и страны), которые содействуют такой организации труда, действительно изменят мир! Неудивительно, что IT-компании из числа самых больших и успешных действуют именно так.

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

Резюме

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

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

Дополнительная литература

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

Это информатика?

Информатика повсюду вокруг нас, стоит только приглядеться, — и не только в компьютерах.

Computer Science for Fun — www.cs4fn.org. Тысячи статей обо всех аспектах занимательной информатики, а еще журналы и буклеты.

CS Unplugged — csunplugged.org/. Место для информатики без применения компьютеров, где можно скачать книгу с классными занятиями.

Curzon P. Computing Without Computers. v0.15, Feb 2014. Ссылка для скачивания: teachinglondoncomputing.org/resources/inspiring-computing-stories/computingwithoutcomputers/.

Curzon P. Computational Thinking: HexaHexaflexagon Automata. Queen Mary University of London, 2015. Гексафлексагоны стали способом исследовать конечные автоматы.

Teaching London Computing — www.TeachingLondonComputing.org. Ресурс для учителей, помогающий обучать междисциплинарным навыкам вычислительного мышления. Есть дополнительные материалы по многим темам, освещенным в этой книге.

Левитин А., Левитина М. Алгоритмические головоломки. — М: Лаборатория знаний, 2017. Больше алгоритмических головоломок, чем можно себе представить, которые используются как подспорье в разработке алгоритмов.

Маккормик Дж. Девять алгоритмов, которые изменили будущее. — М: ДМК Пресс, 2014. Подробное исследование важных алгоритмов, которые изменили нашу повсе­днев­ную жизнь.

Хофштадтер Д. Р. Гедель, Эшер, Бах. Эта бесконечная гирлянда. — Самара: Бахрах-М, 2001. Превосходная книга в духе Льюиса Кэрролла, получившая Пулитцеровскую премию, об интеллекте, машинах, информатике, доказательствах, шаблонах, силе правил и многом другом.

Это математика?

Многие книги вроде бы о математических развлечениях на самом деле полны игр, головоломок и любопытных фактов из области информатики. Вот некоторые из числа наших любимых.

Berlekamp E., Conway J., Guy R. Winning ways for your mathematical plays. Academic Press, 1982. В книге анализируется масса игр и головоломок. Также дается подробный обзор игры «Жизнь» от авторов этой игры.

Eastaway R., Wyndham J. How long is a piece of string. Robson Books, 2003. Фракталы, задачи об упаковке багажа и доказательства.

Eastaway R., Wyndham J. Why do buses come in threes? Robson Books, 1998. Графы, неформальная логика и магия.

Stewart I. The magical maze. Phoenix, 1998. Представление в виде графов, исследование лабиринтов, фокусы и многое другое.

The Puzzler — www.puzzler.com. Мы решаем очень много головоломок из разных источников, но указываем именно The Puzzler, потому что он просто чудесен.



Поделиться:


Последнее изменение этой страницы: 2021-01-14; просмотров: 257; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.137.64 (0.077 с.)