Представьте себе, что вы живете в будущем, где к программированию виртуальной реальности используется тот подход, который я и мои друзья изучали много лет назад, то есть фенотропный. В этом случае станет возможно выполнить различные действия, вследствие чего биты, которыми эти действия управляют, изменятся, и виртуальный мир, в котором вы находитесь, начнет функционировать иначе.
Какого рода действия это будут? Будете ли вы отдавать команды с имитации командного пульта, похожего на пульт звездолета Enterprise? А может, тянуть за цепи, как в средневековом подземелье, или танцевать как падающий лист? А может, редактировать текст, который выглядит как исходный код, изобретенный Грейс Хоппер, и который в наше время используют все? Редактор может принимать абсолютно любой внешний вид.
Но внешний вид необходим. Не придерживаясь определенной точки зрения и определенного образа мышления, вы ничего не добьетесь. Но на фундаментальном уровне нет никаких ограничений на использование любого внешнего вида в тот или иной момент.
Во вселенной Грейс, где царит нефенотропный исходный код, каждый язык программирования предполагает, что некоторые абстрактные объекты не просто реальны, но еще и обязательны, вечны и неизбежны при использовании этого языка. Я уже упоминал классические функции Фортрана и объекты Smalltalk, но могу так же легко добавить сюда и ботов облачного программного обеспечения, модных на момент написания этой книги.
Каждый из этих объектов хорош и полезен в определенное время, но ни один из них не обязан становиться неизбежным. Они не реальны, если «реальность» означает то, что нельзя отбросить. Мне причиняет беспокойство то, что они кажутся реальными.
Разными абстракциями можно заменять любые привычные, не считая причуд истории. (Вопрос, возможно ли когда-нибудь пересмотреть широко используемые абстракции программного обеспечения, остается открытым. В книге «Вы не гаджет» («You Are Not a Gadget») я рассматриваю способы и идеи, которые выражаются в том, чтобы программное обеспечение смогло стать «закрытым» из-за различных вредоносных «сетевых эффектов», но относительно этой книги я полагаю, что у нас есть время для изменений и надежда на них.)
Единственное, что остается фундаментальным и нерушимым, по-настоящему реальным, пока вы используете компьютер, – это вы и комбинации битов, запущенные и работающие внутри компьютера. Абстракции, связывающие два этих реальных явления, нереальны.
Можно ли вообразить, что архитектура компьютера может выражать эту философию? Что, если существует способ загружать и скачивать разные редакторы с разным внешним видом, чтобы представить вам разные комбинации битов так, чтобы вы могли их понять и изменять их в разное время разными способами?
Фенотропный пробный запуск
В начале 1980-х я и мои друзья создали несколько поколений фенотропных экспериментов. Самый первый носил название Mandala, за ним последовал Grasp, а затем Embrace. (Предполагалось, что Grasp будет перчаткой, а Embrace – костюмом, который, как в прямом, так и в переносном смысле, охватывает все тело.) Прототипы некоторых важнейших категорий приложений для виртуальной реальности были созданы при помощи бескодового программного обеспечения от VPL.
«Бескодовое» отнюдь не метафора; мы в буквальном смысле не использовали код. То есть мы использовали традиционный код и средства разработки, чтобы система работала в принципе, но виртуальные миры функционировали не за счет кода, а лишь за счет комбинаций битов, которые, повторюсь, можно было изменять при помощи редакторов, которые были с ними связаны.
Редакторы на фундаментальном уровне отличаются от обычных инструментов, используемых для разработки программного обеспечения, таких как компиляторы и интерпретаторы.
Компиляторы – это стадия куколки в схеме превращений традиционного программного обеспечения на основе кода: вы редактируете текстовый файл, исходный код, а затем, лишь пройдя этап компиляции, можете увидеть, что делает код после того, как в него внесли изменения. А затем вы переключаетесь туда и обратно, отлаживая его
[149].
Фенотропная альтернатива может показаться совершенно экзотической идеей молодому поколению специалистов в области информатики, выросших в тени Хоппер. Идея кода практически повсеместно стала синонимичной программированию, но это совершенно не обязательно.
Может ли фенотропный редактор имитировать традиционный код? Иными словами, могли ли мы редактировать комбинации битов, преобразуя их в изображения на экране, которые выглядели как привычный высокоуровневый текстовый язык? Во многих случаях могли, что означало имитацию кода. Фенотропный редактор мог располагаться так, чтобы выглядеть как текст, даже несмотря на то, что его действие определялось более общей графической конструкцией. Такой редактор мог делать то же, что и компилятор, но в виде живой визуальной отладки
[150].
Среди редакторов мы особо выделяли полюбившиеся нам своим видом, то есть определенной визуальной подачей кода, и часто придерживались потокового принципа. Поток данных обычно выглядит как провода, соединяющие между собой модули. Но этот принцип не был основополагающим. Мы могли пользоваться текстовыми редакторами по образцу созданных Грейс Хоппер или другими редакторами.
Опыт программирования быстро стал более ориентированным на импровизацию и больше походил на попытку сыграть джаз на трубе и чертить математические диаграммы.
Пятьдесят второе определение VR: способ использования компьютеров, который предполагает отказ от самой идеи кода.
К сожалению, впоследствии нам пришлось просить покупателей продуктов виртуальной реальности вести разработку на обычном экране, а не внутри виртуального мира. Основная причина этого заключалась в том, что обычные мониторы стоили дешевле, чем шлемы виртуальной реальности. Больше людей могло работать одновременно, находясь при этом в разных местах.