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

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

Скретч
Scratchlogo.svg
Парадигма:подійно-орієнтована, об'єктно-орієнтована, навчальна
Дата появи: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!
ОС:Windows, MacOS, Linux, ChromeOS, Android
Сторінка інтернет:scratch.mit.edu

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

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

Ідеологія навчання програмуванню у СкретчіРедагувати

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

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

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

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

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

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

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

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

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

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

Скретч 3Редагувати

 
Інтерфейс середовища програмування Скретч 3.0

Інтерфейс середовища програмуванняРедагувати

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

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

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

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

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

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

Автономний редакторРедагувати

Для роботи поза мережею Інтернет доступний автономний редактор, який офіційно підтримується в Microsoft Windows 10, Apple macOS 10.13[1], 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[2].

База кодуРедагувати

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

Спільнота користувачівРедагувати

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

Використання в освітіРедагувати

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

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

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

Інтернет-спільнотаРедагувати

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

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

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

Вікі СкретчуРедагувати

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

Події СкретчуРедагувати

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

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

ІсторіяРедагувати

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

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

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

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

 
Скретч 1.4
 
Скретч 2.0

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

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

Модифікація і подальший розвитокРедагувати

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

BYOB (Snap!)Редагувати

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

PantherРедагувати

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

Механізм MeshРедагувати

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

SlashРедагувати

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

StarLogo TNGРедагувати

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

Скретч 2.0Редагувати

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

Скретч 3.0Редагувати

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

App InventorРедагувати

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

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

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

Українська локалізаціяРедагувати

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

ПриміткиРедагувати

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

Посібник користувачаРедагувати

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

ПосиланняРедагувати