Notional Machine: простое объяснение сложных вещей

образовательный процесс
программирование
Дата публикации

17 августа 2022 г.

В нескольких книгах и статьях встретил интересный термин - Notional Machine. Этим термином обозначают модель или аналогию, с помощью которой объясняется, как работает какой-либо аспект языка программирования или компьютера. Ближайшим по смыслу будет перевод условная модель. Точный перевод подобрать пока не смог. Для краткости буду писать сокращённо - УМ.

Что такое Notional Machine?

Условная модель - это инструмент, который помогает объяснить особенность работы программы или компьютера1.

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

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

С помощью УМ внимание учащихся обращается на:

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

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

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

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

В следующей концепт-карте показаны взаимосвязи между разными моделями.

Условные модели тесно связаны с теорией семантических волн, о которой напишу в следующий раз.

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

УМ делятся на две группы:

Сгенерированные компьютером

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

Пример визуализации программы в сервисе PythonTutor

Пример визуализации программы в сервисе PythonTutor

В следующем примере используется сервис Expression Tutor. С его помощью выражения представляются в виде дерева. Например выражение 1 - 2 + 3 выглядит так:

Пример использования сервиса Expression Tutor

Пример использования сервиса Expression Tutor

Созданные человеком

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

Пример модели - изображение потока выполнения программы в виде графа:

Много других примеров находятся на сайте Notional Machines. Сайт создали авторы статьи, которую я цитирую.

Немного истории

Потребность объяснить простым языком то, как работает компьютер появилась в 70-х годах с распространение высокоуровневых языков программирования Logo и Basic. Чтобы объяснить ученикам и учителям, как работает Logo был разработан мануал с объяснением сложных концепций при помощи аналогий:

Картинка взята из этого мануала. На ней массив слов сравнивается со стопкой коробок. Или вот ещё одна аналогия:

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


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

Сноски

  1. Информация для поста взята из этой публикации.↩︎

  2. По этой ссылке можно посмотреть самому, как программа выполняется по шагам.↩︎