Для создания схемы контроля работы лифта часто используется профессиональный жаргон, который представляет собой смесь из повседневного человеческого языка и специальных кодов. Строка этого псевдокода может выглядеть примерно так: «если ЭТАЖ ВЫЗОВ > ТЕКУЩИЙ ЭТАЖ, ПОДНЯТЬСЯ ДО ЭТАЖ ВЫЗОВ = ТЕКУЩИЙ ЭТАЖ И ОСТАНОВИТЬСЯ, ОТКРЫТЬ ДВЕРЬ, ЖДАТЬ…»
Когда план действий записан псевдокодом и начинает походить на желаемый, псевдокод переводится в профессиональный исходный код, гораздо более строгую и структурированную систему операций, в которой все термины жестко определены – переменные, подпрограммы и так далее. Исходный код тоже довольно легко может быть расшифрован человеком – ведь он сам его и пишет, – то есть правила и термины руководства по управлению лифтом все еще можно разгадать в нем, если вы знаете, как их искать. Их можно найти по двум признакам: во-первых, названия, присвоенные операциям и переменным обычно выбираются из надписей, которые потом будут на разных деталях (ВЫЗОВ ЭТАЖА, ОБЩИЙ ВЕС, НАЗОВИ ЭТАЖ…). А во-вторых, программисты часто добавляют комментарии к исходным кодам, руководящие указания, которые призваны пояснить другим читателям кодов, что имел в виду программист и что делают разные части кода. Когда вы пишете программу, полезно добавлять комментарии и для собственных нужд, чтобы не забыть, какую функцию вы заложили в строку кода. Если вы заметите ошибку, это поможет вам вернуться. Исходный код должен быть составлен очень тщательно, ведь нельзя пропустить ни одного знака и все элементы поставить на правильные места, поскольку в итоге он будет превращен в компьютерную программу; она переведет исходный код в последовательность фундаментальных операций, которые должна будет выполнять реальная (или виртуальная) машина.
Компьютер не умеет догадываться, что имел в виду программист, когда писал строку кода; исходный код должен сообщить компьютеру, какую точно операцию надо совершить, а компьютерная программа может разными способами выполнить те или иные задачи и теоретически способна выбрать наиболее эффективный путь в зависимости от обстоятельств.
Где-то в описании кода, среди тысяч строк, вы найдете фразу следующего содержания:
ЕСЛИ ВЕС-В-ФУНТАХ> n СТОП. ОТКРЫТЬ ДВЕРЬ
{Предупреждает лифт о запрете на движение с перегрузом.
Когда кто-нибудь выйдет, вес уменьшится, возобновится нормальный ход}
Примечание в фигурных скобках исчезнет после компиляции исходного кода. Точно так же слова, написанные заглавными буквами, не войдут в код, который будет нанесен компьютером на компьютерный чип, обеспечивающий работу программы; она нужна только программистам, чтобы запомнить, чему равны различные переменные, а слова «В ФУНТАХ» напоминают программистам, что число, которое они вставят в программу, должно равняться максимальному весу пассажиров в фунтах. (В 1999 году зонд НАСА Mars Climate Orbiter, стоимостью 125 миллионов долларов, подошел к Марсу слишком близко, поскольку часть контрольных устройств использовала в качестве меры длины метры, а другая измеряла расстояние до поверхности в футах. Космический зонд подошел слишком близко к поверхности планеты и разрушился. Да, люди делают ошибки.) Короче, комментарии и примечания помогают нам понять принципы устройства системы, но невидимы для программного обеспечения. Когда программа закончена, протестирована и признана работающей, окончательная версия записывается на диск памяти, к которому имеет доступ центральный процессор. И все те правила и выкладки, которые казались столь ясными и четкими во время создания алгоритма, растворяются в потоке нулей и единиц, которые может прочесть уже только процессор.
Основной целью этого отступления в начале программирования была демонстрация того, что автоматизированный лифт странным образом похож на живое существо и кардинально от него отличается. Во-первых, лифт ведет себя полностью в соответствии с требованиями. Это хороший лифт, он совершает правильные движения. Мы даже можем назвать его «умным» (он не хуже лучших лифтеров прошлого). Во-вторых, он обязан своим совершенством тому факту, что его проект имел правильную онтологию. Он использует переменные, которые отражают изменения важных для его деятельности свойств того мира, в котором он выполняет работу, и его не касается все остальное (старые или молодые пассажиры ездят в нем, живые они или мертвые, богатые или бедные и т. п.). В-третьих, ему не нужно знать, какова его онтология или почему она такая, – это касается только разработчиков программы действия лифта. Разработчики должны понимать логическое обоснование программы, ввиду самой природы научно-конструкторских работ: это ведь полностью творение разума. И именно в этом как раз заключается то самое глубинное отличие от онтологии простых живых существ, плодов эволюционного естественного отбора, а не разумного творения.