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

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Scratch)
Перейти до навігації Перейти до пошуку
Скретч
Парадигма подійно-орієнтована, об'єктно-орієнтована, навчальна
Дата появи 2007
Творці Мітчел Резнік
Розробник Мітчел Резнік, John Maloney, Natalie Rusk, Evelyn Eastmond, Tammy Stern, Amon Millner, Jay Silver, and Brian Silverman
Останній реліз 3.0 (2 січня 2019)
Система типізації динамічна
Основні реалізації Scratch
Під впливом від Logo, Smalltalk, HyperCard, StarLogo, AgentSheet, Etoys, Tweak
Вплинула на Blockly, ScratchJr, Snap!
Мова реалізації Squeak, ActionScript і Blockly
Операційна система Windows, MacOS, Linux, ChromeOS, Android
Ліцензія модифікована ліцензія BSDd
Звичайні розширення файлів .sb[1][2], .sb2[3][4], .sb3[5][6], .sprite[7][8], .sprite2[7][9] або .sprite3[7][10]
Вебсайт scratch.mit.edu
CMNS: Скретч у Вікісховищі

Скретч (МФА:skræt͡ʃ, англ.Scratch)— середовище та інтерпретована динамічна візуальна мова програмування, у якій код створюється шляхом маніпулювання графічними блоками. Середовище орієнтовано в першу чергу на дітей та початкове знайомство з основними концепціями та ідеями програмування. Завдяки динамічності, вона дає змогу змінювати код навіть під час виконання. Мова має за мету навчити дітей поняттю програмування і дає можливості створювати ігри, анімації чи музику. Користувачі можуть створювати онлайн-проекти, ними можна обмінюватися всередині міжнародної спільноти, яка існує в мережі Інтернет. Середовище програмування можна безкоштовно завантажити і вільно використовувати у шкільній чи позашкільній освіті.

Скретч розроблено лабораторією MIT Media на традиціях мови Logo та Squeak, перекладено 70 мовами та використовується в більшості країн світу. Скретч застосовується в школах, коледжах та позашкільних навчальних центрах. Станом на 5 січня 2020 року на вебсайті спільноти знаходиться понад 48 мільйонів проектів, які було розроблено 49 мільйонами користувачів. Щомісяця сайт відвідує більше 20 мільйонів користувачів.

Скретч отримав свою назву від техніки «скретчингу», яку використовують диск-жокеї, «міксуючи» музику для отримання різних звукових ефектів, Скретч дозволяє користувачам творчо «змішувати» різні медіа (включаючи графіку, звук та інші програми) під час створення проєктів. Логотип цієї мови програмування — рудий кіт Скретч.

Ідеологія навчання програмуванню у Скретчі[ред. | ред. код]

У середовищі Скретч використовується метафора цеглинок Лего, з яких навіть найменші діти можуть зібрати прості конструкції. Але, розпочавши з малого, можна далі розвивати та розширювати своє уміння будувати і програмувати. Скретч створювався спеціально для того, щоб підлітки 10 — 16 років використовували його самостійно, в мережі позашкільного навчання на базі комп'ютерних клубів, в містах та регіонах з низьким рівнем доходів, як нове технологічне середовище, що дозволяє їм виразити себе в комп'ютерній творчості.

Розробники цього напряму на чолі з Мітчелом Резніком і Аланом Кеєм вважають, що найважливішим у потужних та недорогих сучасних персональних комп'ютерах є те, що вони створюють нове освітнє середовище, у якому учні можуть обговорювати ідеї та користуватися ними зовсім не так, як вони це робили за допомогою підручників. Мета середовища — допомогти дітям навчитися думати краще і глибше, ніж це може робити більшість дорослих.

У Скретч проявляються багато ідей програмування, властиві середовищу Logo та Лего-Logo, які втілені на більш високому технологічному рівні. Користувачі можуть збирати свої програми-процедури з блоків так само, як вони збирали конструкції з цеглинок Лего. З блоків і керуючих структур можуть бути зібрані різні агенти (спрайти), що виконують прості інструкції і можуть взаємодіяти між собою.

