Как обучать вычислительному мышлению?

в 13:48, , рубрики: computational thinking, Wolfram Alpha, wolfram language, wolfram mathematica, wolfram open cloud, wolfram programming lab, Блог компании Wolfram Research, вычислительное мышление, математика, обучение программированию, открытые данные, Программирование, Профессиональная литература, метки:
Как обучать вычислительному мышлению? - 1

Перевод поста Стивена Вольфрама (Stephen Wolfram) "How to Teach Computational Thinking".
Выражаю огромную благодарность Полине Сологуб за помощь в переводе и подготовке публикации


Содержание

Вычислительное будущее
Что такое вычислительное мышление?
Знакомство с Wolfram Language
А что насчет…
Основы
Куда может вписаться вычислительное мышление?
Что дети могут делать?
Во главе с детьми
Что такое вычисления и программирование?
Как все это будет происходить?


Вычислительное будущее

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

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

Я заметил одну интересную тенденцию. Выберите любую область X — от археологии до зоологии. Там либо уже есть «вычислительное X», либо скоро появится.

Как обучать вычислительному мышлению? - 2

Посмотрите на примеры вычислений из этой статьи в Wolfram Open Cloud »

Так как же нам подготовить сегодняшних детей для этого будущего? Я уже 40 лет связан с темой вычислительного мышления, и столько же времени создаю для него технологии и применяю их. На сегодняшний день у меня есть четкое представление о том, что требуется для формирования вычислительного мышления. Вопрос заключается в том, как обучить этому детей. Думаю, что теперь у меня есть хороший ответ на него: это Wolfram Language. В Wolfram Language есть технологии, благодаря которым можно обучать вычислительному мышлению даже детей.

Я лично очень заинтересован в этом: например, доступ к Wolfram|Alpha в Интернете уже несколько лет бесплатный. А теперь, после запуска сервиса Wolfram Open Cloud, любой человек в любом месте может начать изучение вычислительного мышления с Wolfram Programming Lab с помощью Wolfram Language. Но это только начало, и дальше я буду рассказывать об интересных новых вещах, которые сейчас стали возможны.

Что такое вычислительное мышление?

Ну, во-первых, давайте попробуем определить, что мы подразумеваем под "вычислительным мышлением". Его интеллектуальное ядро состоит в систематическом формулировании чего-либо с достаточной степенью ясности (чтобы можно было объяснить компьютеру, что нужно делать). Математическое мышление связано с формулировкой чего-либо таким образом, чтобы можно было решить это математически (когда это возможно). Вычислительное мышление гораздо шире.

Но как «сказать» компьютеру что-нибудь? Нужен язык. Благодаря Wolfram Language мы можем теперь непосредственно общаться с компьютерами о том, что нас интересует. Wolfram Language основан на знаниях: он знает, какие есть города, или специи, или песни и фотографии; и он знает, как проводить с ними вычисления. И как только у нас появляется идея, которую мы можем сформулировать вычислительно, тогда мы с помощью языка можем ее выразить и (благодаря трем десятилетиям развития технологии) максимально автоматизированно реализовать.

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

Программирование (и соответствующее образование) традиционно заключается в том, чтобы «говорить» компьютеру, что делать. Но благодаря технологиям, встроенным в Wolfram Language, вы можете работать на гораздо более высоком уровне и сосредоточиться на вычислительном мышлении, а не просто программировании.

Конечно, в мире необходимо некоторое количество разработчиков программного обеспечения, которые могут писать низкоуровневые программы на языках вроде C++, или Java, или JavaScript, и могут работать с деталями. Но это число очень невелико по сравнению с количеством людей, которые должны быть в состоянии думать вычислительно.

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

Семь лет назад мы выпустили Wolfram|Alpha, которую дети (и взрослые) используют для ответов на вопросы. В Wolfram|Alpha в качестве входного сигнала используется повседневный английский язык, а затем производятся сложные вычисления на Wolfram Language с последующей автоматической генерацией страниц результатов. Я думаю, что Wolfram|Alpha — это прекрасная иллюстрация того, что можно делать с помощью Wolfram Language. Правда, речь здесь идет о «быстрых» вопросах, которые могут быть выражены в нескольких словах.

А что насчет более сложных вопросов? Обычного английского языка здесь будет недостаточно Для того, чтобы достичь определенного уровня точности и получить определенные результаты, можно было бы создать очень сложный и непонятный язык. Хорошая новость в том, что есть альтернатива: Wolfram Language, который был создан для того, чтобы с его помощью можно было легко выражать сложные вещи.

