Snap! (язык программирования)

Блочный язык программирования
Щелчок!
Логотип Snap !
Парадигмаобъектно-ориентированный , образовательный , событийно-ориентированный
РазработаноБрайан Харви и Йенс Мёниг
РазработчикЙенс Мёниг
Впервые появился2011 ; 13 лет назад ( 2011 )
Стабильный релиз
9.2.17 / 24 апреля 2024 г. ; 5 месяцев назад [1] ( 2024-04-24 )
Дисциплина набора текстадинамический
Язык реализацииMorphic.js [2] (написан на JavaScript ); [Примечание 1]
ОСКроссплатформенный
ЛицензияАГПЛ
Расширения имени файла.xml (Всё ! )
Веб-сайтsnap.berkeley.edu
Под влиянием
Scratch , Схема , Логотип , Smalltalk , APL
Под влиянием
BeetleBlocks, NetsBlox, Dragme IDE, Turtlestitch

Snap ! (ранее Build Your Own Blocks) — это бесплатный блочный образовательный графический язык программирования и онлайн-сообщество. Snap позволяет учащимся исследовать, создавать и ремикшировать интерактивные анимации, игры, истории и многое другое, изучая при этом математические и вычислительные идеи. Хотя Snap ! вдохновлен Scratch , он имеет множество расширенных функций. Редактор Snap ! и программы, созданные в нем, представляют собой веб-приложения , которые запускаются в браузере (например, Scratch 3 ) без необходимости установки . [Примечание 2] Он построен на основе Morphic.js [2] , графического интерфейса пользователя Morphic , написанного Йенсом Мёнигом в качестве «промежуточного слоя» между самим Snap! и «голым» JavaScript.

Пользовательский интерфейс

В Snap ! экран организован в три изменяемых по размеру столбца, содержащих пять областей: селектор группы блоков (в верхней части левого столбца), палитру блоков (левый столбец), основную область (средний столбец) и область сцены (в верхней части правого столбца) с селектором спрайтов (также называемым загоном спрайтов), под которым отображаются миниатюры спрайтов. [Примечание 3]

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

КатегорияПримечанияКатегорияПримечания
 ДвижениеПеремещает и поворачивает спрайты КонтрольОператоры if, события,
структуры циклов,
сцены, ООП,
метапрограммирование
 ВыглядитУправляет видимостью,
костюмами и выходом
 ОщущениеВсе обнаружения попаданий спрайтов
и пользовательский ввод
 ЗвукВоспроизводит аудиофайлы и
программируемую последовательность аудио
 ОператорыМатематические, текстовые и
булевы операторы; лямбда
 РучкаПишите, рисуйте или
ставьте штампы на сцене
 ПеременныеПеременные, списки,
включая списки списков, списки блоков и т. д.
Три изменяемых по размеру столбца, содержащие пять областей, в IDE Snap! при запуске

Блоки Snap ! разделены на восемь групп: Движение, Взгляды, Звук, Перо, Управление, Ощущение, Операторы и Переменные. Расположение этих групп в селекторе групп блоков показано в таблице ниже.

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

Функции

Наиболее важные функции, которые предлагает Snap !, но отсутствуют в Scratch, включают в себя:

  • Выражения, использующие анонимные функции, представленные блоком внутри серого кольца, имеющим один или несколько пустых слотов/аргументов, которые заполняются «функцией более высокого порядка» (той, которая вызывает анонимную). (Их теоретической основой в области компьютерной науки являются функции первого класса , которые, в свою очередь, имеют лямбда-исчисление в качестве еще более абстрактной и математической основы)
  • Списки первого класса (включая списки списков/массивов )
  • Первоклассные спрайты (или, другими словами, программирование на основе прототипов )
  • «Гиперблоки»: функции, естественной областью действия которых являются скаляры (текст или числа), расширенные для приема списков в качестве входных данных и применения базовой функции к скалярам в списке или подсписке.
  • Вложенные спрайты
  • Кодификация программ Snap ! на текстовых языках, таких как Python , JavaScript, C и т. д.
  • Метапрограммирование , рефлексия и макросы