Коли користувачі створюють проекти у Скретч, вони опановують навички, які їм знадобляться для успішної самореалізації та майбутнього успіху:

  • творче мислення
  • ясне спілкування
  • системний аналіз
  • використання технологій
  • ефективна взаємодія
  • проектування
  • постійне навчання

У Скретч використовуєть кероване подіями програмування кількох активних графічних об'єктів, які називаються спрайтами. Спрайти можна малювати, використовуючи як векторну, так і растрову графіку, створену в простому редакторі, що є частиною Скретчу, або імпортувану із зовнішніх джерел. Скретч підтримує цілі, дійсні та рядкові типи величин і одновимірні масиви-«списки». Величини типізуються автоматично, відповідно до контексту їх застосування.

Скретч дозволяє взяти будь-який об'єкт-спрайт і здійснити над ним наступні дії:

  • змінити його зовнішній вигляд;
  • перемістити його;
  • керувати переміщенням і зміною вигляду;
  • відтворювати звуки і малювати як олівцем;
  • програмно змінювати властивості об'єкта та середовища.

У результаті виконання простих команд може складатися складна модель, в якій взаємодіятимуть багато об'єктів, наділених різними властивостями. Існує сильний контраст між потужними мультимедійними функціями і багатопотоковим стилем програмування та досить обмеженим обсягом команд мови програмування Скретч.

Початковий рівень програмування такий простий і доступний, що Скретч може слугувати як навчальний засіб не тільки для старших, але і для молодших школярів.

Скретч 3.0[ред. | ред. код]

Інтерфейс середовища програмування[ред. | ред. код]

Інтерфейс Скретчу має три основні секції: область Сцени, палітра блоків та область кодування для розміщення та упорядкування блоків у сценарії, які можна виконати.

На області Сцени представлені результати роботи сценарію (тобто анімація, графіка і т. д.) у невеликому або в звичайному розмірі (також доступна опція на весь екран), а також всі мініатюри спрайтів, перелічені в нижній області. Об'єкти використовуть координати x та y, причому 0,0 є центром сцени.

Для обраного спрайту можуть бути застосовані різні блоки-команди, які перетягують з палітри блоків у область кодування. Вкладка Образи дозволяє користувачам змінювати вигляд спрайту з метою створення різних ефектів, включаючи анімацію. Вкладка Звуки дозволяє додавати звуки та музику до спрайту.

Створюючи спрайт і фони, користувачі можуть малювати власний спрайт вручну, вибирати спрайт з бібліотеки або завантажувати наявне зображення.

У таблиці нижче показані категорії програмних блоків:

Категорія Опис    Категорія Опис
  Рух Рух спрайтів, зміна напряму та позиції      Датчики Взаємодія спрайтів
  Вигляд Керування виглядом спрайтів   Оператори Математичні оператори, порівняння
  Звук Відтворення звуку та звукових файлів   Змінні Використання змінних та списків
  Події Обробка подій   Мої блоки Власні процедури
  Керування Перевірка умов та цикли  

Автономний редактор[ред. | ред. код]