Для того, чтобы начать использовать Wolfram|Alpha, не требуется никаких навыков. Но если вы хотите пойти дальше, то нужно научиться формулировать и структурировать. Другими словами, нужно научиться вычислительному мышлению. А главное заключается в том, что Wolfram Language — это язык, на котором можно сделать что-то постольку, поскольку он сумел превзойти простое программирование.

Знакомство с Wolfram Language

На что похоже первое знакомство детей с Wolfram Language? Чтобы понять, как научить вычислительному мышлению, за последние несколько лет я потратил довольно много времени на занятия Wolfram Language с детьми. Иногда я занимался с большими группами, иногда — с небольшими, а иногда просто замечал ребенка на каком-то взрослом мероприятии и в конечном проводил время с ним, а не со взрослыми. Я работал как со старшеклассниками, так и с учениками средней школы (11-14 лет).

Как обучать вычислительному мышлению? - 3

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

Как обучать вычислительному мышлению? - 4

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

После этого я обычно предлагаю им попробовать что-то, что в результате выдаст больше цифр:

Как обучать вычислительному мышлению? - 5

Часто они спрашивают, нормально ли, что получилось такое длинное число, или это сломался компьютер. Я предлагаю попробовать другие примеры, и дети проводят вычисления, которые мгновенно генерируют многие страницы чисел. Такие большие числа очень впечатляют детей. Я думаю, дело в том, что это позволяет им видеть, что, да, компьютер действительно может вычислять подобное (только подумайте, сколько времени вам понадобится, чтобы получить все эти цифры)…

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

Как обучать вычислительному мышлению? - 6

Range — хорошая функция в том смысле, что она несложная, и при этом очень наглядная и позволяет быстро получить ощущение того, что действительно можно заставить компьютер делать то, что хочется. Функция Range хороша также и потому, что ее легко использовать для создания чего-то большого. Часто я предлагаю им попробовать применить эту функцию к [1000]. Потом обычно кто-то спрашивает, можно ли построить диапазон чисел от 1 до 10000. Я предлагаю попробовать и это.

Как обучать вычислительному мышлению? - 7

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

Как обучать вычислительному мышлению? - 8

Если дети знакомы с математикой, я предлагаю им попробовать получить список состоящий из простых чисел:

Как обучать вычислительному мышлению? - 9

А потом — построить график:

Как обучать вычислительному мышлению? - 10

Для детей, которые думают, что не любят математику, вместо цифр я использую цвета:

Как обучать вычислительному мышлению? - 11

Можно смешать красный и синий цвета, чтобы получился фиолетовый:

Как обучать вычислительному мышлению? - 12

Можно использовать текущее изображение с камеры:

Как обучать вычислительному мышлению? - 13

И найти все «границы» элементов на нем:

Как обучать вычислительному мышлению? - 14

Можно также придумать с цветом кое-что посложнее:

Как обучать вычислительному мышлению? - 15

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

Как обучать вычислительному мышлению? - 16

Если у ребенка есть лингвистические способности, мы могли бы попытаться выбрать некоторые случайные слова:

Как обучать вычислительному мышлению? - 17

Можно использовать функцию StringTake, чтобы взять первую букву каждого слова:

Как обучать вычислительному мышлению? - 18

Затем с помощью функции WordСloud можно сделать облако из первых букв слов и посмотреть относительную частоту их встречаемости:

Как обучать вычислительному мышлению? - 19

Некоторые дети спрашивают: «а как насчет первых двух букв?».

Как обучать вычислительному мышлению? - 20

Еще можно поговорить некоторое время о том, сколько слов начинается с «не-» и т.д. Можно пойти дальше и посмотреть на переводы слов:

Как обучать вычислительному мышлению? - 21

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

Как обучать вычислительному мышлению? - 22

Так как мы говорили о цвете, интересно посмотреть, в какой точке цветового пространства находятся флаги (например, не так уж много «розовых стран»):

Как обучать вычислительному мышлению? - 23

Wolfram Language позволяет не просто проводить абстрактные вычисления, но вычисления, основанные на реальных знаниях. Он охватывает огромный спектр областей: от традиционных STEM-областей до искусства, истории, музыки, спорта, литературы, географии и так далее. Детям часто нравится делать что-то с картами.

Мы могли бы начать с того места, где мы находимся (функция Here). Или отталкиваться от какого-то ориентира. Вот, например, карта с окружностью радиуса 100 миль вокруг Эйфелевой башни:

