Про обучение программированию и предновогодние хлопоты деда-«роблоксера»
Недавно прочитал, что многие знаменитые и богатые люди в конце своего жизненного пути жалели только об одном — что не уделяли достаточного времени и внимания своим детям. Издание «Коммерсант» приводит цитату: «Ничто не приносит большего удовлетворения, чем участие в процессах, превосходящих длительность твоей собственной жизни». Все верно! Мне почти 70. И я — счастливый дед! У меня есть внук — единственный и такой замечательный! Мне доставляет огромное удовольствие быть с ним рядом и хоть чем-то помогать ему. Расскажу, если интересно, про обучение внука программированию и о своих предновогодних хлопотах. Будет, что посмотреть, будут и любопытные ссылки.
Первый планшет у внука появился в 3 года — одновременно с наборами конструктора «Лего». С планшетом появились Angry Birds, затем игра, в которой свин-механик должен был изобретать разнообразные самодвижущиеся повозки, чтобы суметь пройти одну за другой сложные трассы и собрать все тортики и сокровища. В свои пять лет внук удивил наличием архитектурных талантов — строил в Minecraft дома и железные дороги, где самодвижущиеся тележки, проехав «по горам — по долам», неожиданно спрыгивали с высоченной горы, но вновь попадали на проложенные внизу рельсы и могли продолжить свой путь. А прилетев из отпуска в Турции, построил в Minecraft самолет, в котором все было, как в жизни: можно было прогуляться по такому же, как у настоящего самолета, салону, войти в кабину пилотов и даже выйти на крыло. При этом самолет висел в воздухе — «летел»! Конечно же, добрался он в Minecraft и до режима «выживания». Но, я убеждал и убедил его (приводя самые разные аргументы), что это оглупляющий режим игры — ничему не обучающий, не дающий никаких дополнительных знаний и навыков. Строил внук и танки, и «шагоходных» роботов из «Звездных войн». Но, двигаться они не умели! Строил квесты, где игрок должен был собрать все (заранее спрятанные) звездочки. Но и это со временем приелось. Нужно было что-то другое! И вот за месяц до 2017 г его папа поставил на ноутбук внука Scratch (ver.1.4).
До этого мое участие в занятиях внука с компьютером было лишь зрительское. Scratch превратил меня в активного помощника в обучении программированию. Опыт программирования у меня был. С 1974 по 1988 я работал в КБ оборонного завода, где участвовал в разработке ЗРК «Тунгуска» и в решении многочисленных вопросов («сопровождении») серийного производства электроники ЗРК «Бук» и «Купол». Разрабатывал (на «Электронике-60»), а затем «переводил» в код отечественных микропроцессорных комплектов программу дальномера «Тунгуски» и отлаживал ее работу на макетах. Далее — опытные образцы аппаратуры, типовые испытания и поездки на полигоны — на стрельбы. Затем — серийное производство. В 1988 ушел с завода и стал руководителем одной из лабораторий НИИ Комплексной Миниатюризации Аппаратуры Управления Ульяновского Центра Микроэлектроники. К 1993 г мы разработали и изготовили партию встраиваемых в IBM-PC 11-разрядных АЦП/ЦАП. Пытались начать реализацию этих модулей в комплекте с большим пакетом прикладных программ с открытым кодом (на Turbo Pascal). Но, в «перестройку», ни у кого не оказалось денег на такие приобретения, хотя наша разработка была на уровне очень хороших зарубежных и имела 10—кратно меньшую стоимость.
Короче, с Новым 2017 годом внук поздравил своих родителей своей первой программой. Спрайты героев программы (Деда-мороза, оленей и др.) пришлось, конечно же, создавать мне (в 7 лет еще не до Photoshop). Но коды движений спрайтов и коды нот новогодней песни Jingle bells внук сделал сам. Понравилось ему делать и «озвучку», имитируя низкий голос Деда-мороза (использовали программу Audacity).
До этого у меня и мыслей никаких не было о том, чтобы учить внука программированию. Но прочитав интервью разработчика Scratch Митча Резника, я буквально прозрел: На дворе 4-я технологическая революция! При этом, оказалось, в России самое малое число детей-программистов. А во всех (ну хорошо, в 30-ти) развитых странах уже обучают программированию с первых классов школы (при том, что в Англии дети начинают учиться с 5 лет, а в Китае учат программированию с 3-х лет и с 5-го класса изучают искусственный интеллект и не только в теории, но и на лабораторных занятиях). Стал всячески поддерживать мотивацию внука к разработке программ.
Следующей была программа-сказка про его домашнего питомца — кота английской породы Чосера. И понеслось: внук один за другим придумывал сценарии, я «ваял» картинки спрайтов, когда случались затруднения — подсказывал, как лучше написать код. Внук писал программу за программой… Поздравления: с «днем варенья» мамы, с 8Марта, с Днем Защитника Отечества. Затем (как же без этого!) — простенький, но свой World of tanks! Потом — еще один. Потом вместе разобрались, как работает их домашний пылесос iRobot и пассажирский лифт. Потом (на летних каникулах после 1-го класса) появилась «обучалка» по таблице умножения и (простенький — всего на несколько букв) симулятор широко известного клавиатурного тренажера Baby Type. Смастерил свой собственный Minecraft, в котором можно строить все, что угодно, а затем и Minecraft-робот способный автоматически построить средневековый замок после нажатия всего одной кнопки. Завел себе студию на сайте Scratch (см. @JV_D).
Больше, чем робототехника внука привлекали «истории» — хотелось продолжить рассказ про Чосера. Появилась «Зона-51», где Чосер лицом к лицу встречается с «пришельцами». Затем Чосер примерил на себя роль детектива и принял участие в расследовании сенсационной пропажи любимого слона английской королевы. Это был 3-серийный мультик «Месть Иностранца с табуреткой» — по мотивам знаменитого советского мультика «Следствие ведут Колобки» и зарубежного мультика «Финис и Ферб». Кстати, в 2019-м «Месть иностранца с табуреткой» заняла 2-е место в международной Scratch-Олимпиаде — в своей возрастной категории. Незадолго перед конкурсом я показал внуку программу-симулятор советского аттракциона «Морской бой», в который любила играть его мама. Программа понравилась и была реализована внуком в Scratch-версии. Но, до него аналогичные программы заявили на конкурс еще несколько юных программистов, и решено было заявить на Олимпиаду «Месть иностранца».
Потом мотивация к Scratch-программированию немножко снизилась. Хотелось трехмерности! Еще в 2017-м изобретательский опыт подсказал простое решение: можно создавать «квази»-3D программы! Берем любую трехмерную модель, например, лего-солдатика или танк Т-34 из шоколадного яйца. Ставим его под фотоаппарат на поворотную платформу. Поворачиваем и делаем 30 фотографий через каждые 12 градусов. Все! Можно писать код, и ваш «трехмерный» танк будет ходить по экрану компьютера, поворачивать в любую сторону и стрелять. Внук стал создавать в своих программах и квази-трехмерные здания. Танк мог проезжать «за ними» временно становясь невидимым. Мог наезжать и «ломать» эти строения, превращая их в груды обломков.
Но, с главным случился «облом»! Танк мог лишь ездить, громыхать и демонстрировать дульные вспышки при выстреле. А внуку, естественно, хотелось большего: должны летать снаряды и они должны уметь поражать цели! Казалось бы, нет проблем? Но внук учился всего лишь в 3 классе, и тригонометрические функции они еще не проходили. Объяснить «про синусы и косинусы» получилось далеко не с первого раза — уже в 4 классе. Как говорится: «не боги горшки обжигают» — разобрался. Снаряды полетели! И на очередной конкурс Scratch-Олимпиады 2020 года внук подал заявку уже не в своей, а в более старшей возрастной категории «Игры». Это была игра «Дуэль танков». По полю боя ходят два 3D-танка: советский Т-34 и немецкий «Тигр-2». Круто! Но и это — не все! Если танком Т-34 управляет геймер, то (вы не поверите!) «Тигром» управляет бот -«искусственный интеллект»! И выиграть у «Тигра» довольно сложно! У меня, сколько я ни пробовал, не получается! «Тигр» лихо маневрирует на поле боя и стреляет очень метко. Очень быстро его перевес в очках превышает 5 баллов, и игра заканчивается. Но внук, как правило, одерживает победу! Проект вновь занял почетное 2-е место в Олимпиаде. А в «Курской битве» которая появилась следом за «Дуэлью» могут сражаться друг с другом два геймера.
К 75-летию Великой Победы внук разработал документальный проект «Фронтовые сестрички». Идея была моя — использовать рассказы о войне ветеранов из книги «У войны не женское лицо». Внуку идея понравилась. Оценили проекты и на областном конкурсе школьных программистов «Мастер-ИТ» 2020 г.
В российской начальной школе с программированием пока никак. В национальной программе цифровизации места ученикам начальной школы не нашлось. Можно только позавидовать первоклашкам английским, каждому из которых правительство безвозмездно, то есть, даром, выдает миниатюрный контроллер Micro: bit. В состав этого маленького приборчика размером со спичечный коробок входят миниатюрный дисплей, акселерометр (3-осевой датчик положения в пространстве и шок-сенсор), компас, измеритель освещенности и вполне серьезное (до спич-процессора) ПО. Подключаешь к USB-порту компьютера и, вуаля! — изучай хоть Python, хоть Java Script. А можешь программировать его в среде Scratch. Можно также докупить комплектующие — и конструируй роботов. Активным родителям — «флаг в руки»! Ваш ребенок запросто сможет превратить Micro: bit в калькулятор, музыкальную шкатулку, компас, наручные часы, охранное устройство и др. На нем можно запрограммировать интересные компьютерные игры, включая, «Тетрис». До «Тетриса» внук не дошел, но краткий курс Python был пройден: разработаны-отлажены многие скрипты подпрограмм различного назначения, 20-минутная «напоминалка» о том, что пора сделать перерыв в работе с компьютером, и две компьютерных игры.
Незаметно, проклюнулось увлечение играми «Роблокс». «Роблокс-Студию» папа поставил на компьютер еще в начале 2019 г. Но, ни я, ни внук не восприняли ее серьезно. Это же, как набор «Лего»! Но, согласитесь, отсутствие трехмерности и очень низкое разрешение изображений в Scratch — это не то, чем современный 11-летний подросток может блеснуть перед сверстниками. И внук начал «изменять» Scratch, почти подпольно занимаясь разработкой игр в «Роблокс-Студии». Когда я увидел его первую игру, стало понятно, чем «взял» «Роблокс». Естественно, это был всего лишь, workplace, наполненный моделями из toolbox. Но это был НАСТОЯЩИЙ трехмерный мир! И в этом мире его аватар делал все, что хотел! Почти полная свобода! Плюс исходно включенные «законы физики»! Кто может устоять перед этим? Опять таки, архитектурные таланты не желали пропадать «в туне» — с увлечением строились «Ньюка-тауны» и бункеры с лабораториями по исследованию SCP-нечисти. Очень быстро была освоена технология создания и модификации ландшафтов. Внук умеет манипулировать погодой и создавать местности с какими-то особыми свойствами и настроением — как на полотнах великих импрессионистов.
Что же? Нужно помогать! Начал сам изучать «Роблокс». Надо сказать это — не для подростка. Вроде бы есть англоязычный туториал — переведи и все! С переводом-то проблем нет! Но в нем, что называется «отрывки из обрывков», и получается как в песне: «Нет, все понятно, но, что конкретно?» Посмотрел на «ЛитРес» содержание нескольких книг по «Роблокс» — не то! А у внука проблема! Прорыскал англоязычный Интернет — нашел, как можно менять карты с разными terrain в ходе игры. Одной проблемой меньше! Внук моментально внедрил скрипт и создал военную игру, в которой «Буря в пустыне» меняется на «Бой спецназа с пиратами», а затем на «Разведку боем с вертолета». Идем дальше… Внук строит «паркур». Выглядит красиво, но мало спецэффектов! Учусь сам и подсказываю, как используя понятия Position и CFrame можно использовать уже известные из Scratch и Python циклы if и while true, чтобы площадки, по которым прыгают игроки, начали вращаться или совершать поступательные движения. Паркур стал эффектней. Радует, что внук действует по принципу: «Научился сам — научи других!». Видеоролики по программированию в Scratch, подсказки по разработке программ для Micro: bit и уроки программирования в «Роблокс» регулярно выкладываются на Youtube-канал внука.
Следом, внук построил в «Роблокс-Студии» космодром и почти всю Солнечную систему. Впечатляет! Есть «готовые» летающие тарелки и космолеты. Правда, многоступенчатые ракеты могут летать лишь в некотором исходно заданном направлении — то есть, в никуда! Но, зато радар на космической станции уже вращается, и передвигаться по космодрому можно на автоматических вагончиках. Двери открываются автоматически — при подходе космонавта (пригодились знания, полученные при строительстве паркура). Надо помогать! Начинаем вместе изучать скрипты, управляющие ракетами и разбираемся с координатами посадочных площадок. Готово! Ракеты стартуют и летят, приземляясь куда нужно! Но в каждой игре должна быть какая-то цель! Устраиваем «мозговой штурм». Придумали! Космический пират Дрейк похитил некие важные артефакты у жителей могущественной «Системы Трех Солнц» и они грозятся уничтожить всю Землю. Космическая полиция гонится за Дрейком, но его космолет разбивается и Дрейк гибнет. И артефактов в космолете пирата нет! Правительство Земли объявляет, что заплатит огромную сумму тем, кто найдет артефакты… Срочно ищем, как начислять баллы за найденные в игре артефакты, и игра готова! Посмотрите рекламный трейлер, отснятый внуком в Bandicam и отредактированный им же в Movavi. Согласитесь — для 11 лет круто! Это радует, потому, что дает надежды на то, что с подобного рода знаниями и навыками внуку может быть будет чуть легче и интереснее жить в том новом мире, который складывается в ходе 4-й технологической революции.
Я уже упомянул нашу общеобразовательную школу. Отмечу еще один, на мой взгляд, «вопиющий» факт — приснопамятную для многих родителей школьную проектную деятельность. Как ни странно, отечественные академики-педагоги с увлечением пишут статьи, в которых констатируют, что школьные педагоги сами не понимают сути проектной деятельности, но дальше этого дело не идет. Кто же интересно должен, наконец, научить учителей? Как ни верти, «рулят» этим чиновники от образования. И результат примерно такой, как с «развитием» в стране предпринимательства. И в лицее, где внук учился до пандемии, и в (иногородней) школе дистанционного обучения, где он учится сейчас, преподаватели подавляют малейшие попытки создания школьных проектов методом программирования и иными информационными технологиями. В каждом из классов стоят компьютеры, но ученику не дозволяют вывести на экран школьного монитора (или в Skype-чат) свою программу. Даже на уроках «изо» нельзя пользоваться Photoshop! Такая вот «цифровизация»…
Новая игра — новые проблемы! Ролевая игра, а именно такие сейчас довольно популярны среди сверстников внука, означает, что нужно уметь присваивать игрокам различные теги. Нужно, чтобы солдаты-боты стреляли только в игроков-«диверсантов». Читаем туториал: казалось бы простейший скрипт — ставь и получишь искомый результат! Но, оказывается — не факт. Скрипт не работает!
Еще проблема: игра внука «Полигон» — это тренировочная площадка, где из неопытных призывников делают настоящих профессионалов спецназа и офицеров, и, казалось бы, логично иметь возможность «командировать» (телепортировать) обученных в игре «профи» в ранее созданную «Зону боевых действий». Есть в туториале раздел и про телепортацию. Но, вы уже догадались — приведенный там скрипт также не работает! Есть у «Роблокса» и чат, где люди обсуждают свои проблемы. Сообщения в чате о том, что телепорт не хочет работать нашел, а вот подсказок, как решить проблему — нет. Попытки телепортации приводят к выдаче кода ошибки, но, понять причину из расшифровки кодов ошибок не получается. Обращение в службу технической поддержки тоже не помогло — прислали формальную «отписку» на тему абсолютно не связанную с вопросом.
В «Полигоне» внук создал отличную полосу препятствий, на которой можно и нужно тренировать навыки вождения техники «Роблокс». Оказывается, это не так просто. Например, при наезде на «обычный» дорожный бордюр ваш танк или бронетранспортер могут перевернуться (в моделях трудно правильно выставить центры тяжести). Проблемой может оказаться и выезд танка из мелкого водоема. Но ведь, все мы видим, как лихо танки проходят такие препятствия на танковых биатлонах! Полоса препятствий — отличный способ обучить геймера вождению боевой техники. Так-то оно так! И с этим все хорошо. Но, какой танковый биатлон без стрельбы? И хотелось бы, чтобы меткая стрельба отличалась от пальбы «в молоко». То есть, нужно научить танки присваивать баллы их командирам за каждое меткое попадание в (подвижную) мишень. Изучаю скрипт танка. Вроде бы все понятно: как только (специально формируемый для этого) «луч» упирается в какую-нибудь Part, нужно понять не мишень ли это и присвоить игроку баллы точно также как их присваивали в игре про пирата Дрейка. Пишу один вариант кода за другим — «фиг вам = индейская хижина»… А на носу Новый год и очень хочется, помочь внуку «добить» игру к празднику!
Ба! Да я совсем забыл, что существует фриланс! Регистрируюсь в заказчики «Хабр-Фриланса».
Результат никакой: за три дня 28 просмотров моей заявки, а откликов ноль! Хорошо, может быть, это не совсем подпадает под специфику основного контингента посетителей Хабра? Ищу фриланс в других местах. Нашел еще: «Kwork». Вбиваю в поиск Lua, и сразу же нахожу предложение по взлому Роблокс-игр. Достаточно лишь указать исполнителю какую! Мне этого не нужно, но уж если человек может взломать любую игру, то уж три простых скрипта — явно не проблема! Пишу в чате исполнителю — ответа нет! Специалист находится в «оффлайне» 3 суток. Потом появляется, но ответа не дает. Но моя заявка по-прежнему вывешена в общий доступ. Через день уже 128 просмотров. Но, отклик ВСЕГО ОДИН! Человек пишет, что готов решить проблемы, но в данный момент занят. Через день, заботясь о Заказчиках, «Kwork» пишет мне, что можно самому поискать специалистов, исходя из размещенных ими профессиональных резюме. Ищу, нахожу тех, кто занимается разработкой игр, пишу и получаю отказы — один за другим. Наконец, через три дня освобождается тот, кто был готов, но был занят. И, ура! Он решает наши с внуком проблемы одну за другой! Успели! Игру можно завершить до Нового года! Не так просто, но деду-программисту все-таки удалось поздравить внука-«роблоксера» с Новым годом. Ну, что же, век живи — век учись дед!