Как я уже заявил во вступительной главе к этой книге, бактерии не знают о том, что они бактерии, но реагируют на других бактерий путем, свойственным бактериям, и способны избегать того, следить за тем или следовать тому, что они различают в своем умвельте, не нуждаясь ни в каких идеях или пояснениях того, что они делают. В онтологию бактерий входят другие бактерии, точно так же, как этажи и двери входят в онтологию лифтов, единственное, бактерии во много раз сложнее. Точно так же, как существуют причины, почему контрольные цепи лифта спроектированы так, как они есть, существуют причины, почему внутренняя система контроля белкового обмена получилась такой, какая она есть: в обоих случаях устройство было эффективно и результативно оптимизировано для решения проблемы18. Главная разница в том, что проектирование системы лифта выполнено разумными творцами, которые разработали предложения, представили обоснованные решения и привели доказательства их эффективности. А в истории проектирования и создания бактерии не было ни исходного кода, никто не писал к нему комментарии, чтобы не то что пояснить, а даже хотя бы намекнуть на то, чего же все-таки Мать-Природа добивается. Это не мешает биологам-эволюционистам приписывать определенные функции некоторым свойствам (перепончатые лапы нужны для плавания в воде), а другие явления интерпретировать как ошибки Природы (теленок с двумя головами). Схожим образом литературные редакторы давно умерших авторов не могут полностью полагаться на автобиографические признания, оставленные в наследии автора, и порой вынуждены считать одни тексты намеренным введением в заблуждение, а другие – опечатками или провалами в памяти.
Программирование – относительно новая область в человеческой деятельности. Однако уже на самом начальном этапе ее становления удалось выявить и исправить многие недостатки и ошибки, выстроить Вавилонскую башню языков программирования, создать инструменты для упрощения процесса разработки программного обеспечения. Тем не менее программирование все еще является скорее искусством, чем ремеслом, и даже выпускаемое на коммерческой основе обеспечение часто содержит ошибки и требует постпродажной корректировки и обновления. Почему устранение ошибок не автоматизировано, почему ошибки не удается устранить с самого начала? Разработчики, отлично изучившие возможности программного обеспечения, по-прежнему считают отладку программного кода сложной задачей, даже если в их распоряжении имеется подробный исходный код, сопровождаемый детальным комментарием, написанным в соответствии со строгим регламентом и передовыми практиками (Смит, 1985, 2014). Причина, по которой отладка кода не может быть полностью автоматизирована, состоит в том, что ошибки зависят от задачи, которую решает программное обеспечение (и подзадач, и под-подзадач), и достаточности деталей в определении ее специфических особенностей (такой, чтобы можно было заложить их в воображаемую автоматизированную программу-наладчика). С практической точки зрения это то же самое, что начать писать программу с кода отладки19! Написание и отладка компьютерного кода для серьезной системы на сегодня – одно из самых суровых испытаний для человеческого воображения, и стоит только какому-нибудь гениальному программисту создать новый инструмент для решения насущных задач, как планка ожиданий поднимается, и от него начинают ждать новых свершений (и отладок). Это совершенно новое беспрецедентное явление в человеческой деятельности: музыка, поэзия и другие виды искусства всегда предлагали потенциальному Творцу бесконечные пространства возможностей, которые не уменьшались с появлением нового музыкального произведения, поэмы или живописных полотен; художественное творчество не может стать рутиной из-за появления синтезаторов или файлов MIDI, программ по отслеживанию орфографии или созданию многоцветной компьютерной графики высокого разрешения.
А как же Природа отлаживает свои проекты? У нее нет исходных кодов или комментариев к ним, ей недоступны услуги гениальных наладчиков; процесс природного дизайна должен идти весьма расточительным путем создания и проверки множества вариантов и позволять проигравшим умереть, не будучи изученными. Результатом природных поисков становится не всеобщее всестороннее совершенство, а лучшие версии, доступные на местных уровнях, способные процветать в конкретных условиях, причем постоянное тестирование отсеивает все новых и новых победителей, поднимая планку совсем чуть-чуть для каждого следующего поколения20. Эволюция, как подчеркнул Ричард Докинз (1986) в названии своей знаменитой книги, это Слепой Часовщик[70], и, учитывая ее методы работы, совсем не удивительно, что ее произведения полны противоречивых, недальновидных, но дьявольски эффективных ходов и поворотов – эффективных за исключением тех ситуаций, когда они таковыми не являются! Отличительный признак естественного отбора – обилие ошибок и случайностей, в самом программистском смысле: эти изъяны обнаруживаются только в самых невероятных ситуациях, подобных которым до сих пор не бывало, которых не случалось в процессе разработки, приведшем к созданию последнего варианта, и поэтому они не были устранены или обработаны поколениями наладчиков. Биологи очень хорошо умеют подвергать создаваемые ими системы совсем маловероятным испытаниям, навязывать им экстремальные задачи, проверяя, как и где система потерпит неудачу и почему.