Мне вдруг показалось, что через лет пять-десять человек, не владеющий хотя бы элементарными навыками программирования, будет выглядеть так, как выглядел человек, не умеющий ни писать, ни читать в начале двадцатого века.
Сыну десять лет. В школе он учит что угодно кроме того, что пригодится ему через эти самые десять лет. Может, со школой не повезло, может, в консерватории что-то не так. Математикой я иногда занимаюсь с ним сам, плюс пара кружков на эту тему.
Про программирование в кружках ничего не говорят, это понятно. Сдали мы его в Codabra. Отличные отзывы, внятная программа. Программирование на питон для десятилеток. Три часа в день, раз в неделю.
Возвращается он с занятий. Я его спрашиваю, чем занимались. По ответам понимаю, что ничего из того, что представляется мне важным он не понял. Пошел с ним сам.
В группе человек десять. Одна девушка значительно взрослее других. Остальные ребята десятилетки. Старшая девушка интересуется различиями в реализации некоторых функций между питоном и джавой. Минут 15 убили на выяснения вопросов, которые близко не лежали к программе и в принципе не понятны никому, включая меня и преподавателя.
Потом начали изучать теорию. Кортежи... Блин! Не при детях будет сказано. Десятилетние дети, пятое задание. Кортежи. Они по-русски-то такое слово знают только из телевизионных новостей про президента Путина. Из объяснения двадцатилетнего преподавателя я понял только, что кортеж – это с круглыми скобочками. Еще я запомнил, что он занимает мало памяти. Вот это точно, о кортежах я стараюсь не помнить. Убили еще пять минут на теоретическую часть. Скобочки же все видели, что про них рассказывать.
Остальные два с половиной часа детишки переписывали код с доски в свои компьютеры.
В коде есть локальные и глобальные переменные, вызовы навороченных функций, классы и методы, импортированные модули, прерывания. Я не понял ничего. Не то, что что-то не понял. Я вообще ничего не понял.
Программируют детишки игру в змейку. Змея следует за мышкой. Десятилетние дети должны 50 раз в секунду считывать координаты мыши, из координат вычислять направление движения змеи и ее скорость. По игровому полю случайным образом разбросаны кружочки. Случайным образом!!! Блин, нужно вызвать модуль, реализующий генератор случайных чисел, инициализировать его, получить несколько случайных параметров, передать их модулю, который рисует кружочки. Змея должна удлиняться при поглощении кружочка или погибать при поглощении неправильного кружочка. Кружочки должны быть правильные и неправильные. И так несколько досок наверченного кода.
Через два с половиной часа трудолюбивого переписывания кода дети первый раз попробовали запустить то, что переписали. Вы думаете детям удалось хотя бы поиграть стертыми в кровь пальцами в этот шедевр программистской мысли? Как бы не так. Игра не запустилась. Не то, чтобы она с ошибками работала. Она вообще не работала. У моего сына интерпретатор выдал 22 ошибки, у преподавателя чуть меньше. Преподаватель сказал: «Упс», нашел три ошибки, быстро поправил. Не заработало. Десятилетние детишки три часа колбасили бессмысленный набор букв, чтобы в конце занятия получить экран, черный, как дырка в абсолютно черном теле.
Преподаватель сказал, что дома разберется и на следующем недешевом занятии расскажет детишкам, почему не заработало. Биржевой аналитик может объяснить, почему его прогноз не сбылся за гораздо меньшие деньги. В общем, Codabra – это еще один из сравнительно честных способов отъема денег у населения, по моему оценочному суждению, конечно.
За пять занятий вывести на экран «Hello, world» сын научиться не смог.
У детей бывают разные способности. Может быть, мой музыкантом будет или философом, это достойнейшие профессии. Но я решил попытать счастья и за бешеные деньги в 800 рублей купил книгу Зеда Шоу «Легкий способ выучить Питон». Я понимаю, что нельзя ожидать от книжки за 800 рублей того-же, что от курсов за 20 000.
Вероятно, на выпускном экзамене из этой Кодабры, пальцы, тренировавшиеся переписывать с доски код вдруг вспомнят все, и сами пойдут плясать по клавиатуре. Но не дожидаясь этого момента сын и я по самоучителю разобрались, что такое переменная, как вывести на экран буквы и цифры. Чем отличается строка от числа. Как форматировать вывод. Что такое ввод данных. Как ввести данные с клавиатуры, как ввести их из файла, как передать их программе в виде аргумента. Вы знаете, сын вполне успешно справляется с заданиями. Я даже подумал, что его карьера глубокого философа пока подождет.
Кодабре я, конечно, глубоко благодарен. Теперь я тоже сижу длинными зимними вечерами вместе с Зедом Шоу и сыном, проникаясь красотой Питона. Офигенный язык.
Студентом я давил код на Паскале. Сейчас уже забыл, конечно, все. Но иногда пальцы вспоминают. У меня Кодабры-то не было, меня никто не учил переписывать код с доски, поэтому сохранились некоторые фундаментальные понятия. Только благодаря этим понятиям мне удается продвигаться по самоучителю на полурока впереди сына.
Но пост мой, кстати, не о Кодабре, хотя 20 000 и 15 часов невероятно жалко. Пост о том, что нам с сыном нужен учитель! Постигать основы программирования хотим вместе с ним. Раз в неделю три часа. Можно два раза. Можно у нас дома, можно где угодно. Дайте наводку. Кто может научить давить код моего сына и меня. Обязуюсь не заставлять учителя бегать.