Как обучать вычислительному мышлению? - 24

Вот еще изображения:

Как обучать вычислительному мышлению? - 25

А что насчет истории? Как может Wolfram Language взаимодействовать с этой областью? На самом деле, в Wolfram Language полно исторических знаний. О странах (

график роста и упадка Римской империи

Как обучать вычислительному мышлению? - 26

), или кино (

сравните постеры фильмов в разные годы

Как обучать вычислительному мышлению? - 27

), или, например, о словах.

Вот, к примеру, сравнение использования слов «лошадь» и «автомобиль» в книгах за последние 300 лет:

Как обучать вычислительному мышлению? - 28

Попробуйте сделать то же самое для названий стран, или изобретений, или чего угодно другого.

Можно пойти дальше по одному из множества направлений. Вот одно из них: символьная графика. Давайте сделаем шар:

Как обучать вычислительному мышлению? - 29

Детям всегда интересно сделать что-то подобное в 3D и повертеть. Можно также создавать 3D-графики, — например, как этот, состоящий из 100 сфер раскрашенных в случайные цвета:

Как обучать вычислительному мышлению? - 30

Детям всех возрастов нравится создавать интерактивный материал. Вот простой «глаз циклопа», который можно легко поэтапно построить:

Как обучать вычислительному мышлению? - 31

Иногда с помощью Wolfram Language я создаю мелодии. Вот случайная последовательность из музыкальных нот:

Как обучать вычислительному мышлению? - 32

Есть много интересных направлений. Для начинающего врача есть анатомия в 3D — вы можете взять геометрию кости и напечатать ее в 3D. И так далее.

Как обучать вычислительному мышлению? - 33

А что насчет…

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

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

Что касается ввода кода, необходимо понять одну вещь: в современном мире большинство детей среднего школьного возраста привыкло к использованию клавиатуры. Иногда, когда они начинают набирать код, им приходится сначала посмотреть, где находятся клавиши [ ] или +. Но никаких фундаментальных проблем с вводом у них нет. Кроме того, они вполне привыкли к изучению точных правил («i идет перед e ...» в английской орфографии; порядок операций в математике, и т.д.). Таким образом, запоминание нескольких правил вроде "в функциях используются квадратные скобки" или "имена функций начинаются с заглавной буквы" не составляет большого труда. И, конечно, в Wolfram Language нет всех тех исключений из правил, которые существуют в естественном языке.

Я увидел, что автоматические подсказки (элементы становятся красными, если они находятся в неправильном месте, предлагаются различные автодополнения, и т.д.) очень важны для детей, набирающих код. Суть в том, что, несмотря на теоретические опасения взрослых, реальным детям, кажется, легко дается набор синтаксически правильного кода в Wolfram Language. На самом деле, я был поражен тем, как быстро многие дети «схватывают» его. Увидев лишь несколько примеров, они сразу же начинали обобщать. А главное заключается в том, что, поскольку Wolfram Language разработан очень последовательно, придуманные ими обобщения на самом деле работают. Для меня, как для создателя языка, это трогательный момент.

ОК, дети могут вводить код Wolfram Language. Но чего они хотят? Многим детям нравится играть в игры на компьютере, и взрослые часто думают, что им понравится создавать их. Однако, по моим наблюдениям, это не так. Для большинства детей самым главным в Wolfram Language является то, что они могут сразу сделать с его помощью что-то реальное. Они могут ввести код, и компьютер сразу же сделает то, что они хотят. Они могут создавать изображения, звуки или тексты. Они могут заниматься искусством. Они могут заниматься наукой. Они могут исследовать языки. Они могут анализировать покемонов (да, в Wolfram Language встроены большие данные о покемонах). И, если они действительно хотят, они могут делать игры.

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

Основы

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

Концепция документов Wolfram, которую мы изобрели почти 30 лет назад, — это хороший способ взаимодействия с языком как для детей, так и для взрослых. Документ Wolfram — это прежде всего интерактивный документ, который свободно смешивает коды, результаты, графику, текст и все остальное. Можно проводить вычисления, набирать код и получать результаты прямо в документе. Результаты могут быть динамическими с собственными автоматически сгенерированными пользовательскими интерфейсами. И записывать и читать пояснения или инструкции можно непосредственно в документе. На то, чтобы довести до ума документы, потребовалось несколько десятилетий. Зато теперь у нас есть чрезвычайно эффективная среда, в которой удобно работать и думать (и, конечно, изучать вычислительное мышление).

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

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

