Скретч (язык программирования)
![]() |
|
| Семантика: | |
|---|---|
| Класс языка: | |
| Тип исполнения: | |
| Появился в: | |
| Автор(ы): |
Митчелл Резник (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 [править]
Разработан в Университете Беркли. Основным расширением языка, которое было введено в BYOB стала возможность построения составных пользовательских блоков — аналога процедур обычных языков программирования. Поддерживаются рекурсия, замыкания и лямбда-выражения. Также добавлены отладчик и возможность компиляции в исполняемые файлы, вложенные спрайты, многомерные списки, улучшенная работа со скроллингом и компиляция исполняемых файлов. Начиная с версии 3.1 в BYOB добавлена поддержка ООП — спрайты BYOB теперь позволяют наследование на основе прототипов. Для этого в язык, в частности, введен механизм клонирования спрайтов.
Panther [править]
Panther — расширяет скретч поддержкой drag-n-drop управления спрайтами, возможностью клонирования спрайтов (объектов), и подсистемой CYOB (которая, как и BYOB, позволяет создавать собственные командные блоки, но требует для этого знания языка Squeak (современный диалект Smalltalk, на котором написан Scratch и его модификации).
Механизм Mesh [править]
И BYOB, и Panther включают поддержку механизма mesh,[15] обеспечивающее взаимодействие scratch-программ через сеть посредством разделяемых переменных и посылки широковещательных сообщений.
Slash [править]
Slash дополняет возможности BYOB 3.0 новыми возможностями Panther: клонированием и перетаскиванием спрайтов (объектов).
StarLogo TNG [править]
В 2008 году в Массачусетском технологическом институте также разработан образовательный язык программирования StarLogo TNG,[16] который расширяет возможности системы StarLogo возможностями трёхмерной графики и скретчподобным языком визуального блочного программирования. В отличие от оригинального OpenStarLogo[17] и MIT Scratch — StarLogo TNG в настоящее время не является программным продуктом с открытым исходным кодом.
Scratch 2 [править]
В феврале 2011 была выпущена первая онлайновая бета-версия Scratch 2.0,[18] в который планируется включение некоторых из возможностей BYOB (такие, как создание пользовательских процедур), векторной графики, клонирование спрайтов, возможность групповой работы над проектами и т. д.
App Invertor [править]
Ещё одной средой программирования, использующей стыковку визуальных логических блоков в стиле паззла стал App Inventor — экспериментальная система визуального программирования для платформы Android.
Более прямым аналогом языка Scratch на андроиде является язык Catroid, который разрабатывается в Институте Технологий Программного Обеспечения в Техническом Университете Граца в Австрии[19].
См. также [править]
Примечания [править]
- ↑ Creating from Scratch: New software from the MIT Media Lab unleashes kids' creativity online
- ↑ «Lifelong Kindergarten Group»
- ↑ Citilab — Projecte Scratch
- ↑ В версиях более ранних, чем 1.4 — числа (англ. numbers)
- ↑ Scratch Source Code
- ↑ Smalltalk Television Video Collection | Applications | Scratch hacking 1, 2, 3
- ↑ How to hack Scratch!
- ↑ Scratch Modifications
- ↑ Build Your Own Blocks (BYOB) home page
- ↑ Build Your Own Blocks (BYOB) (Scratch Modification) in Scratch wiki
- ↑ Panther — based on Scratch home page
- ↑ Panther (Scratch Modification) in Scratch wiki
- ↑ Slash Project
- ↑ Slash (Scratch Modification) in Scratch wiki
- ↑ Mesh
- ↑ StarLogo TNG
- ↑ OpenStarLogo
- ↑ Scratch 2.0
- ↑ Catroid Website
Ссылки [править]
- Официальная страница
- Курс «Введение в Scratch» — цикл из десяти уроков по основам работы в среде программирования Scratch.
- Scratch Wiki
- Учитесь со Scratch! — сообщество учителей, родителей и просто творческих людей. Сообщество скретчеров
- Скретч на letopisi.ru, включает Скретч-руководство
- Руководство по Scratch 1.4 на русском языке
- Видеоуроки Scratch на русском языке
- Обзоры
- Super Scratch Programming Adventure!. — No Starch Press, 2012, august. — 160 p. — ISBN 978-1-59327-409-2
- Александр Казанцев. Школа. Исполнители и алгоритмы // Linux Format. — январь 2010. — № 126—127 (1).
- Carolyn Y. Johnson. With simplified code, programming becomes child’s play, The Boston Globe (15 мая 2007). Проверено 16 апреля 2012.
| Основные языки программирования (сравнение • 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 |
| Прочие | |
| Эзотерические | |
| Визуальные | |