Для роботи поза мережею Інтернет доступний автономний редактор, який офіційно підтримується в Microsoft Windows 10, Apple macOS 10.13[11], ChromeOS та Android — він дозволяє створювати та виконувати програми локально, без підключення до Інтернету. Для автономного редактора відсутня можливість збереження програми на сайті спільноти, їх можна зберегти лише на запам'ятовуючому пристрої комп'ютера (жорсткий диск, пристрій флеш-пам'яті).

Для операційної системи Linux існують неофіційні версії редактора.

Розширення[ред. | ред. код]

Скретч використовує так звані «розширення», які надають додаткові блоки та функції, які можна використовувати в проєктах. У Скретч 2.0 всі розширення розроблялися тільки для підтримки різних пристроїв, у Скретч 3.0 додано розширення для підтримки програмних служб, таких як голосові повідомлення або переклад тексту, а також нові розширення для апаратних засобів, таких як micro: bit.

Апаратні[ред. | ред. код]

  • EV3 — керувати двигунами та отримувати дані датчиків від LEGO EV3
  • Makey Makey — використовуйте Makey Makey для управління проектами
  • LEGO Education WeDo 2.0 — керує двигунами та отримує дані датчиків від LEGO WeDo
  • BBC micro: bit — використання пристрою для керування проєктами
  • Lego BOOST — принести в життя роботизовані творіння
  • Go Direct Force & Acceleration — сенсори натискання, руху та інші.

Програмні[ред. | ред. код]

Багато цифрових розширень в Скретч 3.0 раніше були звичайними категоріями блоків, які були переміщені до розділу розширень. До них належать:

  • Музика — грати на цифрових інструментах (барабани, тромбони, скрипки, фортепіано тощо)
  • Олівець — малювати на сцені з різними товщинами ліній та кольорами.
  • Відеоспостереження — виявлення руху за допомогою камери.

Нові цифрові розширення також додані у співпраці з комерційними компаніями. До них належать:

  • Текст у мову — перетворює слова з тексту в голосові повідомлення (технологія Amazon)
  • Перекласти — використовує Google Translate для перекладу тексту з однієї мови на інші.

Користувачі також можуть створювати власні розширення для Скретч 3.0 за допомогою JavaScript[12].

База коду[ред. | ред. код]

У Скретч 3.0 використано абсолютно нову базу коду на основі JavaScript, що складається з декількох компонентів, таких як «Scratch-GUI», тепер базується на бібліотеці від Blockly[13], «Scratch-VM» для інтерпретації коду[14], і "Scratch -Render " — механізму візуалізації[14]. Блоки команд генеруються за допомогою Blockly[15].

Спільнота користувачів[ред. | ред. код]

Скретч використовується в школах[16], музеях[17], бібліотеках[18], дитячих та громадських позашкільних центрах. Хоча основною віковою групою користувачів Скретчу є 8–18 років, Скретч також використовують вчителі та батьки учнів.

Використання в освіті[ред. | ред. код]

Скретч набув широкої популярності у Великій Британії та США через мережу Code Clubs, де він використовується як мова для ознайомлення з програмуванням, оскільки у ньому створення цікавих програм порівняно легке, а засвоєні навички можна застосувати до інших мов програмування, таких як Python та Java.

Варто розуміти, що Скретч не використовується лише для створення ігор — за допомогою наданих середовищем засобів програмісти можуть створювати анімацію, виводити текст, генерувати розповіді, музику, тощо. На сьогодні існує велика кількість програм, які можуть бути використані для вивчення тем з математики, історії та навіть фотографії. Скретч дозволяє вчителям створювати уроки і завдання з анімацією, яка допомагає візуалізувати складні концепції, вікторини, ігри та навчальні посібники з інтерактивними елементами.

У вищій школі Скретч використовується в перший тиждень вступного курсу інформатики Гарвардського університету CS50[19][20].

Інтернет-спільнота[ред. | ред. код]

Члени спільноти Скретчу мають можливість ділитися своїми проєктами, створювати добірки-студії та отримувати відгуки. Проєкти можна завантажувати безпосередньо з середовища розробки на вебсайт Скретч, причомуі будь-який член спільноти має можливість завантажити код будь-якого проєкту для вивчення або використання в нових проєктах. Учасники також можуть створювати студії проектів, коментувати, тегувати, вподобати та «любити» чужі проекти, слідкувати за іншими членами, щоб побачити їхні проєкти та діяльність і обмінятись ідеями. Проєкти варіюються від ігор і анімації до практичних інструментів.

Команда Scratch Team з MIT працює над тим, щоб ця спільнота підтримувала доброзичливе та шанобливе середовище для всіх учасників.

Педагоги мають власну інтернет-спільноту під назвою ScratchEd, розроблену та підтримувану Гарвардською вищою школою освіти. У цій спільноті викладачі діляться історіями, обмінюються ресурсами та порушують питання[21].

Вікі Скретчу[ред. | ред. код]

Вікі Скретчу — це ресурс підтримки Скретчу та його вебсайту, історії та всього, що їх оточує. Хоча ресурс підтримується командою розробників Скретчу, він в першу чергу написаний користувачами для інформації про проєкти та речі, які цікавлять користувачів[22].

Події Скретчу[ред. | ред. код]

Викладачі, які використовують Скретч можуть спілкуватися особисто на зустрічах Scratch Educator Meetups, де вони навчаються один у одного та діляться ідеями і стратегіями, що підтримують творче кодування[23].

Щорічний «День Скретчу» проводиться у травні кожного року. Учасникам спільноти рекомендується як проводити заходи з пропаганди програмування та взаємодії між учнями в середовищі Скретчу в цей день, так і брати участь у них. Ці заходи проводяться по всьому світу, їх список можна знайти на вебсайті Дня Скретчу[24].

Історія[ред. | ред. код]

Вигляд інтерфейсу перших версій Скретчу

Ідея «програмованих блоків» була вперше запропонована Національному Фонду Науки США на початку 2003 року[25] Мітчем Резніком (керівником LifeLong Kindergartner та Scratch Team в MIT Media Lab), Джоном Маєдою з MIT та Ясмін Кафаї з UCLA[26]. Цю пропозицію було прийнято, і їм було надано грант. Перший прототип було створено 2003 року групою LifeLong Kindergartner в лабораторії MIT під керівництвом Мітчела Резніка у партнерстві з компанією Playful Invention, співавторами від якої були Брайан Сільверман і Паула Бонта. Скретч було створено з наміром навчити дітей кодувати, заохочуючи обмін, повторне використання та поєднання коду, на що вказує гасло «Уяви, програмуй, поділись». Користувачі можуть робити або власні проекти, або вони можуть «реміксувати» чужий проект. Проекти, створені або реміксовані за допомогою Скретч, ліцензуються за ліцензією Creative Commons Attribution-Share Alike.

Другий прототип — 2005 року.

Перший публічний реліз — 8 січня 2007 року, середовище використовувало віртуальну машину Squeak.


9 травня 2013 року було представлено Скретч 2.0, який працював на основі технології Adobe Flash. Оновлення змінило вигляд сайту і включало в себе онлайновий редактор проєктів і автономний редактор для роботи без Інтернету. З'явилась можливість створювати власні блоки в межах проєктів, а також ряд інших удосконалень.

2 січня 2019 року з'явився Скретч 3.0, який працює на JavaScript.

Модифікація і подальший розвиток[ред. | ред. код]

На основі вихідного коду Scratch 1.4 було створено декілька модифікацій мови[27], таких як:

BYOB (Snap!)[ред. | ред. код]

Розроблено в Університеті Берклі. Основним розширенням мови, яке було уведено в BYOB, стала можливість побудови користувацьких блоків — аналога процедур звичайних мов програмування. Підтримуються рекурсія, замикання і лямбда-вирази. Також додано налагоджувач і можливість компіляції у виконувані файли, вкладені спрайти, багатомірні списки, покращена робота зі скролінгом і компіляція виконуваних файлів. Починаючи з версії 3.1 в BYOB додана підтримка об'єктно-орієнтованого програмування — спрайти BYOB тепер дозволяють наслідування на основі прототипів. Для цього введено механізм клонування спрайтів.

Panther[ред. | ред. код]

Panther розширює Скретч підтримкою drag-n-drop керування спрайтами, можливістю клонування спрайтів (об'єктів), і підсистемою CYOB (яка, як і BYOB, дозволяє створювати власні командні блоки, але вимагає для цього знання мови Squeak (сучасний діалект Smalltalk, на якому написано Скретч 1.4 і його модифікації).

Механізм Mesh[ред. | ред. код]

І BYOB, і Panther включають підтримку механізму mesh[34], що забечує взаємодію скретч-програм через мережу за допомогою роздільних змінних і посилання широкомовних повідомлень.

Slash[ред. | ред. код]

Slash доповнює можливості BYOB 3.0 новими можливостями Panther: клонуванням і перетягуванням спрайтів (об'єктів).

StarLogo TNG[ред. | ред. код]

В 2008 році в Массачусетському технологічному інституті розроблено навчальну мову програмування StarLogo TNG[35], яка розширює StarLogo можливостями тривимірної графіки і мовою візуального блокового програмування. На відміну від оригінального OpenStarLogo[36] і MIT Scratch — StarLogo TNG не є програмним продуктом з відкритим вихідним кодом.

Скретч 1.0[ред. | ред. код]

Scratch 1.0 був випущений 15 травня 2007 року. Дана версія Скретч була однією із найперших, але навіть така рання версія дала майбутнє її наступникам.

Скретч 2.0[ред. | ред. код]

У лютому 2011 року була випущена перша онлайнова бета-версія Скретч 2.0[37], в який планується включення деяких з можливостей BYOB (таких, як створення призначених для користувача процедур), векторної графіки, клонування спрайтів, можливість групової роботи над проєктами і т. д. Офіційно бета-версія вийшла в реліз 9 травня 2013.

Скретч 3.0[ред. | ред. код]

Скретч 3.0 є третьою і поточною основною версією Скретчу. Це повна переробка і повторна реалізація Scratch, написаних на HTML5 і JavaScript. Він має новий, сучасний вигляд і дизайн, а також сумісний з багатьма мобільними пристроями і не вимагає Flash. Випущений 2 січня 2019 року.

App Inventor[ред. | ред. код]

Докладніше: App Inventor

Ще одним середовищем програмування, який використовує візуальні блоки команд є App Inventor — експериментальна система візуального програмування для платформи Android.

Більш прямим аналогом мови Скретч на Android є мова Catroid, яка розробляється в Інституті Технологій Програмного Забезпечення Технічного Університету Граца в Австрії[38].

Українська локалізація[ред. | ред. код]

Поточна версія містить також і український інтерфейс.

Примітки[ред. | ред. код]

  1. https://fr.scratch-wiki.info/wiki/Extension_de_fichier_.sb
  2. https://en.scratch-wiki.info/wiki/Scratch_File_Format_(1.4)/Project_File
  3. https://fr.scratch-wiki.info/wiki/Extension_de_fichier_.sb2
  4. https://en.scratch-wiki.info/wiki/Scratch_File_Format_(2.0)
  5. https://fr.scratch-wiki.info/wiki/Extension_de_fichier_.sb3
  6. https://en.scratch-wiki.info/wiki/Scratch_File_Format
  7. а б в https://fr.scratch-wiki.info/wiki/Sprite
  8. https://en.scratch-wiki.info/wiki/Scratch_File_Format_(1.4)/Sprite_File
  9. https://en.scratch-wiki.info/wiki/Scratch_File_Format_(2.0)#Sprite_Files
  10. https://en.scratch-wiki.info/wiki/Scratch_File_Format#Sprite_Files
  11. Scratch - Scratch Offline Editor. scratch.mit.edu. Архів оригіналу за 22 лютого 2011. Процитовано 5 січня 2020. 
  12. Virtual Machine used to represent, run, and maintain the state of programs for Scratch 3.0: LLK/scratch-vm. Scratch. 2 січня 2020. Архів оригіналу за 18 березня 2020. Процитовано 5 січня 2020. 
  13. Scratch 3.0's new programming blocks, built on Blockly. Google Developers Blog (англ.). Архів оригіналу за 2 жовтня 2019. Процитовано 5 січня 2020. 
  14. а б Porting Scratch from Flash to JavaScript: Performance, Interoperability and Extensions - Bocoup. bocoup.com. Архів оригіналу за 17 травня 2019. Процитовано 5 січня 2020. 
  15. Blockly. Google Developers (англ.). Процитовано 5 січня 2020. 
  16. Oliveira, Michael (30 квітня 2014). Canadian schools starting to teach computer coding to kids. CTVNews (англ.). Архів оригіналу за 18 травня 2019. Процитовано 5 січня 2020. 
  17. Bricolage. Science Museum of Minnesota (англ.). Архів оригіналу за 7 серпня 2020. Процитовано 5 січня 2020. 
  18. Scratch: Computer Programming for 21st Century Learners. Архів оригіналу за 3 жовтня 2020. 
  19. Young, Jeffrey R. (20 липня 2007). Fun, Not Fear, Is at the Heart of Scratch, a New Programming Language. The Chronicle of Higher Education (амер.). ISSN 0009-5982. Архів оригіналу за 19 жовтня 2019. Процитовано 5 січня 2020. 
  20. Syllabus. web.archive.org. 17 березня 2015. Архів оригіналу за 17 березня 2015. Процитовано 5 січня 2020. 
  21. Scratch | Educators. web.archive.org. 5 жовтня 2008. Архів оригіналу за 5 жовтня 2008. Процитовано 5 січня 2020. 
  22. Scratch Wiki - Scratch Wiki. web.archive.org. 12 травня 2019. Архів оригіналу за 12 травня 2019. Процитовано 5 січня 2020. 
  23. Scratch Educator | Meetup Pro — Meetup. web.archive.org. 21 квітня 2019. Архів оригіналу за 21 квітня 2019. Процитовано 5 січня 2020. 
  24. May 11, 2019 | Scratch Day. web.archive.org. 7 квітня 2019. Архів оригіналу за 7 квітня 2019. Процитовано 5 січня 2020. 
  25. Scratch Papers and Presentations. web.archive.org. 14 серпня 2008. Архів оригіналу за 14 серпня 2008. Процитовано 5 січня 2020. 
  26. Principal Investigators: Mitchel Resnick, MIT Media Laboratory; Yasmin Kafai, UCLA; John Maeda, MIT Media Laboratory. Архів оригіналу за 27 липня 2019. 
  27. Scratch Modifications. Архів оригіналу за 12 березня 2016. Процитовано 14 листопада 2019. 
  28. Build Your Own Blocks (BYOB) [Архівовано 23 серпня 2010 у Wayback Machine.] home page
  29. Build Your Own Blocks (BYOB) (Scratch Modification) [Архівовано 3 квітня 2016 у Wayback Machine.] in Scratch wiki
  30. Panther — based on Scratch [Архівовано 19 квітня 2021 у Wayback Machine.] home page
  31. Panther (Scratch Modification) [Архівовано 30 березня 2016 у Wayback Machine.] in Scratch wiki
  32. Slash Project. Архів оригіналу за 11 серпня 2019. Процитовано 14 листопада 2019. 
  33. Slash (Scratch Modification) [Архівовано 15 листопада 2010 у Wayback Machine.] in Scratch wiki
  34. Mesh. Архів оригіналу за 4 квітня 2016. Процитовано 14 листопада 2019. 
  35. StarLogo TNG. Архів оригіналу за 19 квітня 2015. Процитовано 14 листопада 2019. 
  36. OpenStarLogo. Архів оригіналу за 17 травня 2011. Процитовано 26 квітня 2011. 
  37. Scratch 2.0. Архів оригіналу за 16 серпня 2016. Процитовано 14 листопада 2019. 
  38. Catroid Website. Архів оригіналу за 14 лютого 2022. Процитовано 28 березня 2022. 

Посібник користувача[ред. | ред. код]

  • Посібник Scratch — перелік команд мови візуального програмування Scratch

Посилання[ред. | ред. код]