Как я написал книгу для детей: «Мама, не отвлекай. Я Python учу!»

в 10:15, , рубрики: IDE, p5, python, графика, игры, игры для детей, книга, книга для детей, обучение детей, обучение программированию
what-again.jpeg

Что? Опять?

Неужели мало хороших книг по Python, зачем еще одна?

Привет! Возможно, вы родитель или учитель, который хочет помочь детям освоить программирование.

Расскажу о том, как и зачем я написал книгу для детей по изучению Python.

oblojka1

Мама, не отвлекай. Я Python учу!

Предыстория

Лет десять назад я уже написал первую книгу для детей по программированию.

Ее до сих пор можно найти и бесплатно скачать.
По запросу «Яша учится программировать pdf» находится как книга, так и история ее создания.

yasha2

Яша учится программировать, 2013 год

Чтобы можно было сразу работать с графикой, но без всяких сложностей, я использовал Processing:

Processing – известная графическая библиотечка для Java.

Она весьма популярна в западных школах и колледжах.
Прекрасно подходит для детей и начинающих.

Простой код, рисующий фон из кружков для обложки:

void setup() {
    size(400, 700);
}

void draw() {
    fill(random(255), random(255), random(255), random(255));
    ellipse(random(width), random(height), 50, 50);
}

Почему Яша? Якоб Файн? Да нет. Просто Яша. 

Книга осталась в самиздате, общался с издателями, но до печати не довел.

А тут 22 февраля 2022...

...нет, не то, что вы подумали.

Двадцать второго февраля выходит на связь издательство БХВ и предлагает всё же над ней поработать и опубликовать.

«Здравствуйте, Игорь! Вы не охладели к идее бумажной книги для детей

– Издатель

Много памяти воды утекло за 9 лет. Преподавание, предпринимательство, выгорание вплоть до диабета.

А я подумал-подумал и согласился. Отлично же, закрою гештальт. Да и спустя столько лет нон-стоп преподавания уже по-другому и материал бы изложил.

А на самом деле, просто число красивое было 22022022
«Уии», для тех, кто шарит в Морзе (..- ..- ..)

Уии, всё переписываем, так тебе никто денег не даст

– Но язык нужно выбрать другой, – сказал издатель.
Java по статистике продаж книг уже не так популярна.

А вот Python был в самый раз.
Номер один по некоторым отчётам.

tiobe1

Выбор языка. Суперпопулярны сейчас Скретч и Питон, по Скретчу у нас книги Голикова и Винницкого.

– Издатель

Ну да, плёвое дело, переделаем всё с Java на Python. Делов-то.

Что переписывал

TL;DR Речи о написании совсем новой книги не шло. Хотели просто проапгрейдить старую. В итоге получили вообще все новое: новую структуру, проекты, задачи, теорию, язык программирования...

Остался только фундамент — графическая библиотека Processing, адаптированная под Python как модуль p5py.

Слишком уж удобна, с моей точки зрения, для начинающих. Опыт проведения курсов в предыдущие десять лет только подтверждал, что с ней легко начать «в графику».

p5js

Ее форк под JavaScript имеет 21 тысячу звезд на GitHub – отличный объективный показатель, дополняющий мое субъективное мнение как преподавателя.

Книга должна быть для самостоятельного изучения ребенком, без участия родителей

Сообщил цель издатель.

Это очень важное отличие от кружковых занятий: ребенок+книга, никакого преподавателя рядом нет.

– Издатель

Окей. Как можно минимизировать участие родителей?

Да так, чтобы даже настройкой никакой и установкой заниматься не пришлось бы?

Онлайн-IDE спешит на помощь

IDE – Integrated Development Environment, интегрированная среда разработки. Там, где пишут код, запускают и делают разные крутые вещи. В нашем случае правильнее было бы назвать это просто песочницей, из-за минимального количества функций.

Решил сделать так, чтобы для старта хватало одного браузера.

Открываем браузер, и там всё готовенькое. Пишем код, запускаем, смотрим результат, исправляем, сохраняем.

Никаких настроек. Все сразу работает. То, что нужно для полностью самостоятельного обучения.

У меня уже была онлайн-среда разработки для Processing, и в сети находилось много альтернатив. Один openprocessing.org чего стоит.

Но для Python такого не было (чтобы был онлайн Python + p5py).

Так что — вперед, адаптировать IDE.

Для технически подкованных читателей. Разбор стека и решений — отдельная тема. Кратко напишу, что используется Brython, чтобы код на Python запускать прямо в браузере (с промежуточной компиляцией в JavaScript).

Простой код, рисующий фон из кружков для обложки, теперь на Python с модулем p5py:

from p5py import *
run()

size(375, display_height)