Талисман

Алонзо, талисман Snap !, носит имя Алонзо Чёрча , изобретателя модели вычислений, в которой универсальная функция, представленная лямбдой, может создавать любое поведение функции, вызывая её на себя в различных комбинациях. Талисман представляет собой модифицированную версию Gobo from Scratch с разрешения команды Scratch. Поскольку работа Алонзо Чёрча называется лямбда-исчислением , волосы талисмана имеют форму греческой буквы лямбда .

Специализированные блоки (библиотеки)

Расширенные наборы блоков можно найти в библиотеках Snap !, например, в библиотеке «streams» , которая позволяет создать полную бесконечную последовательность Фибоначчи , например, с помощью специальных блоков («stream», «show stream», «tail of stream» и «map() over stream») из библиотеки.

Доступно множество других библиотек, таких как библиотека «утилиты списков», библиотека «слова, предложения», библиотека «итерации», библиотека «анимация», библиотека «распределение частот», библиотека «аудиовых вычислений», библиотека «столбчатые диаграммы», библиотека «карта мира», библиотека «цвета и мелки», библиотека «строки и многострочный ввод», библиотека «распараллеливание» и т. д. для других специальных целей.

Ограничения

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

К ним относятся следующие:

  • Нет собственных облачных переменных
  • Ограничение на размер файла для загрузки — 10 мегабайт (только Snap ! Cloud)
  • Пользователям необходимо вручную включить Javascript при загрузке проекта.

История

Веб-платформа 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 .

Поддерживаемые веб-браузеры, такие как

  • Firefox
  • Chrome (и большинство браузеров на базе Chromium).
  • Опера GX
  • Microsoft Эдж
  • Сафари

Выполнение

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 !.

Примечания

  1. ^ BYOB был написан на языке Squeak .
  2. ^ BYOB, предшественник Snap !, был модификацией Scratch и мог экспортировать проекты как исполняемые файлы Windows .
  3. ^ Как был организован экран версии Scratch до 2.0.

Ссылки

  1. ^ "jmoenig/Snap". GitHub . Получено 17 мая 2024 г. .
  2. ^ abc Mönig, Jens. "morphic.js". GitHub . Получено 7 июня 2023 г. .
  3. ^ "Scratch - Imagine, Program, Share". scratch.mit.edu . Получено 21 мая 2017 г. .
  4. ^ "Домашняя страница Брайана Харви (bh@cs.Berkeley.EDU)". people.eecs.berkeley.edu/~bh/ . Получено 19 января 2019 г. .
  5. ^ "UC Berkeley EECS - CS10: Красота и радость вычислений - осень 2011". inst.eecs.berkeley.edu . Получено 21 мая 2017 г.
  6. ^ "Отношения с командой Scratch - Политика - Форумы Snap!". forum.snap.berkeley.edu . Архивировано из оригинала 2020-01-02.
  7. ^ "jmoenig/Snap". GitHub . Получено 21 мая 2017 .
  8. ^ "Snap! (Build Your Own Blocks) 4.0". snap.berkeley.edu . Получено 21 мая 2017 г. .
  9. ^ CNET Download.com и страница загрузки BYOB для Windows от CNET TechTracker
  10. ^ CNET's Download.com и TechTracker BYOB для страницы загрузки Mac
  11. ^ "История логотипа". el.media.mit.edu . Получено 21 мая 2017 г. .
  12. ^ Ого, Сью. "Visual Language Snap! Выпущена версия 4.0". i-programmer.info . Получено 21 мая 2017 г. .
  13. ^ "ИНФОРМАЦИОННЫЙ ЛИСТОК: Новые обязательства по поддержке образования в области компьютерных наук". obamawhitehouse.archives.gov . 8 декабря 2014 г. Получено 20 января 2019 г.
  • Официальный сайт
Взято с "https://en.wikipedia.org/w/index.php?title=Snap!_(язык_программирования)&oldid=1248761621"