Кстати, здесь лежит и ответ на часто повторяемое нелепое заявление, восходящее к Стивену Гулду, что Дарвин, как градуалист, возражал бы против “пунктирной” эволюции. Дарвин был градуалистом только в том смысле, что не признавал макромутаций по типу “747”. Дарвин, конечно, не пользовался авиационной терминологией, однако природа его возражений сводилась к тому, чтобы исключать лишь макромутации по типу “747”, но не по типу удлиненного DC-8.
Интересным примером для обсуждения могла бы послужить эволюция языка. Могла ли способность говорить возникнуть за одну макромутацию? Как я упоминал на стр. 336, основное качественное отличие человеческого языка от общения всех остальных животных – синтаксис, способность иерархически вкладывать придаточные предложения, предложные дополнения и прочее. Прием в программировании, открывающий эти возможности, – по крайней мере, в компьютерных языках, но, предположительно, и в человеческом – рекурсивная подпрограмма. Подпрограмма – фрагмент кода, который при вызове запоминает, откуда его вызвали, и возвращается туда же, завершив исполнение. Рекурсивная подпрограмма обладает дополнительной способностью вызывать сама себя и затем возвращаться к внешней (более глобальной) версии себя же. Я подробно описывал это в книге “Неутолимая любознательность”, поэтому здесь ограничусь краткой схемой, приведенной ниже.
Это предложение составила компьютерная программа моего авторства: она способна генерировать бесконечное количество идеально правильных с грамматической точки зрения (пусть и лишенных смысла) предложений, которые любой носитель языка признает синтаксически верными.
Прилагательное существительное (прилагательного существительного (которое наречно наречно глаголило (в существительном (существительного (которое глаголило))))) наречно глаголило.
Прилагательное существительное
Прилагательное существительное(прилагательного существительного
(прилагательного существительного(которое наречно наречно глаголило
(которое наречно наречно глаголило(в существительном (существительного (которое глаголило)))))
(в существительном (существительного (которое глаголило)))))наречно глаголило.
наречно глаголило.Я структурировал это предложение при помощи скобок и шрифта, который уменьшается с глубиной вложения. Обратите внимание, как придаточные предложения вкладываются внутрь главного, а не прикрепляются к его концу.
Не требуется особых усилий, чтобы написать программу, способную генерировать сколько угодно таких вот грамматически корректных (пусть и не несущих семантической нагрузки) предложений. Но только если ваш язык программирования допускает рекурсивные подпрограммы. Такую программу, к примеру, нельзя было написать на “Фортране”, первом языке программирования, созданном в компании IBM (или на любом из его современников). Я написал свою версию на языке, который лишь ненамного моложе, – на “Алголе-60”; такую программу легко можно было бы составить и на любом более современном языке программирования, созданном после пришествия “макромутации” рекурсивных подпрограмм.