def draw():
    fill(rand(255), rand(255), rand(255), rand(255))
    ellipse(rand(width), rand(height), 50, 50)

Мобайл-first

– Ну раз новая книжка, то и подход должен быть новым, но проверенным. И в зарубежном тренде, – подумал я.

А что, если...

– Нет, нет, нет, – глупости!

Ну, а всё-таки, что если...

...улучшить доступность для читателей, сделав так, чтобы прогать можно было не просто в браузере, но и на смартфоне? – раздумывал я.

Для технически подкованных читателей. Меняем в online-IDE Monaco на CodeMirror v6, ибо первый не поддерживает написание кода на мобильном.

Гаа-а-аля, QR-код!

Ну а раз у нас всё такое модное, мобильное и браузерное, как можно использовать эти возможности по максимуму?

– А что, если...
– Нет, нет, нет, – вообще глупости!
– Ну, а всё-таки...

Раз среда разработки адаптирована под мобильные, и все примеры кода хранятся онлайн, то из книжки на них можно ссылаться просто по QR-коду, – подумал я.

s2-2-432

И сделал так, чтобы достаточно было навести телефон на любой QR-код в книжке, и сразу бы открылся редактор кода на смартфоне, и ребенок мог сразу же начать (или продолжить) программировать.

А особенно полезно это в заданиях, типа «продолжи код».

Ведь теперь ничего даже скачивать и искать не нужно. Просто ввел адрес в строку браузера или отсканировал QR-код телефоном и получил рабочую версию программы. Можно продолжить её дорабатывать по заданию.

А если ошибка возникла и никак не удается её устранить? То же самое – считал телефоном QR-код и сверился с решением.

(~Спаси~) Запусти и сохрани

Почему адаптировал свой старый онлайн-редактор кода?

Во-первых, альтернатив не было. Ну не было онлайн-Пайтона с поддержкой графической библиотеки p5.

А во-вторых, очень уж хотелось минимализма.

Всё должно быть максимально просто для начинающих. Вырастут, успеют ещё со сложностями ознакомиться.

Ребята, не стоит вскрывать эту тему. Вы молодые, шутливые, вам всё легко. Это не то.

Всё же книжка для самостоятельного обучения – чтобы не нужно было родителей спрашивать, какую из 100 кнопок сейчас нажать.

savecode1

Всего две кнопки

Поэтому у нас в редакторе кода были только две кнопки: Запустить и Сохранить.

Это уже потом на кружке для детей я экспериментально добавлял кнопки с ИИ-помощником, чтобы ещё больше повысить самостоятельность обучения.

Название должно быть оригинальным

И иллюстрировать, что эта книга для самостоятельного обучения, – сказал Издатель.

Перебрали с десяток названий.

Остановились на том, которое подчеркивает эту «самостоятельность»:

– Мама, не отвлекай. Я Python учу.

Обложку

сгенерировал я в Midjourney

на платном тарифе, чтобы сохранить копирайт

oblojka1

Dev

Но художник издательства по мотивам ее потом немного перерисовал на свой вкус.

oblojka1

Prod

Идея была в том, чтобы прямо в магазине можно было с обложки прочитать QR-код и на своем телефоне открыть первую программу.

Контент

я решил сделать в виде диалогов.

Так легче читать.

Есть главный герой — мальчик, и есть множество второстепенных персонажей, которые с ним общаются и рассказывают о том, о сем.

Например, если пишем игру про летающую тарелку, то и героем для диалога будет кто?

Правильно, НЛО.

103p

НЛО тудым-сюдым летает

Верстка

Верстал я в банальном Pages на макбуке.
Да, не слишком подходящий инструмент, кажется.

Но, на удивление, практически вся моя верстка без изменений пошла в продакшн.

Легкое начало

По Scratch... там самые маленькие дети с первых страниц начинают делать игры, мультики и прикалываться.

– Издатель

Вот и мы тоже.

Вместо того чтобы просто выводить текст «Hello, World!» — сразу окунаемся в графику.

С первых же шагов учимся работать с координатной сеткой, изменять цвета, размеры и позиции объектов. Рисуем свои первые фигуры: треугольники, квадраты, круги.
Это помогает лучше понять синтаксис и допускать меньше ошибок уже в продвинутых темах.

Потом мы переходим к более сложным задачам. Например, создаём игру, где нужно бегать за морковкой или управлять персонажем, который ловит кости.
По ходу изучаем переменные, циклы и условия.

Давай по новой, Игорь, это всё слишком сложно

Сказал Издатель 22 июня.

Все бы ничего, но книга была уже готова, составлена, сверстана авторской версткой, разработаны проекты.

