При сборке человека или мыши эмбриология использует один и тот же словарь генов: нормальный словарь эмбриологии млекопитающего. Различие между человеком и мышью проявляется из-за различного порядка, в котором разворачиваются гены из этого общего для всех млекопитающих словаря, различных мест в теле, где это происходит, и выбора времени. Все это находится под контролем специфических генов, чья обязанность – включить другие гены в сложных и изящно рассчитанных каскадах. Но такие регулирующие гены составляют лишь меньшинство генов в геноме. Не поймите «порядок» неправильно, будто это обозначает порядок расположения генов вдоль хромосомы. С известными исключениями, которые мы встретим в «Рассказе Плодовой Мушки», порядок генов вдоль хромосомы столь же произволен, как порядок, в котором слова перечислены в словаре – обычно в алфавитном порядке, но, особенно в разговорниках для зарубежных путешествий, иногда в порядке удобства использования: слова, полезные в аэропортах, при посещении врача, при посещении магазина, и так далее. Порядок, в котором гены собраны на хромосомах, неважен. Вопрос в том, что клеточные механизмы находят правильный ген, когда им это нужно, и используют его с помощью методов, которые становятся все более и более понятыми. В «Рассказе Плодовой Мушки» мы вернемся к тем немногим случаям, очень интересным, где порядок генов, расположенных на хромосоме, непроизволен, как в иностранном разговорнике. Пока что главная особенность, которая отличает мышь от человека – это в основном не сами гены, не порядок, в котором они собраны в хромосомном «разговорнике», а порядок, в котором они включаются: аналогично выбору Диккенсом или Сэлинджером слов из словаря английского языка и размещения их в предложениях.
В одном отношении аналогия со словами вводит в заблуждение. Слова короче, чем гены, и некоторые авторы уподобили каждый ген предложению. Но предложения – неудачная аналогия, по различным причинам. Различные книги не составляются перестановкой фиксированного набора предложений. Большинство предложений уникально. Гены, как слова, но в отличие от предложений, используются много раз в различных контекстах. Лучшей аналогией для гена, чем слово или чем предложение, служит подпрограмма инструментальных средств в компьютере.
Компьютером, с которым мне посчастливилось познакомиться, является Макинтош, и прошло несколько лет с тех пор, как я занимался каким-либо программированием, поэтому я, конечно, отстал в деталях. Ничего – принцип остался, и он действителен также и для других компьютеров. В Mac существует набор инструментов программ, сохраняемых в ROM (Read Only Memory) или в файлах системы, постоянно загружаемых во время запуска. Существуют тысячи этих инструментов программ, каждая выполняет специфическую операцию, которая, вероятно, будет востребована много раз немного различными способами различными программами. Например, ObscureCursor скрывает экранный курсор, пока мышь остается неподвижной. Невидимый Вами, «ген» ObscureCursor вызывается каждый раз, когда Вы начинаете печатать, и курсор мыши исчезает. Инструменты программ стоят за знакомыми компонентами, общими для всех программ на Mac (и их скопированными аналогами на машинах Windows): разворачиваемым меню, полосой прокрутки, стягиваемыми окнами, которые Вы можете перетаскивать по экрану мышью, и многими другими.
Причина, по которой у всех программ Mac один и тот же «вид и функции» (а само их подобие стало предметом судебных споров) именно в том, что все программы Mac, написаны ли они Apple, или Microsoft, или кем-либо еще, вызывают один и тот же набор инструментов программ. Если Вы – программист, который желает переместить целую область экрана в определенном направлении, скажем, перетягивая мышью, Вы потратили бы впустую свое время, если бы не вызывали инструмент программ ScrollRect. Или если бы Вы хотели поместить галочку в раздел разворачиваемого меню, Вы были бы сумасшедшим, написав для этого свою собственную программу. Просто наберите вызов Checkltem для Вашей программы, и работа сделана за Вас. Когда Вы видите текст программы Mac, кто бы ее ни написал, на любом языке программирования и для любой цели, главное, что Вы заметите – что она состоит в значительной мере из вызовов знакомых, встроенных наборов инструментов программ. Тот же набор стандартных программ доступен для всех программистов. Различные программы вместе направляют к ним запросы в различных комбинациях и последовательностях.