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