Анатолий Анисимов - Компьютерная лингвистика для всех: Мифы. Алгоритмы. Язык
Такое преобразование иногда используют как литературный прием. Для героя рассказа В. Брюсова «Теперь, когда я проснулся» главным был сон. В своих снах он безнаказанно совершал ужасные злодеяния. Это занятие так его увлекало, что он научился специально вызывать сны. Жизнь была только короткой необходимой подготовкой ко сну и тоже воспринималась как этап сна. В итоге он в реальной жизни совершил кровавое убийство, думая, что все происходит во сне. Произошло несоответствие значений глобальной переменной, определяющей субъективное восприятие действительности, и локальной, задающей фазы реальности.
У Борхеса в рассказе «Книга руин» маг снов в конце жизни понял, что он только призрак, который видится кому-то во сне. В том сне, начавшемся вызовом программы сон — жизнь, жизнь и сон мага были только подпрограммой процедуры ГЕНЕРИРОВАТЬ (сон).
Граница между действительностью и сном может быть расплывчатой, не обозначенной четко. Поэтому часто авторы задают постепенную трансформацию значений тех или иных переменных в свою противоположность. Для моделирования подобных явлений необходимо вводить градацию степеней сна и реальности. Например, можно считать сон выражаемым отрицательным числом, а жизнь — положительным. Чем ближе сон к нулю, тем он ближе к жизни. И наоборот, жизнь переходит в сон, если значение жизни постоянно уменьшается. Если ввести несколько дополнительных переменных, легко модифицировать программу жизнь — сон таким образом, чтобы локальная сигнализирующая переменная и постепенно изменялась, переходила в свою противоположность. Если при этом значения v не менять, получим процесс, описывающий постепенное изменение жизни на сон, а сна на жизнь, и при этом человек в конце концов воспринимает себя во сне, а свою прошлую жизнь с удивлением осознает как сон. Такой эффект достигается в случае, если процедура ГЕНЕРИРОВАТЬ (сон) порождает текст, связанный с определенными событиями, временем и местом, а ГЕНЕРИРОВАТЬ (жизнь) порождает текст с другими атрибутами существования. Тогда в результате выполнения указанного преобразования человека со значением v, равным жизнь, вступает в процедуру ГЕНЕРИРОВАТЬ (сон). В силу ограниченности объема изложения мы не приводим подробное описание этой программы.
Такое преобразование также описывалось в литературе. Пример — уже упоминавшийся рассказ Кортасара «Ночью, на спине, лицом кверху».
Как задать постепенный переход одного объекта в другой мир, например объект из жизни включить в сон? Для этого нужно совершить следующие изменения в программе жизнь — сон. Локальная переменная и не затрагивается. Зато глобальная переменная, соответствующая бытию объекта, заменяется на две связанные компоненты. Первая свидетельствует о степени присутствия в жизни, а вторая определяет степень принадлежности ко сну. Каждый раз во время сна необходимо уменьшать первую компоненту и увеличивать вторую. Процедура ГЕНЕРИРОВАТЬ реагирует на эти изменения, порождая соответствующие описания погружений в сон.
Отличие этого преобразования от предыдущего, описанного выше, в том, что меняется сам человек, а не мир.
Аналогичным образом, выполняя согласованные действия с двумя двухкомпонентными переменными, можно добиться синхронной замены объектов из сна и жизни. Это распространенный прием в литературе. Иногда сон заменяется зеркалом или книгой. Аналогом сна выступает таинственное зазеркалье или текст волшебных книг.
В рассказе Брюсова «Зеркало» с переменным успехом борются за право присутствия в мире две женщины — реальная и ее зеркальное отражение. В рассказе Кортасара «Аксолотль» человек, пристально наблюдающий в аквариуме неподвижное лицо водной личинки, вдруг ощущает себя поменявшимся с ней местами.
«Я видел очень близко, за стеклом, неподвижное лицо аксолотля. Без перехода, без удивления я увидел за стеклом свое лицо, вместо лица аксолотля увидел за стеклом свое лицо, увидел его вне аквариума, по другую сторону стекла. Потом мое лицо отодвинулось, и я понял… Я был аксолотлем и теперь мгновенно узнал, что никакое понимание невозможно».[95]
Если в процедуре ГЕНЕРИРОВАТЬ (жизнь) описывать определенные события и с некоторым опережением задавать их в процедуре ГЕНЕРИРОВАТЬ (сон/зеркало), получим эффект вещих снов (зеркал, книг). Аналогичное можно выполнить и с прошлым. Если постепенно сближать описания событий в этих двух процедурах и в итоге генерировать один заключительный текст, получится как бы слияние предсказанного будущего (или известного прошлого) с настоящим.
Подобный прием наблюдаем у многих писателей. Маркес в своем рекурсивном романе «Сто лет одиночества» заканчивает повествование эпизодом, когда последний из рода Буэндиа расшифровывает последние страницы волшебной книги Мелькиадеса, оказавшейся описанием событий рода Буэндиа и города Макондо. По мере приближения к концу поднимается ураган, тоже описанный в книге, и с последней строчкой все исчезает — город Макондо, род Буэндиа и вещая книга.
Опять у Борхеса в рассказе «Чернильное зеркало» правитель зачарованно наблюдает собственную смерть в чернильном отражении. Когда палач в за- зеркалье опускает меч на голову осужденного, правитель тоже падает мертвый.
В «Мастере и Маргарите» Булгакова события прошлого — алгоритмический модуль Иешуа — Пилат — вызываются из основной темы. Здесь действует одна рекурсивная процедура Р (х), функционирующая аналогично программе жизнь — сон. Процедура Р (Мастер и Маргарита) вызывает процедуру Р (Иешуа и Пилат). В конце все времена встречаются в последнем пристанище.[96]
Можно пойти дальше. Любые игры с переменными допустимы. Можно задавать независимые или зависимые друг от друга изменения локальных и глобальных переменных в программе жизнь — сон. Можно в качестве имен добавлять новые миры. Таким способом можно получать странные переходы жизни в сон, сна в жизнь, исчезновения и появления жизни или сна, другие измерения, метущееся мелькание или медленное таяние глобальных объектов среди снов и жизни. Это эксперименты для будущего XXI в. Путь указан.
Таким образом, писатели и сны убеждают: бытие инвариантно относительно дискретно-непрерывных преобразований симметрии жизнью сон<-> зеркало «-» жизнь. Все дело только в двух названиях, нескольких переменных величинах и законах их изменения. «Быть может, всемирная история — это история различной интонации при произнесении нескольких метафор».[97]
Перейдем к рекурсивным снам. В процедуре Р (х) сон вызывается после сравнения локальной величины и со значением жизнь. Такое однозначное сравнение происходит только в случае абсолютно нормального функционирования процессов жизни и сна. Но часто механизм запуска сна задается более сложными законами; например, возможен вызов сна в процессе сна. Поэтому в описании программы жизнь — сон следует заменить условие и=жизнь на предикат а (х), учитывающий и другие возможности вызова сна. Явное задание для этого предиката физиологам еще неизвестно.
ПРОГРАММАжизнь — сон;
глобальная переменная о: (жизнь, сон);
ПРОЦЕДУРАР (х: (жизнь, сон));
локальная переменная и: (жизнь, сон);
НАЧАЛО и: =х;
ГЕНЕРИРОВАТЬ (и);
1: ЕСЛИ а(и) ТОвызвать Р (сон) ИНАЧЕвернуться;
а: = жизнь;
ГЕНЕРИРОВАТЬ (и);
ПЕРЕХОД на I;
КОНЕЦ (* процедуры Р*)
НАЧАЛО (* тело программы *) вызвать Р (жизнь)
КОНЕЦ
Как уже отмечалось, предикат а (и) может принимать значение истина и в случае, когда и равно сон. Поэтому возможны рекурсивные сны. Например, задаваемые следующей последовательностью операторов, образованных при выполнении программы.
Погружения в сон идут внутри сна, поэтому они часто не фиксируются сознанием. Окончание сна всегда сопровождается установкой значения глобальной переменной v, равного жизни. Несоответствие сна и установки на жизнь вызывает сильное чувство страха.
СОН ЧАРТКОВА
Н. В. Гоголь, «Портрет»
вызвать Р (жизнь); и, = жизнь;
ГЕНЕРИРОВАТЬ (жизнь)
… Таким образом, Чартков совершенно неожиданно купил старый портрет… Он опять подошел к портрету, с тем чтобы рассмотреть эти чудные глаза, и с ужасом заметил, что они точно глядят на него…
… Таким образом, Чартков совершенно неожиданно купил старый портрет… Он опять подошел к портрету, с тем чтобы рассмотреть эти чудные глаза, и с ужасом заметил, что они точно глядят на него…
ГЕНЕРИРОВАТЬ (сон);
пустовызвать Р (сон); ц3:=со к;
ГЕНЕРИРОВАТЬ (сон); пусто
ГЕНЕРИРОВАТЬ (сон); пусто