23-07-2023
Семантика: | |
---|---|
Класс языка: | |
Тип исполнения: | |
Появился в: | |
Автор(ы): |
Митчелл Резник (Mitchel Resnick) |
Типизация данных: | |
Основные реализации: |
Scratch |
Испытал влияние: |
Лого, Smalltalk, HyperCard, StarLogo, AgentSheets, Etoys, Tweak |
Скретч (произносится «скрэтч») — это визуальная объектно-ориентированная среда программирования для обучения школьников младших и средних классов. Название Scratch произошло от слова scratching — техники, используемой хип-хоп диджеями, которые крутят виниловые пластинки взад-вперёд руками для того, чтобы смешать музыкальные темы.[1]
Скретч создан как продолжение идей языка Лого и конструктора Лего. Написан на языке Сквик. Скретч разрабатывается небольшой командой исследователей из «Lifelong Kindergarten Group»[2] в Массачусетском технологическом институте. Текущая версия — 1.4, выпущена 2 июня 2009 года.
В 2008 году Scratch портирован под микроконтроллерный модуль Arduino. Проект носит название S4A[3].
Программы на скретче состоят из графических блоков, подписи к которым зависят от выбранного для интерфейса языка. Может быть выбран один из 50 языков интерфейса, включая русский. Для подключения интерфейса на новом языке используются стандартные gettext файлы.
Содержание |
Основными компонентами Скретч-программы являются объекты-спрайты. Спрайт состоит из графического представления — набора кадров-костюмов (англ. costume) и сценария-скрипта. Для редактирования костюмов спрайтов в скретч встроен графический редактор (англ. Paint Editor). Действие скретч-программы происходит на сцене (англ. stage) размером 480×360 (условных) пикселей с центром координат в середине сцены.
Для программирования сценариев в скретче используется drag-and-drop-подход: блоки из Окна блоков перетаскиваются в область скриптов.
По функциональному назначению блоки делятся на 8 групп, принадлежность блока к той или иной группе обозначается его цветом.
Группа | английское название | Цвет | Примечание |
---|---|---|---|
Движение | movement | синий | |
Внешность | looks | сиреневый | |
Звук | sound | розовый | |
Перо | pen | зелёный | используется для черепашьей графики |
Контроль | control | жёлтый | управляющие конструкции, заголовки обработчиков событий |
Сенсоры | sensing | голубой | опрос устройств ввода |
Операции[4] | operators | салатовый | арифметико-логические операции |
Переменные | variables | оранжевый |
У многих блоков имеется редактируемое белое поле для вводимых скретч-программистом параметров.
Блоки бывают трёх видов: блоки стека, блоки заголовков и блоки ссылок.
Блоки стека (англ. Stack Blocks) сверху имеют выемку, а снизу — выступ, их помощью они объединяются в группу блоков, называемую стеком. Стеки можно копировать и перемещать как единый блок. Особой разновидностью блоков стека являются управляющие конструкции, такие как циклы — они имеют С-образную форму, и могут охватывать собой вложенный стек скретч-блоков.
Блоки заголовков (англ. Hats) имеют выпуклый верхний край и выступ для объединения снизу — они образуют заголовки скретч-стеков. К блокам-заголовкам относятся блоки «когда …» (англ. when …) из группы «Контроль», позволяющие организовать обработчики сообщений: внешних — от клавиатуры и мыши, и внутренних — передаваемых между спрайтами и позволяющих объектно-ориентированное программирование в smalltalk-стиле.
Наконец, блоки ссылок (англ. Reporters) предназначаются для заполнения внутренних полей других блоков.
Язык скретч (как и Лого) оперирует числами, текстовыми строками, логическими значениями, а также списками, играющими роль динамических массивов.
Хотя архитектура скретч-программ, в виде набора спрайтов скретча, обменивающиеся друг с другом событиями, напоминает объектно-ориентированную, скретч не является объектно-ориентированным языком в нём (ни в каком виде) нет механизмов наследования (в последних версиях расширенного диалекта скретча BYOB введено прототипное наследование).
После выхода версии 1.4 исходный код Скретча был открыт на условиях Scratch Source Code License — представляющей собой простую копилефтную лицензию, с дополнительными ограничениями по неиспользованию оригинальных торговых марок (в более мягкой форме подобные ограничения включены, к примеру, в PHP License).
Код может быть загружен с официального сайта.[5] Условия его использования и распространения следующие:
- Вы не можете использовать слово «Scratch» для обозначения производных работ (за исключением фразы «на основе кода Scratch, созданного MIT Media Laboratory»),
- Вы не можете использовать в производных работах логотип Scratch или официального кота Scratch, защищённого авторским правом,
- Вы не можете реализовать возможность загружать проекты на любой веб-сайт MIT Scratch (в настоящее время — на сайт http://scratch.mit.edu),
- копии или производные работы должны сохранять уведомления об авторских правах и лицензии Scratch, и
- исходный код производных работ должны оставаться доступным.
Оригинальный текст (англ.)
- you cannot use the word "Scratch" to refer to derivative works (except in the phrase "Based on Scratch from the MIT Media Laboratory"),
- you cannot use the Scratch logo or the official (copyrighted) Scratch cat in derivative works,
- you cannot implement the ability to upload projects to any MIT Scratch website (currently, http://scratch.mit.edu),
- copies or derivative works must retain the Scratch copyright notice and license, and
- you must make the source code for derivative works available.
Распространяемый исходный код уже удовлетворяет данным условиям: в нём заменены логотип и спрайт с котом и удалён код сохранения скретч-проекта на scratch.mit.edu.
Впрочем, поскольку Scratch написан на Squeak, доступ к его исходным текстам существует и без предоставления их пользователю в явном виде — они хранятся вместе с результатом их компиляции в файле образа (англ.) смолток-системы. Хотя доступ к инструментам программирования и отладки языка Smalltalk, таким, как, System Browser по умолчанию в Scratch закрыт, разработчики оставили лёгкий способ получения доступа к этим возможностям. Достаточно зажать клавишу ⇧ Shift и кликнуть мышью по букве «R» в логотипе Scratch в левом верхнем углу окна программы, и выбрать в появившемся выпадающем меню пункт «Turn fill screen off».[6][7]
На основе исходного кода Scratch 1.4 был создан ряд модификаций языка,[8] таких как:
Разработан в Университете Беркли. Основным расширением языка, которое было введено в BYOB стала возможность построения составных пользовательских блоков — аналога процедур обычных языков программирования. Поддерживаются рекурсия, замыкания и лямбда-выражения. Также добавлены отладчик и возможность компиляции в исполняемые файлы, вложенные спрайты, многомерные списки, улучшенная работа со скроллингом и компиляция исполняемых файлов. Начиная с версии 3.1 в BYOB добавлена поддержка ООП — спрайты BYOB теперь позволяют наследование на основе прототипов. Для этого в язык, в частности, введен механизм клонирования спрайтов.
Panther — расширяет скретч поддержкой drag-n-drop управления спрайтами, возможностью клонирования спрайтов (объектов), и подсистемой CYOB (которая, как и BYOB, позволяет создавать собственные командные блоки, но требует для этого знания языка Squeak (современный диалект Smalltalk, на котором написан Scratch и его модификации).
И BYOB, и Panther включают поддержку механизма mesh,[15] обеспечивающее взаимодействие scratch-программ через сеть посредством разделяемых переменных и посылки широковещательных сообщений.
Slash дополняет возможности BYOB 3.0 новыми возможностями Panther: клонированием и перетаскиванием спрайтов (объектов).
В 2008 году в Массачусетском технологическом институте также разработан образовательный язык программирования StarLogo TNG,[16] который расширяет возможности системы StarLogo возможностями трёхмерной графики и скретчподобным языком визуального блочного программирования. В отличие от оригинального OpenStarLogo[17] и MIT Scratch — StarLogo TNG в настоящее время не является программным продуктом с открытым исходным кодом.
В феврале 2011 была выпущена первая онлайновая бета-версия Scratch 2.0,[18] в который планируется включение некоторых из возможностей BYOB (такие, как создание пользовательских процедур), векторной графики, клонирование спрайтов, возможность групповой работы над проектами и т. д.
Ещё одной средой программирования, использующей стыковку визуальных логических блоков в стиле паззла стал App Inventor — экспериментальная система визуального программирования для платформы Android.
Более прямым аналогом языка Scratch на андроиде является язык Catroid, который разрабатывается в Институте Технологий Программного Обеспечения в Техническом Университете Граца в Австрии[19].
Основные языки программирования (сравнение • IDE • история • хронология) | |
---|---|
Используемые в разработке |
Ада • APL • Язык ассемблера • ActionScript • ABAP/4 • AutoIt • AWK • Бейсик • Си • Кобол • C++ • C# • Cω • Clarion • Clojure • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • Euphoria • F# • Форт • Фортран • Gambas • Go • Groovy • HAL/S • Haskell • Icon • Java • JavaScript • Limbo • Lua • Модула-3 • Object Pascal • Objective-C • OCaml • Oz • Parser • Паскаль • Компонентный Паскаль • Perl • PHP • PowerBASIC • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic (.NET) |
Академические | |
IEC 61131-3 |
Instruction List • ST • FBD • Ladder Diagram (LD) • SFC |
Прочие | |
Эзотерические | |
Визуальные |
Скретч (язык программирования).