Скретч (язык программирования)

Скретч (язык программирования)
Скретч
Scratch Logo.png
Семантика:

событийно-ориентированная

Класс языка:

графический, учебный

Тип исполнения:

интерпретатор

Появился в:

2007

Автор(ы):

Митчелл Резник (Mitchel Resnick)

Типизация данных:

динамическая

Основные реализации:

Scratch

Испытал влияние:

Лого, Smalltalk, HyperCard, StarLogo, AgentSheets, Etoys, Tweak

Пример программы на Скретче (запущен под Mac OS X)

Скретч (произносится «скрэтч») — это визуальная объектно-ориентированная среда программирования для обучения школьников младших и средних классов. Название 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] Условия его использования и распространения следующие:

  1. Вы не можете использовать слово «Scratch» для обозначения производных работ (за исключением фразы «на основе кода Scratch, созданного MIT Media Laboratory»),
  2. Вы не можете использовать в производных работах логотип Scratch или официального кота Scratch, защищённого авторским правом,
  3. Вы не можете реализовать возможность загружать проекты на любой веб-сайт MIT Scratch (в настоящее время — на сайт http://scratch.mit.edu),
  4. копии или производные работы должны сохранять уведомления об авторских правах и лицензии Scratch, и
  5. исходный код производных работ должны оставаться доступным.

Распространяемый исходный код уже удовлетворяет данным условиям: в нём заменены логотип и спрайт с котом и удалён код сохранения скретч-проекта на 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].

См. также

Примечания

Ссылки

Обзоры

Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Полезное


Смотреть что такое "Скретч (язык программирования)" в других словарях:

  • Лого (язык программирования) — У этого термина существуют и другие значения, см. Лого. Лого (англ. Logo) Появился в: 1967 Автор(ы): Сеймур Пейперт, Идит Харель Испытал влияние: Лисп …   Википедия

  • Язык программирования — Язык программирования  формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия,… …   Википедия

  • Си (язык программирования) — У этого термина существуют и другие значения, см. Си. Запрос «Язык программирования Си» перенаправляется сюда; см. также другие значения. Си Класс языка: процедурный Тип исполнения: компилируемый Появился в: 1969 1973 Автор( …   Википедия

  • Ада (язык программирования) — У этого термина существуют и другие значения, см. Ада. Ада Семантика: мультипарадигменный: конкурентное, обобщённое, императивное, объектно ориентированное, распределённое программирование Тип исполнения: компилируемый Появился в: 1980 …   Википедия

  • D (язык программирования) — У этого термина существуют и другие значения, см. D. D Семантика: мультипарадигменный: императивное, объектно ориентированное, обобщённое программирование Тип исполнения: компилятор Появился в: 1999 Автор(ы) …   Википедия

  • Оберон (язык программирования) — У этого термина существуют и другие значения, см. Оберон. Oberon Класс языка: императивный, структурированный, модульный Появился в: 1986 Автор(ы) …   Википедия

  • Форт (язык программирования) — У этого термина существуют и другие значения, см. Форт (значения). Forth Семантика: императивный Тип исполнения: интерпретатор/компилятор Появился в: 1971 Автор(ы): Чарльз Х. Мур Основные реализации …   Википедия

  • Паскаль (язык программирования) — Эта статья или раздел нуждается в переработке. В Паскале нет модулей, ООП и прочих новомодных веяний. Описание расширений должно присутствовать только в статьях о соответ …   Википедия

  • Scala (язык программирования) — У этого термина существуют и другие значения, см. Scala. Scala Класс языка: Мультипарадигмальный: функ …   Википедия

  • Учебный язык программирования — Учебный язык программирования  язык программирования, предназначенный для обучения. В качестве таковых разрабатывались такие языки как BASIC[1] и Паскаль[2]. Из разработанного для обучения языка ABC вырос Python[3]. Популярным языком,… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»