Скретч (мова програмування)
Скретч (МФА:skræt͡ʃ, англ.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! |
Операційна система | Windows, MacOS, Linux, ChromeOS, Android |
Ліцензія | 3-clause BSD Licensed |
Звичайні розширення файлів |
.sb , .sb2 , .sprite , .sprite2 або .sb3 |
Вебсайт | scratch.mit.edu |
Скретч у Вікісховищі |
Скретч розроблено лабораторією 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[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.0 використано абсолютно нову базу коду на основі JavaScript, що складається з декількох компонентів, таких як «Scratch-GUI», тепер базується на бібліотеці від Blockly[3], «Scratch-VM» для інтерпретації коду[4], і "Scratch -Render " — механізму візуалізації[4]. Блоки команд генеруються за допомогою Blockly[5].
Спільнота користувачів
Скретч використовується в школах[6], музеях[7], бібліотеках[8], дитячих та громадських позашкільних центрах. Хоча основною віковою групою користувачів Скретчу є 8–18 років, Скретч також використовують вчителі та батьки учнів.
Використання в освіті
Скретч набув широкої популярності у Великій Британії та США через мережу Code Clubs, де він використовується як мова для ознайомлення з програмуванням, оскільки у ньому створення цікавих програм порівняно легке, а засвоєні навички можна застосувати до інших мов програмування, таких як Python та Java.
Варто розуміти, що Скретч не використовується лише для створення ігор — за допомогою наданих середовищем засобів програмісти можуть створювати анімацію, виводити текст, генерувати розповіді, музику, тощо. На сьогодні існує велика кількість програм, які можуть бути використані для вивчення тем з математики, історії та навіть фотографії. Скретч дозволяє вчителям створювати уроки і завдання з анімацією, яка допомагає візуалізувати складні концепції, вікторини, ігри та навчальні посібники з інтерактивними елементами.
У вищій школі Скретч використовується в перший тиждень вступного курсу інформатики Гарвардського університету CS50[9][10].
Інтернет-спільнота
Члени спільноти Скретчу мають можливість ділитися своїми проєктами, створювати добірки-студії та отримувати відгуки. Проєкти можна завантажувати безпосередньо з середовища розробки на вебсайт Скретч, причомуі будь-який член спільноти має можливість завантажити код будь-якого проєкту для вивчення або використання в нових проєктах. Учасники також можуть створювати студії проектів, коментувати, тегувати, вподобати та «любити» чужі проекти, слідкувати за іншими членами, щоб побачити їхні проєкти та діяльність і обмінятись ідеями. Проєкти варіюються від ігор і анімації до практичних інструментів.
Команда Scratch Team з MIT працює над тим, щоб ця спільнота підтримувала доброзичливе та шанобливе середовище для всіх учасників.
Педагоги мають власну інтернет-спільноту під назвою ScratchEd, розроблену та підтримувану Гарвардською вищою школою освіти. У цій спільноті викладачі діляться історіями, обмінюються ресурсами та порушують питання[11].
Вікі Скретчу
Вікі Скретчу — це ресурс підтримки Скретчу та його вебсайту, історії та всього, що їх оточує. Хоча ресурс підтримується командою розробників Скретчу, він в першу чергу написаний користувачами для інформації про проєкти та речі, які цікавлять користувачів[12].
Події Скретчу
Викладачі, які використовують Скретч можуть спілкуватися особисто на зустрічах Scratch Educator Meetups, де вони навчаються один у одного та діляться ідеями і стратегіями, що підтримують творче кодування[13].
Щорічний «День Скретчу» проводиться у травні кожного року. Учасникам спільноти рекомендується як проводити заходи з пропаганди програмування та взаємодії між учнями в середовищі Скретчу в цей день, так і брати участь у них. Ці заходи проводяться по всьому світу, їх список можна знайти на вебсайті Дня Скретчу[14].
Історія
Ідея «програмованих блоків» була вперше запропонована Національному Фонду Науки США на початку 2003 року[15] Мітчем Резніком (керівником LifeLong Kindergartner та Scratch Team в MIT Media Lab), Джоном Маєдою з MIT та Ясмін Кафаї з UCLA[16]. Цю пропозицію було прийнято, і їм було надано грант. Перший прототип було створено 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 було створено декілька модифікацій мови[17], таких як:
BYOB (Snap!)
Розроблено в Університеті Берклі. Основним розширенням мови, яке було уведено в BYOB, стала можливість побудови користувацьких блоків — аналога процедур звичайних мов програмування. Підтримуються рекурсія, замикання і лямбда-вирази. Також додано налагоджувач і можливість компіляції у виконувані файли, вкладені спрайти, багатомірні списки, покращена робота зі скролінгом і компіляція виконуваних файлів. Починаючи з версії 3.1 в BYOB додана підтримка об'єктно-орієнтованого програмування — спрайти BYOB тепер дозволяють наслідування на основі прототипів. Для цього введено механізм клонування спрайтів.
Panther
Panther розширює Скретч підтримкою drag-n-drop керування спрайтами, можливістю клонування спрайтів (об'єктів), і підсистемою CYOB (яка, як і BYOB, дозволяє створювати власні командні блоки, але вимагає для цього знання мови Squeak (сучасний діалект Smalltalk, на якому написано Скретч 1.4 і його модифікації).
Механізм Mesh
І BYOB, і Panther включають підтримку механізму mesh[24], що забечує взаємодію скретч-програм через мережу за допомогою роздільних змінних і посилання широкомовних повідомлень.
Slash
Slash доповнює можливості BYOB 3.0 новими можливостями Panther: клонуванням і перетягуванням спрайтів (об'єктів).
StarLogo TNG
В 2008 році в Массачусетському технологічному інституті розроблено навчальну мову програмування StarLogo TNG[25], яка розширює StarLogo можливостями тривимірної графіки і мовою візуального блокового програмування. На відміну від оригінального OpenStarLogo[26] і MIT Scratch — StarLogo TNG не є програмним продуктом з відкритим вихідним кодом.
Скретч 2.0
У лютому 2011 року була випущена перша онлайнова бета-версія Скретч 2.0[27], в який планується включення деяких з можливостей BYOB (таких, як створення призначених для користувача процедур), векторної графіки, клонування спрайтів, можливість групової роботи над проєктами і т. д. Офіційно бета-версія вийшла в реліз 9 травня 2013.
Скретч 3.0
Скретч 3.0 є третьою і поточною основною версією Скретчу. Це повна переробка і повторна реалізація Scratch, написаних на HTML5 і JavaScript. Він має новий, сучасний вигляд і дизайн, а також сумісний з багатьма мобільними пристроями і не вимагає Flash. Випущений 2 січня 2019 року.
App Inventor
Ще одним середовищем програмування, який використовує візуальні блоки команд є App Inventor — експериментальна система візуального програмування для платформи Android.
Більш прямим аналогом мови Скретч на Android є мова Catroid, яка розробляється в Інституті Технологій Програмного Забезпечення Технічного Університету Граца в Австрії[28].
Українська локалізація
Поточна версія містить також і український інтерфейс.
Примітки
- Scratch - Scratch Offline Editor. scratch.mit.edu. Процитовано 5 січня 2020.
- Virtual Machine used to represent, run, and maintain the state of programs for Scratch 3.0: LLK/scratch-vm. Scratch. 2 січня 2020. Процитовано 5 січня 2020.
- Scratch 3.0's new programming blocks, built on Blockly. Google Developers Blog (англ.). Процитовано 5 січня 2020.
- Porting Scratch from Flash to JavaScript: Performance, Interoperability and Extensions - Bocoup. bocoup.com. Процитовано 5 січня 2020.
- Blockly. Google Developers (англ.). Процитовано 5 січня 2020.
- Oliveira, Michael (30 квітня 2014). Canadian schools starting to teach computer coding to kids. CTVNews (англ.). Процитовано 5 січня 2020.
- Bricolage. Science Museum of Minnesota (англ.). Процитовано 5 січня 2020.
- Scratch: Computer Programming for 21st Century Learners.
- 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. Процитовано 5 січня 2020.
- Syllabus. web.archive.org. 17 березня 2015. Процитовано 5 січня 2020.
- Scratch | Educators. web.archive.org. 5 жовтня 2008. Процитовано 5 січня 2020.
- Scratch Wiki - Scratch Wiki. web.archive.org. 12 травня 2019. Процитовано 5 січня 2020.
- Scratch Educator | Meetup Pro — Meetup. web.archive.org. 21 квітня 2019. Процитовано 5 січня 2020.
- May 11, 2019 | Scratch Day. web.archive.org. 7 квітня 2019. Процитовано 5 січня 2020.
- Scratch Papers and Presentations. web.archive.org. 14 серпня 2008. Процитовано 5 січня 2020.
- Principal Investigators: Mitchel Resnick, MIT Media Laboratory; Yasmin Kafai, UCLA; John Maeda, MIT Media Laboratory.
- 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) Архівовано 15 листопада 2010 у Wayback Machine. in Scratch wiki
- Mesh
- StarLogo TNG
- OpenStarLogo. Архів оригіналу за 17 травня 2011. Процитовано 26 квітня 2011.
- Scratch 2.0
- Catroid Website
Посібник користувача
- Посібник Scratch — перелік команд мови візуального програмування Scratch
Посилання
- Сайт Scratch
- Learning Squeak from Scratch
- Scratch Contest Winners http://scratch.mit.edu/users/binocle
- http://scratch.mit.edu/galleries/view/7898 Scratch Gallery
- Scratch for Second Life
- Підбірка проєктів і завдань у Scratch