Когда мы создали Wolfram|Alpha, я принял решение сделать ее бесплатной в Интернете по всему миру. И было здорово видеть, что множество людей (и особенно детей) пользуются ею ежедневно. Когда технология была готова, я решил также предоставить свободный доступ ко всему Wolfram Language в нашем Wolfram Open Cloud и настроить его таким образом, чтобы дети (и взрослые) могли бы обучаться там вычислительному мышлению.

Wolfram|Alpha настроена таким образом, что любой желающий может задавать ей вопросы на разговорном английском языке. Это хороший способ поддержки образования. Однако если вы захотите углубиться в изучение вычислительного мышления, то придется выйти за пределы привычного английского языка. И вот тут приходит на помощь Wolfram Language.

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

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

Книга доступна в Интернете бесплатно. Там также есть упражнения. Я первоначально намеревался написать книгу для средней школы и выше. Закончилось все тем, что пришло довольно много учеников средней школы (от 11 и старше), которые с энтузиазмом занимались по ней.

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

Ну хорошо. Когда ребенок открывает браузер, чтобы изучать вычислительное мышление и Wolfram Language, в каком направлении ему двигаться? Несколько месяцев назад мы запустили Wolfram Programming Lab. Бесплатная версия находится в Wolfram Open Cloud (там даже логин не нужен до тех пор, пока вам не захочется сохранить свою работу).

У Wolfram Programming Lab есть две основные ветви. Первая представляет собой набор Explorations, каждый из которых представляет собой документ с кодом, который вы можете редактировать и запускать. Затем документ предлагает варианты, куда двигаться дальше, чтобы самостоятельно заниматься исследованиями.

Explorations позволяют почувствовать вкус к Wolfram Language и вычислительному мышлению. В некотором смысле это похоже на языковое обучение методом погружения: вы начинаете с кода, который могли бы написать «свободно говорящие», и взаимодействуете с ним.

Но у Wolfram Programming Lab есть и вторая ветвь: интерактивная версия моей книги, которая позволяет людям двигаться шаг за шагом, начиная с очень простого и постепенно создавая все более и более сложный код.

Вы можете использовать Wolfram Programming Lab в полном объеме как через браузер, так и через облако. Однако есть и версия для стационарных ПК, которая работает на любом стандартном компьютере. Если у вас есть Raspberry Pi, значит, у вас уже есть и настольная версия Wolfram Programming Lab, которая поставляется в комплекте прямо с операционной системой, в том числе — специальные функции для получения данных от датчиков, подключенных к Raspberry Pi.

Мне хотелось убедиться, что Wolfram Programming Lab подходит для любого ребенка в любой точке земного шара независимо от того, включен ли он в образовательную среду. Что точно идет детям на пользу, так это доступ к людям, с которыми они могут совместно работать над чем-то. Мы планируем создать структуру для поддержки этого, включающую в себя, помимо всего прочего, сообщество Wolfram. Wolfram Programming Lab может легко вписаться в существующую образовательную структуру (не в последнюю очередь с помощью Wolfram Language) для создания аналитической системы, предназначенной для анализа успеваемости.

Стоит отметить, что одной из важных особенностей инфраструктуры Wolfram Cloud является то, что она позволяет всем (студентам и преподавателям) публиковать результаты своих исследований в интернете.

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

Это заставило меня задуматься. И в результате мы ввели подписи к коду на различных языках. Вы по-прежнему вводите код Wolfram Language с использованием стандартных имен функций, но при этом получаете мгновенное объяснение в вашем родном языке (кстати, некоторые версии моей книги будут доступны на разных языках).

Куда может вписаться вычислительное мышление?

Итак, я немного рассказал о преподавании вычислительного мышления. Но как вычислительное мышление вписывается в стандартную учебную программу? Легко!

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

Одним из способов достижения этого является пересмотр того, что представляет собой «математическое» образование (что и было достигнуто в рамках инициативы Сomputer Based Math). Другой подход предполагает вставить вычислительное мышление непосредственно в любую другую область учебного плана. Я заметил, что на практике (особенно среди учителей начальных классов) те преподаватели, которые полны энтузиазма в отношении обучения вычислительному мышлению, зачастую не имеют технической подготовки. Это как с нынешним поколением детей: не нужно быть технарем, чтобы разбираться в программировании и вычислительном мышлении.

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

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

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

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

