Мне до сих пор больно думать об этом! Еще больнее наблюдать, как при возрождении виртуальной реальности ее разработка до сих пор ведется с использованием традиционных языков программирования на традиционных экранах. Это напоминает попытку выучить иностранный язык по книге, никогда не говоря с его носителями.
Наши редакторы на традиционных мониторах по внешнему виду немного напоминают MAX, средство визуального программирования, которое используется в наши дни для создания экспериментальной компьютерной музыки и анимации
[151].
По крайней мере, мы заглянули в альтернативное будущее, которое, надеюсь, изучат более тщательно в последующие годы.
Масштаб
Масштабирование – основной импульс информатики. Это означает надежду специалистов в области информатики на то, что наша работа приобретет неограниченный простор и сложность.
Как получить все более и более масштабные фенотропные структуры? Фенотропный редактор преобразует машинные биты в пользовательский интерфейс таким образом, чтобы человек мог изменять биты. Но может ли один редактор вносить изменения в другой редактор? Можно ли получить целые башни редакторов, изменяющих редакторы, целые паутины из них, гигантские грибницы?
Разумеется, можно. Но в этом случае нужно ли придерживаться неких абстрактных принципов, которые обязан соблюдать каждый редактор, чтобы в него было возможно внести изменения с помощью других редакторов? Не помешает ли это достижению цели избежать обязательного использования тех или иных абстракций?
Невероятно, но нет! Фенотропному редактору не обязательно использовать одни и те же абстракции, чтобы им можно было управлять при помощи других редакторов.
Причина заключается в том, что каждый редактор – это пользовательский интерфейс, пригодный к использованию человеком. Таким образом, редакторы могут имитировать человека, чтобы вносить изменения в другие редакторы. Редактор может интерпретировать пользовательский интерфейс и использовать его на условиях этого интерфейса.
Например, редактор для низкоуровневого доступа к библиотеке математической обработки данных мог выглядеть как калькулятор. Можно было пользоваться им напрямую или через другой редактор, имитирующий взаимодействие системы с пользователем.
Программа-календарь, которой необходимо производить арифметические действия для расчета даты будущей встречи, имитировала нажатие кнопок на имитации калькулятора.
И для этого совершенно не нужна общая абстракция, которая бы диктовала, как одной программе нужно обращаться к другой. Вместо этого каждый редактор отвечает за то, как найти способ использования человекоориентированных пользовательских интерфейсов в других редакторах
[152].
Может показаться, что это сомнительный и крайне неэффективный способ заставить одну часть программы взаимодействовать с другой ее частью, и это правда! Но только в отношении небольших программ.
В основе фенотропной гипотезы лежит утверждение, что при работе с крупномасштабными системами, программы которых огромны, фенотропный принцип становится намного эффективнее традиционного, который обязывает к оперированию абстракциями.
Можно представлять фенотропную систему как множество редакторов, в которых имитации людей выглядывают из-за каждого редактора. В паре наших старых проектов можно было заглянуть за фасад большой программы и увидеть все редакторы, на основе которых она работает, парящие в информационном пространстве, как защитные экраны в космической войне.
За каждым редактором находился анимированный персонаж, похожий на мультипликационного, стоявший в профиль, и его движения имитировали управление другими редакторами, которые в свою очередь поддерживали другие персонажи. И все это создавалось в эпоху, когда единственным практическим стилем была графика восьмибитных игр. Мы никогда не воплощали всю картину целиком, но были к этому весьма близки. Я бы и хотел показать вам изображение, но ни одно из них так и не сохранилось.
Этот вид сбоку был, конечно же, еще одним редактором.
Ничего особенного.
(Если вы уже прочитали раздел о том, что я думаю относительно искусственного интеллекта, то подумайте вот о чем: в отличие от искусственного интеллекта, когда имитация личности обращена к вам, в фенотропной системе все персонажи обращены в противоположную от вас сторону, к другим редакторам, но они находятся под вашим контролем. Очевидно, что это лишь инструменты, и они не равны вам. Алгоритмы те же, что и у искусственного интеллекта, но концепция другая.)
Мотивация
Существует множество причин поддерживать фенотропную гипотезу. Но прежде чем разбирать на винтики эффективность функционирования, рассмотрим удобство и простоту использования человеком.
Всегда проще написать новую программу, чем понять и изменить уже кем-то написанную, но, по крайней мере, если программа фенотропная, те ее части, которые вы обнаружите, заглянув за фасад, всегда будут пользовательскими интерфейсами, разработанными для людей. Потому что это все, что в них есть.
Фенотропная система будет стремиться состоять из компонентов подходящего размера для использования людьми, поскольку каждый редактор с самого начала разработан для людей. Это означает, что фенотропные системы стремятся к образованию из «более грубых блоков», чем прочие разновидности архитектуры.
Вместо бешеных миллионов мелких абстрактных функций организация крупномасштабной программы будет подразделяться на более крупные и отчетливые составные части, каждая из которых – сама по себе понятный пользовательский интерфейс. Формирование блоков обычно следует принципам практической пригодности для использования людьми, а не идеализированной схеме отдельного инженера, и будет сохранять тенденцию к тому, чтобы его было как можно проще понять и поддерживать.
В фенотропной системе должна существовать возможность наблюдать за анимированным персонажем, который стоит за каждым редактором, выполняющим свои функции, чтобы сложилось отчетливое понимание того, как работает вся система; но можно также и расположить самого себя на любом участке сети редакторов, чтобы действовать непосредственно внутри программы, экспериментировать.