#проект Собака и кость - Очень длинный. У меня-то терпения не хватило до конца дочитать. А дети-айджены вообще надолго не могут внимание концентрировать. Предлагаю разбить на короткие проекты

– Издатель

— Как это по новой? — Сначала я был немного в шоке...

Но вздохнул, выдохнул, подумал, ещё раз подумал и начал по новой, потому что...

Проекты и правда получились классные, но тяжеловесные. Двадцать страниц на проект — много. Для детей с современным клиповым мышлением.

Поэтому да, сел летом всё переделывать. Непосредственно перед дедлайном на сдачу рукописи. 

colors1

Каждый шаг – свой цвет фона

Разбил все проекты на мини-проекты, мини-шаги.

По 2-4 страницы.

Каждый шаг выделен своим фоновым цветом и является вполне законченным решением. Прошёл, сделал — получил удовольствие.

Буря по терминологии. Пиксель/пикселей или пиксел/пикселов?

Как вы обычно говорите?

В процессе написания книги мы такой шторм подняли – как правильно писать это слово. Все издательство «на ушах стояло».

Для меня было важно, как дети сейчас говорят и чаще всего встречают в медиа. Книга вся новаторская, и старый стиль сильно бы выбивался. Это было для меня принципиально.

В итоге:
Предлагаю согласиться с [авторским] вариантом "пиксель/пикселей", который соответствует как правилам русского языка, так и современным тенденциям.
Независимо от того, как мы раньше писали в наших книгах.

– Издатель

pixelei1

pixelei1

В результате оставили авторское «пиксели», и, как я понял, поменяли правила издательства, чтобы соответствовать современной терминологии.

Вот так, пишешь книгу, улучшаешь индустрию. Бывает же.

Поддержка откуда не ждали

В какой-то момент я уже устал работать.

И тут...

...мне на почту спустя восемь лет после написания предыдущей книги прилетает такой вот тёплый отзыв.

29 июля 2022 г. в 16:48

Здравствуйте, Игорь! Меня зовут Богдан, и я надеюсь, что адреса, по которым я пишу, ещё актуальны, и рано или поздно это письмо вы прочитаете.

Когда-то давным-давно я, будучи 9-10-летним ребенком, наткнулся на сайт, на котором был опубликован самоучитель по HTML и CSS. Для меня это было первым знакомством с тем, как устроен компьютер behind the scenes, и я хвастался перед бабушкой и мамой, какой я теперь классный программист, и как могу сам писать сайты. Тогда я еще не понимал, что HTML — язык не совсем программирования, но навсегда влюбился в код и магию создания чего-то своего.

А потом, когда мне было лет 12, я наткнулся на вашу книгу „Яша учится программировать“, и проглотил ее всю дня за три, ночью читая, днем программируя по этой книжке.

И тогда я понял, что хочу быть программистом.

И вот, спустя 8 лет, я пишу вам, будучи уже студентом третьего курса МФТИ.

Хочу сказать спасибо Интику, Яше, Большой и Малой Гигабайтице и, конечно, вам за то, что влюбили меня в программирование.

Во многом благодаря вам и вашему труду я учусь там, где учусь, и учу то, что учу. И еще ни разу я об этом не пожалел. Успехов вам!

С уважением и глубокой благодарностью,
Бочкарев Богдан

Спасибо, Богдан, это было вовремя!

Проектно-ориентированный подход. Сначала «зачем?», а потом уже «как?»

Теория без практики мало кого увлекает, правда? Дети особенно начинают скучать, если не видят, как теория работает на практике и зачем она нужна. А пока до практики дойдешь, уже и забыл, о чём там говорили.

Поэтому я пошёл другим путём и использовал проектно-ориентированный метод обучения.

Дети сначала сталкиваются с реальной задачей, а потом уже изучают теорию, которая поможет её решить. Так им становится интереснее, ведь они сразу видят результат.

Например, нужно, чтобы НЛО, долетев слева направо до стены, снова оказался в начале. И снова нападал на игрока.

Вот и отличная мотивация изучить условные выражения:

Если долетел, то вернуть НЛО в начало экрана.

Игра с собакой и костью – тоже хороший пример. Мы сталкиваемся с проблемой: как узнать, когда собака поймала кость? И вот тут мы изучаем, как сравнивать переменные и вычислять расстояние.

Если расстояние между собакой и костью меньше 10, то считаем, что собака поймала кость и сгрызла. Аф-аф...

Теория возникает именно тогда, когда она нужна для решения задачи.
Так что обучение становится увлекательным и прикладным – теория всегда идёт в контексте реальной задачи.

Игры: ради чего все затевалось

igry1

Две большие игры и с десяток мелких проектов

Например, мы создаём свою версию игры Flappy Bird, только вместо птицы у нас заяц, который перепрыгивает через кусты.