В частности, в последние десятилетия в выпускаемых учебниках практически по любому предмету наблюдалась тенденция объяснять что-либо формально; в результате объяснения приходилось искать в публикациях. Но, так или иначе, с появлением MathWorld и Wikipedia более прямой стиль подачи информации стал обычным явлением, и у сегодняшних студентов принимается как нечто само собой разумеющееся. Для меня применение вычислительного мышления в каждой области знания является своего рода продолжением этой тенденции: то, о чем можно было говорить только косвенно и теоретически, теперь может быть показано с помощью вычислений непосредственно и в явном виде.

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

Вы могли бы говорить о стилях в искусстве (см. перевод на Хабре "Пропорции в искусстве. Есть ли что-то лучше золотого сечения? Исследование более 1 000 000 старых и современных картин") и использовать множество изображений известных картин, которые встроены в Wolfram Language. Тогда вы могли бы сравнить использование цветов в различных картинах, и, возможно, нарисовать график, демонстрирующий изменение цветовой палитры с течением времени и с появлением новых стилей.

Вы могли бы рассказывать об экономике разных стран, а могли бы сразу же создавать свои собственные инфографики, чтобы увидеть, как лучше всего представить важный материал. Вы могли бы говорить об истории, а могли бы использовать данные исторических карт в Wolfram Language для сравнения завоеваний Александра Македонского и Юлия Цезаря. Или вы могли бы сделать графики для каждого из президентов США с указанием состава администрации для каждого из них, и сравнить их посредством экономических или культурных показателей.

Или, к примеру, вы изучаете грамматику английского языка. Wolfram Language поможет вам в этом, автоматически составляя схемы предложений. Также вы можете позволить студентам попробовать использовать свои собственные правила для генерации предложений. А что насчет правописания? Может ли вычислительное мышление помочь в этом? Я не уверен. Можно, конечно, взять все общеупотребительные слова английского языка и поэкспериментировать с различными правилами… Это может быть интересно для обнаружения исключений (например, всегда ли «u» следует за «q»: с помощью Wolfram Language очень просто это узнать).

Можно провести интересное упражнение: проанализировать различные части стандартного учебного плана для различных предметов и задать себе вопрос: «можно ли упростить процесс обучения путем применения вычислительного мышления?». Я обнаружил, что, если человек действительно спрашивает о сути какой-то части учебного плана, ответ будет положительным.

Со временем перечень подобного рода примеров будет становиться все больше и больше. В прошлом с математикой результаты были довольно разочаровывающими: работающих примеров было немного. Конечно, существуют понятия вроде экспоненциального роста, которые появляются в куче мест, но со временем каждый понимает, что примеры в книгах о вычислениях не меняются с 1700-х гг. И в случае с программированием картина не намного лучше: последовательность Фибоначчи много где можно обнаружить. Но с программированием на основе знаний в Wolfram Language картина складывается совершенно иная, поскольку язык непосредственно подключается к данным и вычислениям, которые имеют отношение к сути каждого направления.

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

Какие же нужны вложения, чтобы студенты могли заниматься вычислительным мышлением? С имеющимися на данный момент технологиями — крайне небольшие. С Wolfram|Alpha — никаких. С Explorations в Wolfram Language они близки к нулю. С помощью задания кода в свободной форме ввода в Wolfram Language для начала работы знать достаточно совсем немного.

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

Что дети могут делать?

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

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

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

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

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

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

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

Чему же научатся дети, описывая что-либо на языке Wolfram? В первую очередь — вычислительному мышлению. Это действительно новый способ мышления. Но у него есть определенное сходство с другими вещами, которые делают дети. Как занятия математикой, например, формируют определенную точность и ясность мышления. Это, как и письмо, принципиально творческая деятельность. Хорошо написанный код в Wolfram Language, как и хороший текст, точен и элегантен, и его легко читать и понимать. Но, в отличие от обычного текста, целевой аудиторией для него оказываются не только люди: код предназначается также для компьютеров.

Когда у студентов возникают проблемы в математике, или химии, или в чем угодно еще, единственный способ определить, есть ли у них правильный ответ, это «посмотреть его в книге». Но с Wolfram Language происходит совсем другая история. Потому что дети сами могут сказать, находятся ли они на правильном пути.

Весь процесс создания кода немного отличается от всего того, что дети обычно делают. Сначала код разрабатывают, а затем отлаживают. Отладка — очень интересное интеллектуальное упражнение. Так как Wolfram Language — символьный язык, любой фрагмент его кода может работать сам по себе.

