Snap ! (ранее Build Your Own Blocks) — это бесплатный блочный образовательный графический язык программирования и онлайн-сообщество. Snap позволяет учащимся исследовать, создавать и ремикшировать интерактивные анимации, игры, истории и многое другое, изучая при этом математические и вычислительные идеи. Хотя Snap ! вдохновлен Scratch , он имеет множество расширенных функций. Редактор Snap ! и программы, созданные в нем, представляют собой веб-приложения , которые запускаются в браузере (например, Scratch 3 ) без необходимости установки . [Примечание 2] Он построен на основе Morphic.js [2] , графического интерфейса пользователя Morphic , написанного Йенсом Мёнигом в качестве «промежуточного слоя» между самим Snap! и «голым» JavaScript.
В Snap ! экран организован в три изменяемых по размеру столбца, содержащих пять областей: селектор группы блоков (в верхней части левого столбца), палитру блоков (левый столбец), основную область (средний столбец) и область сцены (в верхней части правого столбца) с селектором спрайтов (также называемым загоном спрайтов), под которым отображаются миниатюры спрайтов. [Примечание 3]
В интерактивно изменяемой области сцены отображаются графические результаты скриптов, запущенных в области скриптов и/или интерактивно дважды нажатых отдельных блоков в любой палитре. Отдельные блоки можно перетаскивать из палитры в область скриптов, чтобы связать их с выбранным спрайтом.
Блоки Snap ! разделены на восемь групп: Движение, Взгляды, Звук, Перо, Управление, Ощущение, Операторы и Переменные. Расположение этих групп в селекторе групп блоков показано в таблице ниже.
Центральная область может отображать скрипты, костюмы/задники или звуки, связанные с выбранным спрайтом. То, что показывает эта область, зависит от выбранной вкладки.
Наиболее важные функции, которые предлагает Snap !, но отсутствуют в Scratch, включают в себя:
Алонзо, талисман Snap !, носит имя Алонзо Чёрча , изобретателя модели вычислений, в которой универсальная функция, представленная лямбдой, может создавать любое поведение функции, вызывая её на себя в различных комбинациях. Талисман представляет собой модифицированную версию Gobo from Scratch с разрешения команды Scratch. Поскольку работа Алонзо Чёрча называется лямбда-исчислением , волосы талисмана имеют форму греческой буквы лямбда .
Расширенные наборы блоков можно найти в библиотеках Snap !, например, в библиотеке «streams» , которая позволяет создать полную бесконечную последовательность Фибоначчи , например, с помощью специальных блоков («stream», «show stream», «tail of stream» и «map() over stream») из библиотеки.
Доступно множество других библиотек, таких как библиотека «утилиты списков», библиотека «слова, предложения», библиотека «итерации», библиотека «анимация», библиотека «распределение частот», библиотека «аудиовых вычислений», библиотека «столбчатые диаграммы», библиотека «карта мира», библиотека «цвета и мелки», библиотека «строки и многострочный ввод», библиотека «распараллеливание» и т. д. для других специальных целей.
Хотя само программное обеспечение имеет мало ограничений, некоторые ограничения у него все же имеются.
К ним относятся следующие:
Веб-платформа Snap ! и более старая платформа BYOB для настольных компьютеров были разработаны Йенсом Мёнигом для Windows , OS X и Linux [3] с использованием идей дизайна и документации, предоставленных Брайаном Харви [4] из Калифорнийского университета в Беркли , и использовались для преподавания вводного курса «Красота и радость вычислений» по информатике (CS) для студентов, не являющихся специалистами по информационным технологиям. [5] Йенс был членом команды Scratch до создания Snap!. [ 6] BYOB по-прежнему доступен для загрузки.
Исходный код Snap ! распространяется по лицензии GNU Affero General Public License (AGPL) и размещен на GitHub . [7] Более ранний код 3.x-версии для настольных компьютеров доступен по лицензии, которая допускает модификацию только для некоммерческого использования, и может быть загружен с веб-сайта Калифорнийского университета в Беркли [8] или со страницы загрузки CNET download.com и TechTracker. [ 9] [10]
Snap! работает в основных веб-браузерах на устройствах Windows , iOS , MacOS и Linux .
Поддерживаемые веб-браузеры, такие как
Snap ! построен на основе Morphic.js [2] , графического интерфейса пользователя Morphic , который служит «промежуточным слоем» между самим Snap! и «голым» JavaScript. Он использует интерфейс программирования приложений (API) HTML5 Canvas .
Все, что видно в Snap !, сами по себе являются морфами, то есть все кнопки, ползунки, диалоговые окна, меню, поля ввода, рендеринг текста, мигающие курсоры и т. д. создаются с помощью morphic.js, а не с помощью элементов HTML DOM. Snap! кэширует формы спрайтов , поэтому спрайт не нужно перерисовывать на новый элемент Canvas каждый раз, когда мышь перемещается по его ограничивающему прямоугольнику. Однако он не кэширует блоки. Вместо этого он управляет внутренними частями блоков в форме буквы C с помощью механизма морфических «отверстий».
Все взаимодействие с пользователем инициируется событиями, которые передаются от корневого элемента "мир" к его подморфам. Удаление морфа приводит к его внедрению в новый морф "владельца" ("родителя"). В Morphic предпочтительный способ запуска анимации - зарегистрировать ее в World, добавив ее в очередь анимации World. World шагает по каждой зарегистрированной анимации один раз за цикл отображения независимо от механизма шагов Morphic.
Snap ! был признан Logo Foundation [11] и рассмотрен в интернет-журнале для программистов. [12] По состоянию на декабрь 2014 года 100 средних школ Нью-Йорка (NYC) представили «Красоту и радость вычислений» Калифорнийского университета в Беркли в качестве нового курса AP Computer Science Principles с использованием Snap !. [13] Йенс и Брайан получили премию National Technology Leadership Summit (NTLS) 2020 Educational Leadership Award за достижения всей жизни , частично основанные на Snap !.