Есть и более сложные задачи, как, например, игра про инопланетян, которые нападают на землю, и их нужно сбивать молниями. Используем стандартные игровые приёмы, такие как ограничение на количество энергии для молний и ограничение жизней у игрока.

Что с ошибками?

Они есть у всех и всегда.

В конце каждого упражнения у нас QR-код. Сканируешь его — и сразу видишь готовое решение. Можно сравнить с тем, что получилось у тебя.

errors1

Заранее знакомимся с типичными ошибками

Ну и, конечно, постоянно разбираем типичные ошибки. Ох уж эти пробелы. Не в образовании. А в Python, то бишь отступы.

Поставишь не четыре, а три — и всё. Вот это постоянно повторяем, чтобы, когда ребенок столкнулся с ошибкой, он уже знал, как её исправить в большинстве случаев.

Десктоп

В конце один раздел про программирование на стандартном Python на десктопе.

В VS Code, да.

Уже без всяких браузеров.

vscode1

Python в VS Code

Чтобы сделать переход из нашей уютненькой песочницы с двумя кнопками в мир большого программирования комфортным.

Почему я с этого не начал? Почему глава про десктопный Python в самом конце?
Библиотека p5 для десктопного Python более куцая в некоторых важных местах по сравнению с той, что используется в браузере.

  1. Например, эмоджи не умеет отображать. А на эмоджи все проекты в книге завязаны — чтобы и разнообразие картинок было, и не пришлось бы на этом первом этапе ещё и графический редактор изучать. А эмоджи всем по чатам знакомы.

  2. Требует всегда использовать setup(). А мне важно было на самых первых итерациях не вводить новые понятия прежде времени: а) отступы в блоках и вытекающие из них ошибки при несоблюдении, б) сами блоки их объяснение и обозначение. Это мы позже изучим. А начать важно так, чтобы всё было понятно и максимально просто на самом первом шаге.Но, может, я эту библиотеку (p5) и допилю фоново, тогда браузер совсем необязательным станет.

Всё или ничего?

Конечно, книга не покрывает все аспекты Python.
Это, скорее, первый шаг — возможность заинтересовать ребёнка программированием.

Написать свои первые игры с самого нуля.

Если ему понравится, дальше он сможет продолжать изучение самостоятельно или с вашей помощью.

Подведем итоги

Какие проблемы я постарался решить в книге?

  1. Настройка среды. Часто дети (да и взрослые) теряются в процессе установки и настройки программ. Это может быть сложным и долгим, а хочется сразу начать программировать.

  2. Автономное обучение. Было бы здорово, если бы дети могли учиться сами, без постоянной помощи родителей. В своей книге я постарался, чтобы это стало реальностью.

  3. Сложности в обучении программированию детей. Круто, если обучение удается организовать как игру, с визуальными проектами. Это проще и интереснее для ребёнка.

  4. Мост между Scratch и взрослым программированием. Для тех, кто перерос Scratch, но еще не готов погружаться в сложные библиотеки вроде Pygame, моя книга как раз подходит. Она является своеобразным мостом между Scratch и профессиональным программированием.

  5. Простой старт. В книге я использую смайлики для игр вместо сложных картинок. Это облегчает детям начало работы.

Как начать?

Ребенок за месяц прошел всю книгу. Сам без помощи во всем разобрался

– Алена М. 30 июня 2024

Что теперь? Если вам стало интересно, можете посмотреть бесплатный образец книги «Мама, не отвлекай. Я Python учу!» на любом сайте.

Периодически бывают распродажи. 

Попробуйте оценить, подходит ли она для вашего ребёнка. Если вам понравится, и вы захотите, чтобы ваш ребёнок начал изучать программирование, попробуйте — книга его наверняка заинтересует.

Целая книга, многомесячная работа автора с полным погружением, скорее всего, будет даже дешевле одного занятия с преподавателем. Почему бы не попробовать.

К тому же автор рядом, в случае чего можно написать на me собачка igor точка kg.

Еще можно бесплатно скачать предыдущую книгу «Яша учится программировать».

Кроме того, вы можете зайти в онлайн-среду разработки, запустить простую игру и даже попробовать изменить что-то в коде. Это даст вам ощущение того, насколько это просто и увлекательно.

Телеграм-канал остался в совершенно зачаточном состоянии, но заглянуть в гости можно: https://t.me/p4kids

Дух новаторства, экспериментов, вдохновения и толерантности к ошибкам – вот что я хотел передать с помощью этой книги своим читателям.

Мне было интересно ее писать, придумывать, бесконечно улучшать и адаптировать. Разрабатывать проекты и переписывать заново. Как-нибудь расскажу и остальные истории.

Автор: Gressus

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js