Но отладка — это, в конечном счете — о понимании и решении проблем. Что действительно классно в Wolfram Language, так это мгновенная обратная связь. Вы изменили что-то: помогло? Или нужно снова углубиться в код, чтобы выяснить что-то еще?

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

Вычислительное мышление — это как раз об этом. Речь идет не столько о программировании, сколько о том, что должно быть запрограммировано; о проблеме формулировки и переведения в вычислительную форму. И сегодня с Wolfram Language у нас есть все условия для превращения того, что было сформулировано, в нечто реальное существующее.

Во главе с детьми

Когда я демонстрирую детям примеры вычислительного мышления и Wolfram Language, я стараюсь выяснить, чем дети интересуются. Искусством? Или наукой? Историей? Или видеоиграми? Чем? Я стараюсь придумать пример, который лежит в сфере их интересов. А затем мы его запускаем. А в результате мы получаем какие-то изображения или визуализации. И тогда дети смотрят на полученный результат и обдумывают его, основываясь на том, что они уже знают. А потом почти всегда начинают задавать вопросы. «Каким образом это распространяется на это?»; «а как насчет сделать это вместо этого?», и т.д. И вот это действительно хорошо. Потому что, когда дети задают вопросы, вы понимаете, что они занимаются всерьез; они думают о том, что происходит.

Большинство предметов, которые преподаются в школе, довольно жестко ограничены. Несмотря на то, что вопросы задавать можно, они больше напоминают «техподдержку»: помогите мне понять эту существующую функцию. Они не похожи на «давайте поговорим о чем-то новом». Несколько раз я проводил с детьми сессии, на которых они спрашивали меня о чем-нибудь. Интересный опыт. Кто-то обязательно задаст вопрос, на который можно легко ответить на языке физики уровня колледжа. Для ответа на другой могут потребоваться знания уровня выпускника. А потом будет задан вопрос, на который, я знаю, непросто ответить даже с помощью новейших исследований. Или, может быть, тот, на который я знаю ответ, но только потому, что только в прошлом месяце мне довелось поговорить об этом с мировым экспертом, который и сам недавно разобрался в этом вопросе. До того, как я применил этот формат «спросите меня о чем-нибудь», я не знал, как это тяжело, когда дети свободно задают вопросы. Зато теперь я понимаю, почему у большинства учителей нет иного выбора, кроме как сделать традиционные школьные предметы гораздо более жестко ограниченными.

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

Я часто делал то, что можно назвать «живыми экспериментами». Я беру какую-то тему (либо ту, что предложила аудитория, либо ту, которая только что пришла мне в голову), — и затем я изучаю эту тему в режиме реального времени с помощью Wolfram Language, и смотрю, что я могу узнать о ней. С каждым годом это становится все проще, поскольку возможности и уровень автоматизации в Wolfram Language растут. И именно живым экспериментом мы открываем нашу летнюю школу Wolfram. В течение примерно часа мы создаем документ, который может стать заделом для статьи. Это довольно нервное занятие. Но почти всегда это хорошо работает. Большинство людей не понимает: всего за час можно с нуля сделать открытие, достойное публикации. Wolfram Language делает это возможным. Понятно, что я всю жизнь нарабатываю опыт в области вычислительного мышления и делаю открытия; однако для тех, кто обладает приличным знанием вычислительного мышления и Wolfram Language, сделать убедительный живой эксперимент окажется довольно легким делом.

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

Так где же есть такие открытия, которые могут быть сделаны детьми? Везде! Даже в такой хорошо развитой области, как математика, существует бесконечное поле для экспериментов, где могут быть сделаны открытия. В науке есть небольшое дополнительное препятствие: необходимость работать с фактическими данными. Конечно, много данных встроено прямо в Wolfram Language. И получить больше данных стало проще, чем когда-либо. Может быть, кто-то использует камеру или микрофон, или датчики, подключенные через Raspberry Pi или Arduino, или что угодно еще.

А как насчет гуманитарных областей? Для этого опять необходимы данные. Но, опять-таки, в Wolfram Language встроено множество изображений известных произведений искусства, текстов книг, исторической информации о странах, и так далее. И в современном мире легко найти в интернете подробные данные и импортировать их в Wolfram Language. Удивительно, насколько легко стало в наше время например искать в интернете даже малоизвестные документы многовековой давности (это очень помогло мне в моем хобби — изучении истории).

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

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

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

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

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

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

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

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

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

