В классическом произведении о системах проектирования, «Системантике», Джон Галл писал: «Неизменно обнаруживается, что сложная работающая система эволюционировала из простой работающей системы. Также является верным и обратное утверждение. Сложная система, созданная с чистого листа, никогда не работает, и вы никогда не сможете заставить ее работать. Вы должны начать все заново с простой работающей системы».
Простые децентрализованные системы лучше работают для создания новых возможностей, чем сложные централизованные системы, потому что они могут развиваться быстрее. Каждый децентрализованный компонент в общем контексте простых правил способен искать свою собственную функцию приспособленности. Те компоненты, которые работают лучше, распространяются, те, что нет, – вымирают.
«Функция приспособленности» – это термин из генетического программирования, обозначающий методику искусственного интеллекта, с помощью которой он пытается смоделировать разработку компьютерных программ по образу эволюционной биологии. Алгоритм предназначен для создания небольших программ, оптимизированных для выполнения конкретной задачи. В ходе серии итераций те программы, которые работают плохо, уничтожаются, а новые варианты «порождаются» наиболее успешными.
Когда в 1975 году Джон Галл писал свою книгу, он не мыслил в терминах функций приспособленности. Генетическое программирование появилось только в 1988 году. Но добавьте понятие функции приспособленности и понятие о количестве экологических ниш в фазовом пространстве организма к его идее о том, что простые системы могут развиваться так, что удивляют своих создателей, и у вас появится мощный инструмент для наблюдения и понимания того, как работают компьютерные сети и платформы.
Сам Интернет служит тому доказательством.
В 1960-х годах Пол Бэран, Дональд Дэйвис, Леонард Клейнрок и другие разработали теоретическую альтернативу телефону и телеграфу под названием коммутация пакетов для соединений с коммутацией каналов. Вместо того чтобы создавать физическую цепь между двумя конечными точками на протяжении всего сеанса связи, сообщения разбиваются на небольшие стандартизированные фрагменты, которые отправляются любым наиболее удобным для конкретного пакета маршрутом и собираются заново в месте их назначения.
Такие сети, как NPL в Великобритании и ARPANET в Соединенных Штатах, были первыми сетями с коммутацией пакетов, но к началу 1970-х годов существовали десятки, если не сотни несовместимых сетей, и стало очевидно, что необходим какой-то метод обеспечения совместимости. (Надо отдать должное, Д. К. Р. Ликлайдер, легендарный руководитель программы Управления перспективных исследовательских проектов Министерства обороны США (DARPA), призывал к совместимости сетей еще десять лет тому назад.)
В 1973 году Боб Кан и Винт Серф поняли, что верным решением проблемы совместимости будет вывести обмен информацией из сети и переложить задачу по повторной сборке пакетов и по запросу на повторную передачу в случае потери какого-либо пакета на конечные точки сети. Как ни парадоксально, они выяснили, что наилучший способ сделать сеть более надежной – это позволить ей выполнять меньше задач. В течение следующих пяти лет, при содействии множества других людей, они разработали два протокола, TCP (протокол управления передачей) и IP (интернет-протокол), которые, как правило, упоминаются вместе как TCP/IP и которые успешно устранили различия между базовыми сетями. Однако только в 1983 году TCP/IP стал официальным протоколом ARPANET и уже потом стал основой для того, что иногда называют глобальной сетью и в конечном итоге для Интернета, каким мы его знаем сегодня.
Гениальность протокола TCP/IP состояла в том, как мало он делал. Вместо того чтобы для удовлетворения дополнительных потребностей сделать протоколы более сложными, интернет-сообщество просто разработало дополнительные протоколы, которые устанавливались поверх TCP/IP. Дизайн был весьма специфическим. Любая группа, которая хотела предложить новый протокол или формат данных, публиковала рабочее предложение (RFC), описывающее предлагаемую технологию. Оно рассматривалось и выдвигалось на голосование среди членов сообщества под названием Инженерный совет Интернета (IETF), осуществляющего свою деятельность с января 1986 года. Никаких формальных требований для вступления в сообщество не было. В 1992 году профессор информатики Массачусетского технологического института Дэйв Кларк так описал определяющий философский принцип IETF: «Мы отказываемся от «королей», «президентов» и голосования. Мы верим в примерное согласие и работающий код».