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