Я думаю, что людям может быть полезно сделать что-то «как компьютер». Это способствует пониманию того, что такое вычисления, и как этот процесс вычислений работает. Однако акцент нужно делать на обучении людей тому, что они сами будут делать. Технологии и автоматизация будут только распространяться. Нет смысла обучать людей тому, чтобы они делали работу компьютера; нужно научить их работать с компьютером в качестве инструмента.

Я слышал аргументы, касающиеся обучения детей тому, чтобы выполнять арифметические действия без калькуляторов, в стиле: «что, если бы вы оказались на необитаемом острове без калькулятора?». Теперь я слышу те же рассуждения относительно обучения детей программированию. Но, э-э, если вы оказались на необитаемом острове без компьютера, зачем вам писать код?

Чему же именно нужно учить? Вычислительное мышление — это действительно о мышлении. Речь идет о структурировании идеи и формулировании ее таким образом, чтобы можно было потом передать ее на компьютер, который затем может делать интересные вещи.

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

Основная цель состоит в том, чтобы дойти до точки, в которой вы сможете перевести то, что вас интересует, в вычислительную форму.

Часто речь идет об «изобретении алгоритма». Как сравнить рост Римской империи с распространением монголов? Как это правильно вычислить? Как отобразить? Можно ли сказать, вблизи полюсов Луны действительно есть большие кратеры? Каким образом можно идентифицировать кратер на картинке?

Это аналог таких вещей, которые лежат в основе развития практически во всех областях («вычислительная X»). И есть люди, которые учатся быть успешными в такого рода вещах. В рамках нашей компании многие из проблем уровня «изобрести алгоритм» решаются каждый день, — и это составляет большую часть работы над Wolfram Language и Wolfram|Alpha.

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

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

Что такое вычисления и программирование?

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

В Wolfram Language человек должен быть в состоянии формулировать идеи и преобразовывать их в код. В некоторых простых примерах (которых будет постепенно становиться все больше) можно просто указать желаемое на английском языке. Но обычно все-таки пишут непосредственно на Wolfram Language. А это значит, что на каком-то уровне мы имеем дело с программированием.

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

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

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

Что же важно? Вероятно, наиболее важный принцип заключается в том, что все (текст, изображения, сети, пользовательские интерфейсы, и т.д.) может быть представлено в вычислительной форме. Понятия функций и списков также играют важную роль (как и понятие универсального вычисления).

Проблема заключается в том, что то, что преподается в настоящее время, имеет слабое отношение не только к вычислительному мышлению, но и даже к программированию. Условия, циклы и переменные занимали центральное место в первых компьютерных языках в 1960-е годы. В современных компьютерных языках вроде C ++ и Java есть намного более удобные способы управления большими объемами кода. Но их основная вычислительная структура удивительно похожа на аналогичную в языках 1960-х гг. И фактически дети (которые, как правило, пишут небольшие кусочки кода) имеют дело с вычислениями 1960-х гг. (хотя и с участием механизмов, рассчитанных на большие базы кода, что делает его более сложным).

Wolfram Language — действительно язык современности. Его использование не было бы оправдано в 1960-е годы: компьютеры были недостаточно большими и быстрыми, и не существовало ничего похожего на современные облачные системы, предназначенные для поддержания большой базы знаний (хотя на самом деле даже в начале 1960-х гг. были такие языки, как LISP и APL, которые основывались на идеях более высокого уровня, напоминающих Wolfram Language, однако их использование стало возможным только спустя несколько десятилетий).

А что насчет циклов и переменных? Ну, все они существуют и в Wolfram Language. Просто они не являются главными принципами языка. Например, в моей книге Элементарное введение в Wolfram Language я говорил о присвоении значений переменным только с 38 главы, уже после обсуждения развертывания сложных приложений в Интернете.

Например, вы хотите сделать таблицу из первых 10 квадратов чисел. С помощью Wolfram Language это было бы очень просто:

Как обучать вычислительному мышлению? - 34

А вот на C, например, это выглядело бы грубо:

Как обучать вычислительному мышлению? - 35

Человек, далекий от программирования, может спросить: «какого черта все это нужно?». Но вместо того, чтобы прямо сказать, чего мы хотим, он на низкоуровневом языке говорит компьютеру, что именно он должен делать. Мы говорим ему выделить память для хранения целого значения n. Мы говорим, что начинать необходимо с n = 1, а затем увеличивать n до тех пор, пока он не достигнет значения 10. А затем в каждом конкретном случае мы сообщаем компьютеру, что он должен нарисовать квадрат (справедливости ради отмечу, что в более современных языках вроде Python или JavaScript некоторые из этих особенностей уходят в прошлое, но в этом примере мы до сих пор имеем дело с циклами и переменными).

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

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

