Лучше Всего Использовать Языки На Основе Блоков


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

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

Новое исследование Дэвида Бау, Джеффа Грея, Кейтлин Келлехер, Джоша Шелдона и Франклина Турбака из MIT CSAIL, Университета Алабамы, Вашингтонского университета и колледжа Уэллсли свидетельствует о том, что блочные языки имеют преимущество перед более традиционными текстовыми:

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

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

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

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

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

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

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

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

Поиск и навигация: может быть сложно найти и перейти к соответствующей части программы блоков в 2D-рабочей области, только часть которой может быть видна. 

Управление версиями: системы совместной работы и контроля версий трудно использовать без текстового представления.

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

Редактор шагов Greenfoot сочетает в себе редактирование текстового стиля для деталей уровня выражения с блоками перетаскивания для структуры программы более высокого уровня.

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

В статье приведены некоторые примеры, но упущением является недавно анонсированный Microsoft MakeCode, в котором есть переключение режимов между блоками и JavaScript для micro:bit, Minecraft и других.

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

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

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

Последнее слово должно остаться за исследованием:

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


Добавить комментарий