Занеделю немного подвигал блоки в Scratch 3, проверил некоторые предположения и решил дополнить свои первоначальные впечатления об этой платформе с точки зрения программиста.
Чтобы не было недопонимания договорится о том, что материал ниже представляет лично мою точку зрения без притензии на объективность.
В некоторых школах мира Scrtach является обязательным для изучения и включен в школьную программу. Вижу ли я его изучение в настоящее время целесообразным в рамках уроков информатики? Нет. На мой взгляд данную платформу лучше изучать интенсивно, что не получится сделать по определению в рамках уроков. Изучать не с 8 до 13 лет по часу в неделю, а, например, интенсиво с 12 лет (когда уже есть понимание многого) не более нескольких месяцев. В нем просто нет того, что можно и нужно изучать годы. При одном часе в неделю уже через день не вспомнишь, что проходили на последнем уроке. Более того. Несмотря на то, что третья версия появилась относительно недавно - в 2019 году, и имеет интеграцию с робототехническими конструкторами Lego, базовая функциональность платформы и понятия отсылают нас к 90-м годам прошлого века, например, реализация работы с объектами, циклами, подпрограммами и др. Кто-то может сказать, что базовые основы алгоритмов не изменились. Да, но проблема в том, что для демонстрации целого ряда базовых концепций в Scratch 3 либо нет блоков, либо они не имеют необходимую функциональность, либо они предлагают свою трактовку, отличную от того, как это понимается в текстовом программировании.
С моей точки зрения программиста получается так: вместо того, чтобы сразу приступить к решению задачи, нужно ещё думать, как из имеющихся блоков создать требующуюся функциональность и выбрать, забивать гвозди плоскогубцами или отверткой, потому что молотка просто нет. Ещё не сделано ни одного шага по пути к решению задачи, а уже пришлось создать пару сотен блоков только потому, что нужной мне функциональности среди имеющихся блоков нет. А как же при помощи Scrtach создаются интересные проекты и игры? Создаются, но это скорее похоже на демонстрацию того, а вот что можно ещё сделать из такого минимума. Но где и как это применить на практике?
Хорошо, есть расширение для работы с Lego и можно делать игры. Но нет поддержки геймпадов. Есть распознавание движения при помощи web-камеры, но нет распознавания голоса. А где демонстрация возможностей web-технологий? Всё невозможно уместить в рамках одной платформы? Но она же работает в web-среде и позиционируется от 8 до 16 лет. Или в 16 лет ещё рано смотреть на web? Получается лодка, которая лежит на пляже. Что мешает поднять её и спустить на воду при необходимости? Боязнь, что дети не поймут расширенных блоков, которые можно собрать в каком-то одном расширении?
Это всё не проблема только Scrtach. Это проблема того, как разработчики видят и понимают цель и задачи создаваемых ими блочных платформ. Пока они видят так: чем меньше необходимых блоков, тем проще и лучше. Для начинающих - да, но очень скоро даже новички начинают видеть разницу в том, что и как здесь предлагается, и что можно сделать в чём-то другом.
За примером далеко ходить не надо. Метод для разделения строки в массив на JavaScript:
String.split(';')
При использовании блоков это выйдет примерно в такую конструкцию.
Рис. 1. Блоки для разделения строки в массив.
Разница очевидна. Но функциональность этой кучи блоков несложно реализовать в рамках одного блока, как сделано на некоторых других блочных платформах.
Что же делать? Думаю, что в таких условиях нужно строить программу обучения так, чтобы, во-апервых, избегать использования сложных для создания в Scrtach 3 алгоритмов, а с, другой стороны, делать их интересными. А для этого нужно интенсивно пройти основы, чтобы как можно быстрее, но с пониманием, перейти от чисто учебных к творческим и практическим игровым задачам. Что интереснее детям, сортировать массивы, вычислять углы треугольников, рисовать графики или сделать движения спрайта по линии, лабиринт, редактор карт для игр, отсекатель лучей?
Скажу так: интерес и полеза от Scrtach 3 в большей степени будет зависит от методики его изучения. Классический подход от простого к сложному на основе решения учебных задач быстро приведёт к потере интереса. Информация о Scratch везде подаётся с точки зрения игры. Но смотришь один материал или книгу и быстро становится скучно, а берёшь другой - интересно даже взрослому программисту.
Кругом говорят, что блоки - это несерьёзно, они не популярны и т.п. Визуально блочная разработка такая по своей природе или кто-то сделал так, что с блоками неудобно и неэффективно работать?
Существует довольно много блочных платформ. Несколько десятков, о которых я слышал. Что мешает посмотреть на них внимательно и в своей блочной среде использовать преимуещства и находки для более удобной работы?
Но вместо этого видишь, как все делают практически одно и тоже с той разницей, что у одних блоки желтого цвета, а у других синего. В тектовом программировании удачные находки в одном языке стараются реализовать и в других. А в бочной разработки каждый сам за себя.
Но о какой популярности может идти речь, если редакторы блоков предоставляют доли процента того, что могут предложить разработчику IDE для текстового программирования?
В отличие от многих программистов, которые вообще не воспринмают блоки, я готов использовавать их для решения практических задач. Но они просто не дают это сделать, предлагая делать не так, как ты хочешь, а как тебя хотят заставить это делать. Кому-то нравится играть музыкальные произведения по нотам. Но лично мне больше нравится свободное творчество и импровизация без нот.