Одной из важных особенностей Wolfram Language является то, что в нем объединяется большое количество различных вычислительных парадигм: функциональное программирование, процедурное, символьное. И машинное обучение, и так далее. Так что, когда люди знакомятся с Wolfram Language, они сразу же сталкиваются с широким спектром вычислительных идей, которые удобно и последовательно упакованы вместе.

А что происходит, когда человек, который научился программировать на Wolfram Language, хочет заняться низкоуровневым программированием на C++ или Java? Я видел подобное: это было очаровательно. Эти люди не сталкиваются ни с какими сложностями и легко схватывают, как именно нужно кодить на низкоуровневых языках; при этом они постоянно восклицают, что делают странные вещи, и говорят о том, что не работает: «О Боже, мне нужно самостоятельно выделять память!»; или: «ничего себе! Тут есть ограничение на размер целого числа». И так далее.

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

Когда я начал обдумывать идею преподавания вычислительной мышления и Wolfram Language детям, я предполагал, что курс будет рассчитан на старшеклассников. Однако я узнал, что по этой книге занимались и дети 11 и 12-ти лет. Так что Wolfram Programming Lab и так далее подходит для детей с 11-12 лет.

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

Еще в 1960-е годы был начат смелый эксперимент с Logo. Мне сказали, что первоначальная идея состояла в том, чтобы построить 50 «микромиров», где дети могли экспериментировать с помощью компьютера. В начале по экрану перемещалась черепаха, которая в течение полувека превратилась в оранжевого кота. К сожалению, остальные 49 микромиров так и не были построены. И, несмотря на то, что черепаха (или кошка) оказались довольно милыми (и для 1960-х годов впечатляющими), с точки зрения современного понимания и опыта вычислений эта идея выглядит очень узкой.

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

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

И, что еще более важно: вся эта настройка осуществляется силами небольшого количества блоков, по сути дела — микромира. В Wolfram Language есть более 5000 встроенных функций, и превращение их в блоки будет работой не только огромной, но и бесполезной. Смысл в том, чтобы выбрать из всех этих возможных функций несколько (50?) микромиров, каждый из которых включал бы лишь небольшой набор функций, выбранных так, чтобы с ними можно было делать разные интересные вещи.

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

Как это все будет происходить?

Процесс воспитания детей в русле вычислительного мышления только начинается. Я очень рад, что с помощью Wolfram Language и связанных с ним систем мы, наконец, получим инструменты, с помощью которых будут решены основные технологические проблемы. Но остается много других вопросов: структурных и организационных.

Я стараюсь делать все от меня зависящее: я имею в виду мою книгу, а также недавно созданные Wolfram Programming Lab и Wolfram Open Cloud. Но это лишь первые шаги. Необходимо много книг и курсов, ориентированных на различные группы населения. Необходимо определить деятельность онлайн и оффлайн сообществ. Необходимо донести студентам информацию о новых возможностях. И еще нужно обучать преподавателей.

У нас в разработке находится сейчас несколько проектов: готовый курс, основанный на Elementary Introduction; сайт Wolfram Challenges с задачами по кодированию и вычислительному мышлению; более структурированная программа менторства для отдельных студентов, работающих над проектами; франшиза летнего лагеря Wolfram, и так далее. Что-то из перечисленного является частью Wolfram Research; некоторые проекты относятся к Wolfram Foundation. Мы рассматриваем вариант некоммерческой инициативы для поддержки образования в области вычислительного мышления. Мы даже думали о создании школы, сосредоточенной вокруг вычислительного мышления, — не в последнюю очередь для того, чтобы показать, как это может быть реализовано.

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

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

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

Рано или поздно большая часть населения мира будет иметь возможность взаимодействовать с компьютерами (см. перевод на Хабре "Как говорить с искусственным интеллектом?") с помощью кода так же, как сейчас может читать и писать. Но сейчас мы находимся в самом начале этого пути. Я рад, что вношу свой вклад в развитие технологий. И я с нетерпением жду прогресса в этой области в ближайшие годы.

Попробуйте примеры вычислений из этого блога в Wolfram Open Cloud

Автор: OsipovRoman

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js