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