Выбрать главу

4. После многочисленных обсуждений со Стёпой современного программирования вообще и программируемых игрушек со встроенными микропроцессорами в частности я сумел, наконец, сформулировать для себя самого (а потом и для Стёпы) главную трудность, главное препятствие на пути создания языка программирования для детей.

Ясно, что этот язык должен быть узким по возможностям, а, значит, и узко специализированным. Все известные мне языки специализируются либо на работе с числами (ФОРТРАН, АЛГОЛ), либо на обработке данных (КОБОЛ), либо на обработке текстов и списков (ЛИСП, СНОБОЛ); кроме того, есть универсальные языки, обладающие всеми тремя возможностями (ПЛ, АЛГОЛ-68)[17].

Однако все эти три области применения программирования совершенно непонятны и неинтересны детям (ближе всего к их интересам стоят числа, но чтобы ощутить смысл задач, подлежащих алгоритмизации, им надо подрасти как минимум лет на пять). Значит, проблема в том, чтобы придумать доступную детям область применения языка. А сам язык — дело второе.

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

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

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

Язык программирования Малыш

Тогда, в 1981 году, уже существовал язык программирования для детей Logo. Он был основан на том же принципе — тоже управлял движениями некоего объекта — «черепашки», но был гораздо более разработан и, главное, реализован на компьютере. Поэтому наша разработка выглядит сегодня чем-то вроде изобретения деревянного велосипеда. Я даже некоторое время колебался, не выбросить ли всё это из книги. Потом решил оставить. Очень жалко было бы терять и целый пласт задач, и ту атмосферу энтузиазма, которую породил наш «проект» сначала среди нас — взрослых, а потом этот энтузиазм естественным образом передался детям. К тому же о Logo мы тогда ничего не знали, компьютеров не имели и даже об этом не мечтали; ну, и, наконец, изобретение деревянных велосипедов — это, если вдуматься, не такое уж дурацкое занятие. Надо бы как-нибудь вернуться к этому вопросу.

Перейду к описанию самого языка. Язык допускает расширения; сначала я опишу его основной костяк, а потом возможные расширения.

1. Движущийся объект. Из Диминого деревянного конструктора я склеил стрелку, показанную на рис. 55. Она называется роботом. Клетки, в которых помещается такой робот, имеют размер 8 смх8 см.

Рис. 55. Эта деревянная стрелка зовётся роботом. Робот будет двигаться по «клетчатой» комнате.

2. Комната. На большом листе «бумаги для эскизов» поместилась комната 5x7 клеток; естественно, комнату от задания к заданию можно менять.

3. Исполняемые операторы. Их пока четыре: «сделать шаг вперёд», «повернуться направо», «повернуться налево», «повернуться кругом». Все повороты делаются внутри одной клетки. Изображаются они так, как показано на рис. 56.

Рис. 56. Эти «исполняемые операторы» вырезаются из белого картона. Сторона каждого квадрата — 3 см.

4. Логические условия. Их тоже четыре: «стена спереди», «стена справа», «стена слева», «стена сзади». Они показаны на рис. 57. (Почти во всех программах использовалось одно лишь первое условие.)

Рис. 57. Ромбики проверки условий. Длина диагонали — 6 см.

5. Стрелки. Требуются стрелки всех длин, кратных 1,5 см. На некотором количестве трёхсантиметровых стрелок пишутся слова ДА и НЕТ. Следует обратить внимание на то, что каждое их этих слов должно быть написано на стрелках в четырёх видах: от головы к хвосту, от хвоста к голове и вверх и вниз по вертикали (рис. 58, где показаны только три стрелки из восьми необходимых).

вернуться

17

Напомню — этот текст писался в 1981 году.