Scratch — это уже не игрушки.
Скорее всего, вы знаете, что Scratch — это язык программирования для детей, в котором используются визуальные блоки:
Как и многие родители в пандемию, я недавно познакомил с ним моих детей. Он постепенно начал их захватывать, и я осознал, что под его поверхностью скрывается нечто большее. Я решил присмотреться, и вот что обнаружил.
Не просто язык программирования
Scratch — это онлайн-среда программирования, расположенная на scratch.mit.edu. В ней используется визуальный редактор, который выглядит вот так:
Язык и редактор нацелены на создание игр, анимаций, историй и других визуальных произведений. Пользователи Scratch (скрэтчеры) могут создавать и сохранять проекты в своём аккаунте, а также публично делиться ими.
Именно благодаря публикации проектов всё становится интереснее. Scratch — это не просто язык, это сообщество.
Веб-сайт Scratch позволяют с лёгкостью просматривать проекты чужие проекты, «лайкать» и добавлять их в избранное, писать комментарии, просматривать исходники и переделывать их на свой вкус. Можно подписываться на других пользователей и совместно работать над курированием коллекций проектов, называемых «студиями» (на которые тоже можно подписываться и оставлять комментарии).
В этом смысле он похож на Github или Codepen, только Scratch предназначен для детей. Пик распределения возрастов новых скрэтчеров приходится на 12 лет, а большинству меньше 16 лет:
Именно функции сообщества по-настоящему увлекли моих детей. Они очень радовались, когда кто-то подписывался на них или «лайкал» один из их проектов. Это давало им мотивацию создавать более амбициозные вещи.
Амбициозность проектов иногда сильно впечатляет. Скрэтчеры часто создают копии «реальных» игр наподобие Cut the Rope, Super Mario Bros и Terraria. Функции наподобие облачных переменных позволяют им создавать многопользовательские онлайн-игры типа Taco Burp (очень популярной в моём доме):
Я, мастерски выносящий девятилеток
Кто-то даже построил Scratch внутри Scratch!
Это был только вопрос времени
Нахождение подобных проектов стало для меня потрясением. Скрэтчеры создавали проекты, способные конкурировать с лучшими примерами, которые я видел на Codepen. И всё это на визуальном языке программирования для детей!
Кроме редактора есть и другие ресурсы, помогающие детям быть продуктивными:
- На веб-сайте Scratch есть туториалы, wiki и форумы, которыми часто пользуются дети, чтобы задавать вопросы и помогать друг другу.
- Интерфейсы REST API позволяют использовать сторонний инструментарий наподобие Turbowarp — параллельного сайта, позволяющего выполнять проекты Scratch в двадцать раз быстрее.
- Десктопное приложение Scratch позволяет разрабатывать проекты на Scratch офлайн.
- Планшетное приложение ScratchJr представляет собой упрощённую версию редактора Scratch для маленьких детей (5-7 лет).
Так что нет, Scratch — это не просто язык программирования. Это экосистема приложений, ресурсов и функций работы с сообществом, дающая детям первый положительный опыт программирования. И это крайне впечатляет.
Масштабы Scratch
Как и у многих других онлайн-занятий, популярность Scratch за время пандемии выросла, однако, в отличие от остальных, её рост не замедляется:
Обратите внимание, что заметен циклический паттерн использования, совпадающий со школьным учебным годом. Его пик приходится на весну, а снижение — на лето, что даёт нам представление о том, в какой степени работа со Scratch связана с его применением в школах.
Благодаря этому недавнему росту Scratch ворвался в двадцатку самых популярных языков программирования индекса Tiobe. На момент написания поста (июль 2022 года) он находится на 21-м месте, обгоняя Typescript, Rust, Julia и другие важные языки. Индекс Tiobe несовершенен, однако тенденции очевидны.
Из-за новообретённой популярности языка такие скрэтчеры, как Griffpatch, Will_Wam и другие стали мини-знаменитостями, собирающими сотни тысяч подписчиков на scratch.mit.edu и других платформах (Griffpatch имеет более 175 тысяч подписчиков на Youtube, где он публикует туториалы Scratch по таким аспектам разработки игр, как скроллинг фона и рейкастинг).
Другую статистику можно посмотреть на странице статистики сообщества и в ежегодном отчёте Scratch. По любым возможным метрикам Scratch испытывает бум популярности (по всему миру!) и не думает останавливаться.
Почему так получилось
Для этого у Scratch есть множество хороших свойств.
Он бесплатен (благодаря Scratch Foundation), а туториалы позволяют постепенно знакомиться с языком, что упрощает его использование в школе и дома.
У платформы есть чёткие правила сообщества, и она хорошо модерируется (по крайней мере, моя семья пока не столкнулась ни с чем подозрительным).
И самое важное: просмотр чужих проектов показывает, что это возможно. Ребёнок начинает с того, что играет, потом ему становится любопытно, и вот он уже изменяет код, чтобы добавить себе жизней.
Всё это появилось не само собой. Это стало реализацией более пятидесяти лет работы программистов и педагогов, стоявших на плечах таких великанов, как Logo и LEGO Mindstorms. Если вам стало любопытно, прочитайте про теорию конструкционизма!
Если вам важно обучение программированию и вы ищете проект, которому можно помочь материально, то вряд ли найдёте что-то лучше.
А если вы знаете детей, заинтересованных в программировании, то расскажите им о Scratch. Пусть они какое-то время поиграют в созданные другими пользователями игры, исходный код которых находится на расстоянии всего одного клика.
Комментарии (64)
ciuafm
28.12.2022 23:44+3Побаиваюсь что к тому времени как эти дети выйдут на работу интерфейс продуктового программиста будет выглядеть примерно как скретч :-(
Alexey_Volchanskiy
29.12.2022 09:50-1А все началось с богомерзкого Питончика )). Еще остались люди, которые могут работать с указателями на плюсах?
IvanPetrof
29.12.2022 11:38+3Вот никак не могу понять - чего такого страшного в указателях, что ими всех так пугают? Массивов же никто не боится? Чем адресация по памяти концептуально отличается от адресации массива?
wataru
29.12.2022 12:47+1Дело не в адресации, а во времени жизни. Надо же следить за валидностью указателя, выделять/удалять память в нужных местах и в нужное время. Это не то, чтобы когнитивно сложно, просто напряжно немного. Лишняя деталь, за которой надо следить. А уж если еще и многопоточность включается в игру, то тут вообще весело становится.
domix32
29.12.2022 12:50+4Указатель на куче
Указатель на стеке
Указатель на переменную
Указатель на инстанс класса
Указатель на функцию
Указатель на таблицу виртуальных методов
Указатель this
Пустой указатель (void *)
Нулевой указатель (nullptr / NULL)
Указатель на метод класса
Указатель на член класса
Указатель на наследника/родителя класса
Указатель на указатель (...N-1 раз) на указатель массива (в миру - указатель на элемент N-мерного массива)
Почти все те же пункты для ссылок, которые тоже указатели, только без nullptr_t/ NULL.
Ну, да, ничего страшного, всего-то дцать пунктов не считая операторов, семантики разыменования и кастов.
IvanPetrof
29.12.2022 14:08+1Ааа. Вы про это. Может у меня просто профдеформация от того что я на этом всём "вырос" (от бейсика через паскаль и асм в c++), что просто не думал никогда, что для остальных организация программной памяти может быть чем-то необычным.
domix32
29.12.2022 14:54Учитывая, что часто про такое очень скудно рассказывают в учебных заведениях допускаю, что многие познавали подобные вещи эмпирически. Некоторые начинали с C#/Java/JS и там всё это спрятано за абстракциями и в явном виде присутствует, где-нибудь в документации в виде загадочного "передается по ссылке/по значению". А приходя в языки с указателями чуствуют себя не в своей тарелке как от синтаксиса всего это дела (привет спирали), так и от, собственно , пунктов выше. А если оно в шаблоны намешивается... Недаром стандарты занимают по несколько тысяч страниц.
Alexey_Volchanskiy
30.12.2022 19:04Что сейчас рассказывают в ВУЗах, я не в курсе, давно отучился и по программированию чисто самоучка. Но я давно придумал поговорку про плюсы и указатели:«Си и С++ как проститутка, сделает все, что ты захочешь. Но безопасность секса полностью на тебе. А другие языки, как надежная жена, ничего не подцепишь, зато и удовольствия ноль ))».
Я сейчас зарабатываю на трейдинге, то есть бацаю на MQL4/5. Там тоже нет указателей, хотя язык очень близок к плюсам, разрабы постарались не выдумывать новых сущностей. Там вместо указателей, как и в шарпе, дескрипторы. То есть моя любимая арифметика указателей не работает. Ну и что? Это не мешает писать торговых роботов, а если приспичило поизвращаться, всегда к услугам VS C++ с созданием DLL. Но указатели я люблю, приятно понимать, как работает код. А еще забавнее разбирать ASM, сгенеренный VS C++, да еще в режиме полной оптимизации. Чувствуешь себя дауном ))
rezedent12
29.12.2022 12:49Ну так данные приятно хранить в "коробочках".
Alexey_Volchanskiy
30.12.2022 19:14Я расскажу Вам одну историю. Примерно в середине 2010-х обучал народ программированию для форекс, языки MQL4/5, это очень близко к С++. И когда проходили массивы, мне один парень сказал:«C одномерными массивами все понятно, это вектор. С двухмерными тоже, это матрица. Трехмерные это куб. Но с четырехмерными я не могу себе представить». То есть чел не мог мыслить абстрактно. И я придумал аналогию именно с коробочками. Есть коробочка, это четырехмерный массив, в нем лежат трехмерные массивчики и так далее. И тут парня пробило:«Теперь я все себе представил!»/ Наверное, детям тоже важно представить все в голове.
Wesha
29.12.2022 06:36+1Scratch — это язык программирования для детей,
domix32
29.12.2022 12:52Суровые польские детишки
Wesha
29.12.2022 13:01На самом деле я игрался, весьма интересно этих роботов программировать в условиях, приближённых к боевым.
domix32
29.12.2022 13:20Просто это как бы маленько отличается от перетягивания блоков в Scratch. Нас помнится тоже хотели когда-то бейсику научить и книжку читал даже по нему детскую, где был генерал $Inkeys и ещё какие-то персонажи - GOTO/GOSUB и прочие.
wataru
29.12.2022 15:00Просто это как бы маленько отличается от перетягивания блоков в Scratch.
Вся разница в том что, вместо перетягивания блоков, идет печатанье на клавиатуре. Почему-то, начинающим и детям приятнее складывать слова мышкой, а не печатать на клавиатуре. Хотя печатать и быстрее и читать потом такой код легче.
Может, потому что есть меню с набором блоков и не надо вспоминать, а что же тут надо напечатать, а можно, как в вопросе с вариантами ответов, выбирать из имеющегося.
mayorovp
29.12.2022 15:34Почему-то, начинающим и детям приятнее складывать слова мышкой, а не печатать на клавиатуре. Хотя печатать и быстрее и читать потом такой код легче.
Начинающим как раз печатать очень медленно! Возможно, вы уже забыли, но я вот помню как просматривал последовательно в среднем 14 клавиш, и так для написания каждой буквы. Да, чтобы написать begin в том же Паскале мне приходилось смотреть около 80 клавиш. Разумеется, тут работа мышкой выглядит намного эффективнее.
wataru
29.12.2022 15:58Ну неужели все приемущество этих no-code подходов — это помощь очень медленно печатающим людям? При перетягивании мышкой тоже же куча времени уходит на поиск нужного блока и перетягивание его. Со временем человек выучивает расположение блоков. Ну так и с клавиатурой люди учатся печатать быстрее.
Тут что-то еще должно быть. Ведь неспроста новости о no-code визуальных инструметах программирования обычно соседствуют с мыслями вроде "программистов заменят кухарки". Чем-то еще оно должно казаться любям проще.
domix32
29.12.2022 16:25+2Блоки показывают скоуп и избавляют от ошибок типа
if (blabla) doThis(); andThis();// oops for (auto i = 0; i < getSomeSize(); ++i) applySomething(item[i]); applySomething2(item[i]); // ERROR: what is i?
Туда же добавляются крутилки всякими диапазонами, цветами, геолокацией и прочим. Тут же рядом рисует какую-нибудь превью с результатом текущего шага (если мы конечно говорим в общем за no code, а не только Scratch). Всё это понижает количество ошибок, совершаемых людьми в момент обучения программированию и ускоряет цепочку удовольствия, что позволяет затягивать в программирование дальше. В некоторых ситуациях такие блоки скрывают немало головной боли при использовании не самых тривиальных вещей - помнится где-то в сети был конструктор Android-приложений, который избавлял от головной боли с созданием и переключением вьюх - просто жмешь плюсик -вот тебе фрагмент, бахаешь какой-нибудь запрос и тут же его разбиваешь на виджеты на экране и заверте... Многие рутинные вещи уходят, оставляя с живым результатом, который можно пощупать, почти не отходя от кассы. Конкурентность таких приложений конечно под вопросом, но для новичка в программировании - немалый бонус к морали.
wataru
29.12.2022 16:35Спасибо. Ваша мысль об избавлении от мелких проблем и ускорении цепочки удовольствия от сразу же видимого результата, скорее всего и есть то, что я никак не мог понять. Если так подумать, то даже ускорение печатания для начинающих — само по себе весомый плюс для начинающих учеников.
mayorovp
29.12.2022 17:37Ну, scratch всё же про визуальное программирование, а не no-code.
wataru
29.12.2022 18:04А где разница между ними проходит?
Format-X22
29.12.2022 18:21+1Визуальное от текстового легко отличить, а no-code - это больше про аппликацию и конфиги, но сильно разбавленное маркетингом и под no-code и low-code могут много чего подтащить и продать. То есть они по цели отличаются - визуальное программирование про делать что-то визуально, no-code про делать что-то минимально и быстро.
serafims
29.12.2022 12:38+2Для детей язык - Pascal, PascalABC. Выстрелить себе в ногу сложнее.
А скрэтч ещё можно встраивать в свои продукты. Например, есть роботы-конструкторы Skribot, так вот они программируются в том числе и скретчем, что как простой первый этап вхождения весьма может быть неплохо. А далее уже Си, Пайтон и тп.
domix32
29.12.2022 13:21Да мне кажется уже есть какие-нибудь умельцы которые экспортируют это в какой-нибудь диалект лиспа и потом компилируют в нативные бинари.
ermouth
29.12.2022 14:36Не надо Паскаль. Я употел племяннику объяснять, почему в Паскале возврат значения из функции сделан марсианами.
mayorovp
29.12.2022 15:38А что не так с переменной Result?
Для небольших функций оно, может, и выглядит избыточно — но вот в реальном коде я переменную вроде result вижу довольно часто, так что использование переменной не сильно-то проигрывает прямому возврату значения.
ermouth
29.12.2022 15:42+1Это мы с вами понимаем. А подростку объяснить почему им преподают ни на что не похожее нечто – ну так.
Ну и return всё же немедленно возвращает управление, а присваивание – нет.
nik_vr
29.12.2022 13:05Ещё есть на Scratch можно кодить для Arduino, емним. А это уже выход на железо :)
tormozedison
29.12.2022 14:07-1Ещё раз.
Пока в Scratch яркие цвета, мультяшкоподобные персонажи и пляшущий логотип - закомплексованные дети будут шарахаться от этого с криком "ты меня чё, за ребёнка держишь?". Если ваш ребёнок из таких, хотя бы ч/б режим включите, в Android и iOS это делается штатными средствами. Хоть один из трёх раздражающих факторов исчезнет.
К Wokwi аналогичные претензии, там мультяшки, правда, не водятся, но яркие цвета и пляшущий логотип в наличии.
Советская учебная среда программирования с "кенгурёнком" и "пылесосиком" внешне впечатление слишком "детской" не производит, но закомплексованные дети могут придраться к словам, поэтому лучше было бы назвать исполнителей "кенгуру" и "пылесосом".
Скольких талантливых, но закомплексованных детей это отпугнуло от перечисленных хороших, в общем-то, инструментов, подсчёту не поддаётся.
Kanut
29.12.2022 15:10+2Просто начинать общение со Scratch надо не в 15 лет, а в 6 :)
tormozedison
29.12.2022 16:13+1В 6 закомплексованность на почве "я не ребёнок!" бывает ещё больше, а в 15 она как раз отходить начинает.
Kanut
29.12.2022 16:21Лично я пока ещё не встречал дошкольников , которых бы почему-то не устраивала "мультяшность" :)
tormozedison
29.12.2022 16:31Значит, просто не попадались пока.
Kanut
29.12.2022 16:33Если они даже и есть, но при этом их относительно мало, то неудивительно что на них не особо ориентируются.
tormozedison
29.12.2022 16:38+1На самом деле, достаточно распространённый комплекс. Неужели никогда не слышали, как чей-нибудь ребёнок орёт что-нибудь вроде "у меня не ручки, а руки", например?
Kanut
29.12.2022 18:09Неужели никогда не слышали, как чей-нибудь ребёнок орёт что-нибудь вроде "у меня не ручки, а руки", например?
Это я вполне себе слышал. Но это не мешало тому же самому ребёнку через минуту играть с каким-то "мультяшными" игрушками.
А уж если дошкольнику дать какую-то компьютерную игру, то тогда ему по моему вообще наплевать как там персонажи выглядят. Главное что поиграть дали :)
tormozedison
29.12.2022 19:35А если на выбор предложить две игрушки? Сюжет одинаковый, транспортные средства, например. Но одна игрушка изображает таковое в мультяшном стиле, другая - масштабная модель реального чего-нибудь с типичным для семидесятых минимализмом. Выбрать можно что-нибудь одно. Вас удивит, что выберет довольно большой процент дошкольников.
Ну или две игры с одинаковым сюжетом. Клоны понга, скажем. Но в одном плюшевые зайчики, виляющие пушистыми хвостиками, играют в него характерным полосатым мячиком как у "нашей Тани" на фоне воздушных шариков, в другом - как в классическом понге, сплошной фон, две полосы, квадрат и цифры из одних прямых линий.
Или вообще одну игру, но можно чтобы было можно выбрать один из двух смартфонов, на одном из которых в настройках включён ч/б режим.
Kanut
29.12.2022 19:51А если на выбор предложить две игрушки?
То я бы сказал что дошкольники выберут скорее мультяшный вариант.
А уж если вы хотите им что-то обучающее "продать", то боюсь что многие дети с чем-то "реалистичным" просто связываться не захотят.
tormozedison
29.12.2022 21:05Ну почему же, с настоящим тренажёром управления метропоездом на "Выставочной" дети очень охотно связываются. А туда от 6 лет пускают.
А эксперименты по предоставлению детям подобного выбора родители нечасто проводят. Обычно рассуждают: "подарю ему игрушку поярче, она больше ему настроение поднимет". Как будто себя в детстве не помнят и своих "я большой"-комплексов.
Kanut
29.12.2022 21:10+1Ок. Если вашему ребёнку Scratch не подходит и нужно что-то "реалистичное, то дайте ему любой обычный ЯП. Благо их вагон и маленькая тележка.
По моему опыту куче детей лучше заходит именно что-то "детское" и" мультяшное". И для этого есть Scratch.
tormozedison
29.12.2022 21:53А им выбор предлагают, или без вариантов говорят: "вот тебе вот это"? В своё время довольно большому количеству детей предложили так же без вариантов "Электронику ИМ-11", которая выглядит не мультяшно от слова "совсем". И им зашло. С "Детской логической машиной" аналогично.
А из современного - Arduboy, например. Его что, в т.ч. детям не дают? Конечно, дают. И им заходит, несмотря на 1 бит на пиксель. И micro:bit заходит.
Ну и проследить за детьми, программирующими на Scrarch, интересно, если выборка достаточно большая. Какие спрайты чаще выбирают, яркие или сдержанные? Пляшущие или спокойные? Какие фоны?
Kanut
29.12.2022 22:19+1А им выбор предлагают, или без вариантов говорят: "вот тебе вот это"?
Нет. Долгое время им выбора не предлагали. А потом появился Scratch и ему подобные вещи.
А из современного - Arduboy, например. Его что, в т.ч. детям не дают? Конечно, дают. И им заходит, несмотря на 1 бит на пиксель. И micro:bit заходит
Ну так здорово. Но Scratch ведь тоже заходит. Почему вы хотите чтобы его не было?
tormozedison
29.12.2022 22:40Я не хочу, чтобы его не было, к языку и синтаксису претензий никаких, я хочу, чтобы там сделали выбор шкур с различными уровнями сдержанности, всего лишь.
Kanut
29.12.2022 22:45Ну предложите. А ещё лучше оплатите. Или даже сами и сделайте. Наверняка же найдётся куча желающих в этом помочь. Ну если это действительно востребованная фича.
tormozedison
29.12.2022 23:25О востребованности такого подхода говорит сам факт существования MakeCode, он тоже ориентирован на детей, но выглядит (с некоторым натягом) не как игрушка, а как инструмент. И вполне востребован при этом.
А с переделкой Scratch, оказывается, не только опередили, но и перестарались.
Kanut
29.12.2022 23:29О востребованности такого подхода говорит сам факт
Вы по моему до сих пор не понимаете о чём я.
Яблоки очень востребованы. Их с удовольствием ест куча людей. Их продают тоннами.
Но это не значит что бананы не могут быть востребованны. И что их не будет никто покупать.
И самое главное это совсем не означает что бананы со вкусом яблок тоже будут востребованны...
tormozedison
29.12.2022 23:39-1Да тут, как видим, кто-то бананы со вкусом горчицы изобрёл. И не исключено, что пользуется этим не один.
Wesha
29.12.2022 21:37ребёнок орёт что-нибудь вроде "у меня не ручки, а руки"
Опытная мама может парировать — "ну я же беру тебя на ручки, хоть и взрослая!"
tormozedison
29.12.2022 21:54Можно-то можно, но не проще ли не употреблять такие слова при том, кому они не нравятся?
Wesha
29.12.2022 22:31Как мне кажется, приобретение понимания, что далеко не всё в дальнейшей жизни будет идти строго так "как мне нравится" — оно дорогого стОит.
tormozedison
29.12.2022 22:42+1Так про стоматологические процедуры, работу по дому, полезную, но несладкую еду, и т.п. никто не спорит. Но специально раздражать тем, без чего вполне можно обойтись?
tormozedison
30.12.2022 09:36Возможно, эта выборка - результат общения с безотцовщиной в довольно большом количестве. Когда есть отец, возникает баланс: мать сюсюкает, отец серьёзно разговаривает. Без отца - перекос в сторону материнского сюсюкинга - сытость им по горло.
Gibboustooth
31.12.2022 12:28Занимался пару лет преподаванием Scratch в классах. Вел классы 5-7 и 8-10 лет. В целом впечатления от работы с этой платформой положительные и у меня, и у учеников. Но есть моменты, которые раздражали:
очень бедная стандартная библиотека картинок. Может быть, это сделано специально, чтобы стимулировать учеников рисовать свои компоненты, но в стандартной библиотеке нет даже необходимой базы.
нет внутриклассной библиотеки компонентов и картинок, откуда ученики могли бы брать объекты для своих работ и создавать собственные. Если учетник может создать что-то, чем смогут воспользоваться одноклассники - это огромная мотивация делать классные вещи. Тем более в классах быстро создается своя атмосфера и свои мемы. Например, у меня в классе половина детей фанатела от Undertale и процентов 90 - от Майнкрафта. Если бы у нас была внутриклассная библиотека - она была бы набита объектами на эту тему.
большие размеры экрана. Размеры экрана Scratch - 480*360px. У всех моих учеников относительно современные ноутбуки с экранами 16*10, но все равно приходится "впихивать" свои проекты в крошечный стандартный экран.
ограничение на количество клонов и проблемы с оптимизацией. Наверное, это связанные между собой проблемы. В некоторых проектов ограничение в 300 клонов делало невозможным реализацию задуманного. А некоторые проекты даже с таким ограничением начинали безбожно тормозить (мы использовали десктопные приложения, может быть, в веб версии оптимизация лучше).
rezedent12
Насколько хорошо звучит senior scratch developer?
ksbes
Зато джуны имеют буквальное значения!
FreeNickname
Наконец-то кадровый голод IT-индустрии будет решён с помощью детского труда :)