Блочное программирование для новичков

Рассматриваем феномен этого типа программирования.
16 июня 2017326451Илья Бубнов17702537

Чтобы упростить обучение программированию, педагоги и разработчики создавали особые языки исключительно для получения базовых представлений (Pascal, Basic), потом взялись за визуализацию текста (Logo, Squeak Etoys). Последнее веяние — блочное программирование. Это своего рода детский конструктор из цветных деталей, каждая из которых имеет свое имя. Правильно собранный конструктор приводит к появлению настоящего рабочего кода.

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

Исследование, проведенное сразу в 4 американских вузах (MIT CSAIL, University of Alabama, Washington University и Wellesley College) выявило сразу 3 причины этого:

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

  2. Когнитивная нагрузка. Программирование сложно для новичков: оно заставляет мозг работать одновременно в нескольких направлениях — от творчества до логики. Блоки минимизируют когнитивную нагрузку до восприятия считанного числа цветных элементов, которые необходимо расставить в определенном порядке. Формально цель остаётся той же самой, что и во взрослом программировании, а такой подход привлекает.

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

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

При этом не стоит впадать в эйфорию и считать, что с помощью блочного программирования реально создать что-то сложное. Формально это возможно, но для профессиональной разработки есть ограничения:

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

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

  3. Снижение эффективности. Ограниченный синтаксис блочного программирования "свяжет вам руки" в желании выйти за рамки стандартных задач. Увеличивать синтаксис при этом смысла мало - в этом случае теряются все прелести блочного подхода.

Стоит заметить, что описанные недостатки частично решаются в более современных продуктах. Так, Microsoft MakeCode позволяет переключаться между блочным и текстовым программированием. А Scratch, ставший всеобщим любимцем, имеет огромное количество модификаций для разных платформ, в том числе для Arduino. Возможно, скоро блочное программирование станет обязательной остановкой на пути к большой профессиональной разработке.