— А то. У каждого Исполнителя (а мы договорились называть Исполнителем любую машину) имеется свой набор допустимых команд. То есть таких команд, которые ему понятны. Их еще называют «стандартными командами». Электрическая лампочка, например, понимает только две команды — «включись» и «выключись».
— А как она понимает? Ведь ей никто ничего не говорит…
— Для Исполнителя нет никакой разницы между тем, каким образом ему отдают команды. Ты нажимаешь на выключатель и таким способом приказываешь лампочке: «включись»! В принципе можно сделать устройство, которое реагировало бы на твой голос или на хлопок в ладоши, или на температуру руки. И все это означало бы для Исполнителя команду «включись!» Так вот. Программирование начинается с того, что программист выясняет, каков тот набор стандартных команд, который понятен Исполнителю.
— Понятно, — сказал Петя.
— Тогда вернемся к нашей Кристине.
ПЕРВЫЙ СПОСОБ ПРОГРАММИРОВАНИЯ — ПОСЛЕДОВАТЕЛЬНОЕ ВЫПОЛНЕНИЕ КОМАНД
— В самом деле, — сказал Петя, — вы, Казимир, превратили ее в робота-официанта. А оказывается, что она даже чай не может приготовить.
— Может, — сказал Казимир. — Только команда «приготовить чай» не входит в набор ее стандартных команд.
— А что входит в этот набор?
— Правильный вопрос, — похвалил Казимир. — Отвечаю. В настоящий момент в набор стандартных команд для Кристины входят следующие команды: «взять», «поставить», «принести», «унести», «налить», «зажечь», «вскипятить», «насыпать», «положить», «вылить». Она также понимает названия всех предметов, которые можно увидеть на кухне.
— Вот оно что, — сказал Петя, — значит, из всех этих стандартных команд надо составить новую команду «организовать чаёк». Правильно?
— Именно так. Программисты говорят: нужно определить новую команду через стандартные. Кстати, именно это и составляет суть их работы. Ну что же ты стоишь? Приступай.
— То есть я должен составить такую программу для Кристины, чтобы она ее поняла и приготовила чай?
— Совершенно верно.
Петя начал диктовать, а Кристина — печатать:
НАЛИТЬ ВОДЫ В ЧАЙНИК
ЗАЖЕЧЬ ГАЗОВУЮ ПЛИТУ
ПОСТАВИТЬ ЧАЙНИК НА ПЛИТУ
ВСКИПЯТИТЬ ВОДУ
ЗАВАРИТЬ ЧАЙ
ПОСТАВИТЬ НА СТОЛ ДВЕ ЧАШКИ
ПОСТАВИТЬ НА СТОЛ САХАРНИЦУ
ПОЛОЖИТЬ НА СТОЛ ДВЕ ЛОЖКИ
НАПОЛНИТЬ ЧАШКИ ЧАЕМ
— А разговаривать она может? — спросил Петя.
— Нет, — ответил Казимир, — произносит только служебные слова, голубка моя. Зато она может петь.
Тогда в программе добавилась новая команда: спеть какую-нибудь душевную песню.
Как и в первый раз, Петя сунул листок с программой под бескозырку Кристине и прихлопнул ее сверху.
— Программа понятна, — сказала Кристина. — Приступаю к выполнению.
Скоро на столе перед Петей и Казимиром дымились ве чашки ароматнейшего чая. Едва они отхлебнули по лотку, как Кристина с огромным воодушевлением грянула песню: «…Чудится одно и то ж: кто-то мне в кабацький, пьяный дракы-ы саданул под сэрцэ хвынский нож!»
— Что за репертуар, Кристина? — укоризненно произнес Казимир. — Здесь же дети. Смени пластинку.
— До чего же, до чего же всем нам хочется, братцы! — прежним воодушевлением продолжала Кристина. — На жирахве, на жирахве на живом покататься! До чего же хочется, братцы! На живом жирахве покататься! Эх! Эх! Ой да!
Она умолкла.
— Все что ли? — спросил Казимир, Кристина молчала.
— Концерт окончен, — вздохнул Казимир.
Он подумал и бултыхнул в свою чашку пять ложек сахару.
— А мама говорит: сахар и соль — это белые враги, — сказал Петя.
— Для кого — враги, а лично для меня — это белые друзья, — заявил Казимир.
После того, как с чаем было покончено, Петя без труда составил программу на мытье посуды, и Кристина удалилась на кухню.
— Оказывается, нет ничего проще машинного языка, — сказал Петя. — Отдавай себе команды и все!
— А ты полагаешь, что уже освоил программирование?
— А разве нет?
— Что ты! Мы с тобой еще только в самом начале. Мы изучили только самый простой способ — последовательное выполнение стандартных команд.
— А что, есть и другие способы?
— Есть. Но мы поговорим о них завтра.
«Под музыку Вивальди! — послышалось вдали. — Вивальди! Вивальди!»
Это возвращались гребцы, подкрепившие где-то там, за горизонтом, свои силы.
КРИСТИНА ПРЕВРАЩАЕТСЯ В ЧЕЛОВЕКА
Когда робот вновь появился в комнате, Казимир обнажил волшебную свою шпагу и со словами «Шаварган трах!» — хлопнул по плечу Исполнителя. Исполнитель мгновенно превратился в Зеленую девицу Кристину, похожую на старшую пионервожатую из Петиной школы и та сразу же начала зудеть:
— Магистр! Ну что это такое? Они опять опаздывают! Как это понимать? Они опаздывают на три минуты тридцать восемь секунд. А вы помните лозунг дня? Помните? Нет? Помните? Нет? Помните? Нет? Помните? Нет?
— Тебя что, Кристина, опять заело?
— Да, заело, — гордо сказала Кристина. — Да, заело. Да, заело. Да, заело. Извините, Магистр, не могу остановиться.
— Зациклилась, — объяснил Казимир Пете. — Мы тобой еще будем это проходить.
Вслед за этим он снова хлопнул шпагой по плечу Кристины и произнес:
— Шаварган-трах-тарарах!
— Лозунг дня дисциплина! — воскликнула Кристина. — А они, Магистр, опаздывают. Я вынуждена написать на них донос.
— Валяй, — сказал Казимир.
В руках у Кристины немедленно появился исписанный лист бумаги.
Великому Магистру. Донос. Сообщаю, что подчиненные вам матросы систематически опаздывают на службу после обеденного перерыва. Прошу считать вышеуказанное нижеизложенным и принять строгие меры по наведению порядка.
— Ладно, — сказал Казимир, — что-нибудь придумаем. — Ну, Петя, нам пора. До завтра, мальчик. Ровно в девять утра раздвинется стена, и мы снова встретимся с тобой. В шлюпку Кристина! Гребцам — на весла! Полный вперед!
Урок второй
КУЛИНАРНО-АРТИЛЛЕРИЙСКАЯ УСТАНОВКА: ВЕЛИКОЕ ИЗОБРЕТЕНИЕ ВЕЛИКОГО МАГИСТРА
На другой день ровно в восемь утра стена в 96-й квартире дрогнула и раздвинулась. И морским ветром дунуло!
И клипер под всеми парусами замер на рейде!
И шлюпка, и весла: Вшеп-шлеп! — и гребцы: под музыку Вивальди! И Кристина, и Казимир — вот он, во фраке, со шпагой, с седыми висками, строгий и с моноклем в глазу.
— Привет, Петя! — сказал Казимир.
— Привет, Казимир, — ответил Петя и увидел, что на корме шлюпки установлена пушка, похожая на ту, которая стояла вчера. — А это что у вас? Пушка?
— Пушка, — подтвердил Казимир, соскакивая из шлюпки на берег и помогая сойти Кристине.
— А для чего?
— Чтобы стрелять.
— А когда?
— Если в первом акте на сцене висит ружье, — назидательно сказал Казимир, — то в последнем оно должно выстрелить. А у меня, голубчик, все делается сразу. Огонь! — вдруг рявкнул он.
Орудие в шлюпке грянуло со страшной силой, и на этот раз из жерла вместо вороны вылетела жареная курица. Вытянув шею, Казимир, проворно перехватил ее зубами в воздухе и, не разжимая челюстей, спросил:
— Хохех хохху?
— Что?
— Магистр спрашивает: хочешь ножку? — перевела Кристина.
— Нет, спасибо, — сказал Петя. — Я только что позавтракал.
Магистр в мгновение ока обглодал курицу, извлек из воздуха лист газеты, завернул туда кости, скомкал сверток и мял его в могучих своих руках до тех пор, пока тот превратился в пылинку.
— Нравится? — спросил он и показал на пушку.
— У, сила, — сказал Петя.
— Кулинарно-артиллерийская установка. Сокращенно — КАУ. Сам изобрел. Имею патент. Не сочти за бахвальство, голубчик… но — пройдут года, настанут дни такие, когда великий, мудрый наш народ вот эти руки, руки молодые — руками золотыми назовет! — и Казимир показал Пете свои руки. — Ведь золотые же? Правда — золотые? — спросил он.
— Золотые, — подтвердил Петя.
Великий Магистр внезапно расчувствовался, глаз под моноклем у него повлажнел… Казимир дернул головой, монокль взлетел вверх, после чего Казимир промакнул глаз белоснежным платком, потом выгнул шею, подхватил монокль с лета и, шевельнув веком, водрузил его на место.
— Таким образом, проблема обеденного перерыва решена, — объявил Казимир. — Теперь Кристине не придется писать доносы на матросов. Приступаем к трапезе!
— А программировать? — спросил Петя обиженно. — Казимир, я вас все утро ждал, а вы сразу — обедать!
— Одно другому не помешает, — сказал Казимир. — Совместим приятное с полезным.
КРИСТИНА ОПЯТЬ ПРЕВРАЩАЕТСЯ В РОБОТА
— Протестую, — заявила Кристина. — По распорядку дня обед начнется через один час тридцать две минуты.
— Распорядок дня существует только для одной цели — чтобы его нарушать, — сказал Казимир.
— Что вы такое говорите, Магистр? — возмутилась Кристина. — Да еще при ребенке? Вы отдаете себе отчет, какой нравственный урок он сейчас получает?
— Нет, она мне надоела, — проговорил Казимир. — Вот зануда…
В мгновение ока он выхватил шпагу и со словами «шаварган-бух!» перевел зеленую в другое состояние. Лицо у нее окаменело, на голове появился поварский колпак с артиллерийской эмблемой — двумя скрещенными мортирами.
— Она стала Исполнителем? — спросил Петя.
— Да. Сейчас это — кок-артиллерист. Будет кормить команду.
— А ей не больно, когда вы ее превращаете?
— Нет, — сказал Казимир уверенно. — Только щекотно.
ЕЩЕ ОДНА КОНСТРУКЦИЯ ПРОГРАММИРОВАНИЯ: РАЗВЕТВЛЕНИЕ
— Ну-с, приступим, — сказал Казимир. — Вчера мы с тобой изучили самый простой способ программирования. Кстати, как он называется?
— Последовательное выполнение простых команд, — сказал Петя. — Я помню. Это когда команды следуют одна за другой.
— Правильно. А сегодня мы узнаем еще один способ. Он называется «разветвление». Но перед этим я задам тем один вопрос. Ты помнишь, как вчера Кристина-Исполнитель поила нас чаем?
— Конечно.
— А ты помнишь, там была команда «вскипятить воду»?
— Помню.
— А теперь ответь: чем эта команда отличается от остальных?
— Тем, что сама Кристина воду не нагревала. Она поставила чайник на газ — и все.
— Ну, а сама-то она что-нибудь делала в это время?
— Нет… то есть да. Она стояла и смотрела на чайник.
— Для чего?