Чтение онлайн

ЖАНРЫ

Компьютерная лингвистика для всех - Мифы, Алгоритмы, Язык
Шрифт:

КОМПЬЮТЕРНЫЕ СНЫ

Какие сны могут сниться электронным существам? В памяти ЭВМ программы живут короткой драматической жизнью. Они получают и перерабатывают информацию, обмениваются данными, борются за ресурсы, изменяют сами себя, создают новые программные объекты, замирают, исчезают и вновь "просыпаются". Они не знают человеческих страстей, но содержат в себе отпечатки чувств и желаний программиста. Через компьютерные программы овеществляется идеальная мысль человека. Меняются технологии, меняется элементная база компьютеров. Большие надежды ученые возлагают на будущие фотонные компьютры, в которых вместо электронных сигналов будут взаимодействовать световые потоки. И если верно, что мир не может не измениться, если делать что-нибудь постоянно и достаточно долго, то, возможно, наступит день, когда еще одно порождение разума сможет самостоятельно разглядывать свои ускользающие отражения. И, может быть, именно в той будущей космической игре света и тени откроется предельный смысл мира и предназначение человека. В каком из снов разгадан ключ? Рассмотрим алгоритмически-лингвистическое моделирование процесса жизнь - сон (здесь под жизнью условно понимаем явь). Как уже неоднократно подчеркивалось, жизнь и сон в своей аналогии (особенно в творческом восприятии) заходят так далеко, что их следует считать проявлениями одной и той же алгоритмической процедуры. Эта процедура рекурсивно вызывает саму себя,

и только значения локальных переменных внутри вызванной процедуры определяют периоды бытия (жизнь или сон). Локальная переменная - зто переменная величина, возникающая каждый раз при вызове процедуры, и только операторы, выполняемые внутри данной вызванной процедуры, могут менять ее значения. С исчезновением вызванной процедуры исчезает и соответствующая локальная переменная. Подробно с тонкостями программирования с введением локальных и глобальных переменных можно познакомиться в книге известного голландского специалиста Е. Дейкстры "Дисциплина программирования" (95). Человек служит интерпретируемой машиной для этой процедуры. Он проходит через жизнь все свои сны. Его восприятие реальности субъективно. Поэтому следует ввести глобальную переменную, пропускаемую через все вызовы процедур, принимающую значения жизнь или сон и выражающую осознание человеком момента своего существования. Разум анализирует текущую ситуацию (значения локальной переменной) и старается с наибольшей степенью достоверности определить значение этой переменной и присвоить его глобальной переменной. Это древний защитный рефлекс. Законы изменения значений жизнь и сон достаточно сложны и определяются психикой рассматриваемого индивидуума. Но, по меньшей мере, всегда после просыпаний сознание убеждено, что наступила жизнь. С учетом сказанного выше в условном алгоритмическом изобразительном языке программа, моделирующая жизнь - сон , имеет следующий вид:

ПРОГРАММА жизнь - сон; глобальная переменная v: (жизнь, сон); ПРОЦЕДУРА Р (х: (жизнь, сон)); локальная gеременнал и: (жизнь, сон); НАЧАЛО и:-х; ГЕНЕРИРОВАТЬ (и) l: ЕСЛИ и жизнь ТО вызвать Р (сон) ИНАЧЕ вернуться; v: жизнь; ГЕНЕРИРОВАТЬ (и); ПЕРЕХОД НА l КОНЕЦ (процедуры Р) НАЧАЛО (тело программы) вызвать Р (жизнь) КОНЕЦ

Здесь и - локальная переменная. При каждом вызове процедуры Р создается своя новая переменная

=======================================================

(95) Дейкстра Е. Эссе о понятии область действия переменных // Дисциплина программирования.- М.: Мир.

=====================================================

под именем и, доступная внутри вызванной процедуры. С исчезновением процедуры исчезает и локальная переменная. Переменная v глобальна, она передается от процедуры к процедуре и определяет субъективное восприятие жизни и сна. Величины и и v можно было бы считать наборами переменных, соответствующих процессам жизни и сна. Только для удобства и упрощения считаем их здесь одномерными переменными. Процедура ГЕНЕРИРОВАТЬ (и) задает действия, которые выполняются при заданном значении и. Можно считать, что эта процедура генерирует текст, соответствующий рассматриваемому периоду существования. Команда вернуться означает закрытие процедуры Р. После завершения выполнения вызванной процедуры вызывающая процедура продолжит свою работу, начиная со следующей после вызова команды. Значения переменной v могут меняться процедурой ГЕНЕРИРОВАТЬ. Единственное, что всегда выполняется,- установка v на жизнь после окончания сна. В этой программе сон - особый период жизни. Последовательность выполнения команд в программе жизнь - сон следующая:

вызвать Р (жизнь); жизнь и1: жизнь;

ГЕНЕРИРОВАТЬ (жизнь);

вызвать Р (сон);

сон и2: сон;

ГЕНЕРИРОВАТЬ (сон);

вернуться;

жизнь v: жизнь;

ГЕНЕРИРОВАТЬ (жизнь); * вернулись к значе

нию и1 жизнь *

жизнь

вызвать Р (сон); сон и3: сон;

ГЕНЕРИРОВАТЬ (сон);

вернуться; жизнь v: жизнь;

ГЕНЕРИРОВАТЬ (жизнь);

вызвать Р (сон);

сон и4: сон;

ГЕНЕРИРОВАТЬ (сон);

вернуться;

Как видим, жизнь сменяется сном, сон жизнью - и все повторяется вновь. Произведем следующее преобразование программы жизнь - сон: заменим везде слова жизнь на сон, а сон на жизнь. Тогда сон будет главной процедурой, периодически вызывающей жизнь. Получаем симметричную программу сон - жизнь. В ней жизнь - некоторый период, существующий внутри первого вызова сна. Какая из программ (жизнь - сон или сон - жизнь) адекватно моделирует действительность? Об этом много рассуждали философы от античности до наших дней. Все дело только в симметричной замене имен. Такое преобразование иногда используют как литературный прием. Для героя рассказа В. Брюсова "Теперь, когда я проснулся" главным был сон. В своих снах он безнаказанно совершал ужасные злодеяния. Это занятие так его увлекало, что он научился специально вызывать сны. Жизнь была только короткой необходимой подгоговкой ко сну и тоже воспринималась как этап сна. В итоге он в реальной жизни совершил кровавое убийство, думая, что все происходит во сне. Произошло несоответствие значений глбальной переменной, определяющей субъективное восприятие действительности, и локальной, задающей фазы реальности. У Борхеса в рассказе "Книга руин" маг снов в конце жизни понял, что он только призрак, который видится кому-то во сне. В том сне, начавшемся вызовом программы сон - жизнь, жизнь и сон мага были только подпрограммой процедуры ГЕНЕРИРОВАТЬ (сон). Граница между действительностью и сном может быть расплывчатой, не обозначенной четко. Поэтому часто авторы задают постепенную трансформацию значений тех или иных переменных в свою противоположность. Для моделирования подобных явлений необходимо вводить градацию степеней сна и ральности. Например, можно считать сон выражаемым отрицательным числом, а жизнь - положительным. Чем ближе сон к нулю, тем он ближе к жизни. И наоборот, жизнь переходит в сон, если значение жизни постоянно уменьшается. Если ввести несколько дополнительных переменных, легко модифицировать программу жизнь - сон таким образом, чтобы локальная сигнализирующая переменная и постепенно изменялась, переходила в свою противоположность. Если при этом значения v не менять, получим процесс, описывающий постепенное изменение жизни на сон, а сна на жизнь, и при этом человек в конце концов воспринимает себя во сне, а свою прошлую жизнь с удивлением осознает как сон. Такой эффект достигается в случае, если процедура ГЕНЕРИРОВАТЬ (сон) порождает текст, связанный с определенными событиями, временем и местом, а ГЕНЕРИРОВАТЬ (жизнь) порождает текст с другими атрибутами существования. Тогда в результате выполнения указанного преобразования человека со значением v, равным жизнь, вступает в процедуру ГЕНЕРИРОВАТЬ (сон). В силу ограниченности объема изложеиия мы не приводим подробное описание этой программы. Такое преобразование также описывалось в литературе. Пример - уже упоминавшийся рассказ Кортасара "Ночью, на спине, лицом кверху". Как задать постепенный переход одного объекта в другой мир, например объект из жизни включить в сон? Для этого нужно совершить следующие изменения в программе жизнь - сон. Локальная переменная и не затрагивается. Зато глобальная переменная, соответствующая

бытию объекта, заменяется на две связанные компоненты. Первая свидетельствует о степени присутвия в жизни, а вторая определяет степень принадлежности ко сну. Каждый раз во время сна необходимо уменьшать первую компоненту и увеличивать вторую. Процедура ГЕНЕРИРОВАТЬ реагирует на эти изменения, порождая соответствуюшие описания погружений в сон. Отличие этого преобразования от предыдущего, описанного выше, в том, что меняется сам человек, а не мир. Аналогичным образом, выполняя согласованные действия с двумя двухкомпонентными переменными, можно добиться синхронной замены объектов из сна и жизни. Это распространенный прием в литературе. Иногда сон заменяется зеркалом или книгой. Аналогом сна выступает таинственное зазеркалье или текст волшебных книг. В рассказе Брюсова "Зеркало" с переменным успехом борются за право присутствия в мире две женщины - реальная и ее зеркальное отражение. В рассказе Кортасара "Аксолотль" человек, пристально наблюдающий в аквариуме неподвижное лицо водной личинки, вдруг ощущает себя поменявшимся с ней местами.

"Я видел очень близко, за стеклом, неподвижное лицо аксолотля. Без перехода, без удивления я увидел за стеклом свое лицо, вместо лица аксолотля увидел за стеклом свое лицо, увидел другую сторону стекла. Потом мое лицо отодвинулось, и я понял... Я был аксолотлем и теперь мгновенно узнал, что никакое понимание невозможно" (96).

Если в процедуре ГЕНЕРИРОВАТЬ (жизнь) описывать определенные события и с некоторым опережением задавать их в процедуре ГЕНЕРИРОВАТЬ (сон/зеркало), получим эффект вещих снов (зеркал, книг). Аналогичное можно выполнить и с прошлым. Если постепенно сближать описания событий в этих двух процедурах и в итоге генерировать один заключительный текст, получится как бы слияние предсказанного будущего (или известного прошлого) с настоящим. Подобный прием наблюдаем у многих писателей. Маркес в своем рекурсивном романе "Сто лет одиночества" заканчивает повествование эпизодом, когда последний из рода Буэндиа расшифровывает последние страницы волшебной книги Мелькиадеса, оказавшейся описанием событий рода Буэндиа и города Макондо. По мере приближения к концу поднимается ураган, тоже описанный в книге, и с последней строчкой все исчезает - город Макондо, род Буэндиа и вещая книга. Опять у Борхеса в рассказе "Чернильное зеркало" правитель зачарованно наблюдает собственную смерть в чернильном отражении. Когда палач в зазеркалье опускает меч на голову осужденного, правитель тоже падает мертвый. В "Мастере и Маргарите" Булгакова события прошлого алгоритмический модуль Иешуа - Пилат - вызываются из основной темы. Здесь действует одна рекурсивная процедура Р (х), функционирующая аналогично программе жизнь - сон. Процедура Р (Мастер и Маргарита) вызывает процедуру Р (Иешуа и Пилат). В конце все времена встречаются в последнем пристанище. Можно пойти дальше. Любые игры с переменными допустимы. Можно задавать независимые или зависимые друг от друга изменения локальных и глобальных переменных в программе жизнь - сон. Можно в качестве имен добавлять новые миры. Таким способом можно получать странные переходы жизни в сон,

============================================================

(96) Кортасар Х. Другое небо.- С. 70.

(97) Анисимов А. В. Информатика. Творчество. Рекурсия.- С, 136 - 151.

=====================================================

сна в жизнь, исчезновения и появления жизни или сна, другие измерения, метущееся мелькание или медленное таяние глобальных объектов среди снов и жизни. Это эксперименты для будущего XXI в. Путь указан. Таким образом, писатели и сны убетдают: бытие инвариантно относительно дискретно-непрерывных преобразований симметрии жизнь-сон-зеркало-жизнь. Все дело только в двух названиях, нескольких переменных величинах и законах их изменения. "Быть может, всемирная история - это история различной интонации при произнесении нескольких метафор" (98). Перейдем к рекурсивным снам. В процедуре Р (х) сон вызывается после сравнения локальной величины и со значением жизнь. Такое однозначное сравнение происходит только а случае абсолютно нормального функционирования процессов жизни и сна. Но часто механизм запуска сна задается более сложными законами; например, возможен вызов сна в процессе сна. Поэтому в описании программы жизнь - сон следует заменить условие ижизнь на предикат а(х), учитывающий и другие возможности вызова сна. Явное задание для этого предиката физиологам еще неизвестно.

ПРОГРАММА жизнь - сон; глобальная переменная v: (жизнь, сон); ПРОЦЕДУРА Р (х: (жизнь, сон)); локальная переменная и:(жизнь, сон); НАЧАЛО и:х; ГЕНЕРИРОВАТЬ (и); l: ЕСЛИ а(и) ТО вызвать Р (сон) ИНАЧЕ вернуться; v: жизнь; ГЕНЕРИРОВАТЬ (и); ПЕРЕХОД на l; КОНЕЦ (* процедуры Р *) НАЧАЛО (* тело программы *) вызвать Р (жизнь) КОНЕЦ

Как уже отмечалось, предикат а (и) может принимать значение истина и в случае, когда и равно сон. Поэтому возможны рекурсивные сны. Например, задаваемые следующей последовательностью операторов, образованных при выполнении программы.

========================================================

(98) Борхес Х. Л. Сфера Паскаля// Проза разных лет.- С. 202.

=====================================================

* Погружения в сон идут внутри сна, поэтому они часто не фиксируются сознанием. Окончание сна всегда сопровождается установкой значения глобальной переменной v, равного жизни. Несоответствие сна и установки на жизнь вызывает сильное чувство страха.

СОН ЧАРТКОВА

Н. В. Гоголь. "Портрет вызвать Р (жизнь); и1.: жизнь; ГЕНЕРИРОВАТЬ (жизнь)

...Таким образом, Чартков совершенно неожиданно купил старый портрет... Он опять подошел к портрету, с тем чтобы рассмотреть эти чудные глаза, и с ужасом заметил, что они точно глядят на него...

вызвать Р (сон); и2.: сон; ГЕНЕРИРОВАТЬ (сон); пусто вызвать Р (сон); и3.: сон; ГЕНЕРИРОВАТЬ (сон); пусто

вызвать Р (сон);

и4.: сон;

ГЕНЕРИРОВАТЬ (сон);

... Он видит ясно: простыни уже нет... портрет открыт весь и глядит мимо всего, что ни есть вокруг, прямо в него, глядит просто к нему вовнутрь. У него захолонуло сердце. И видит: старик пошевелился и вдруг уперся в рамку обеими руками... Чартков силился вскрикнуть - и почувствовал, что у него нет голоса, ...- видно, старик вспомнил, что не доставало одного свертка...

вернуться;

Полный отчаяния стиснул он всею силою в руке своей сверток, употребил все усилие сделать движенье, вскрикнул - и проснулся.

v: жизнь; ГЕНЕРОРОВАТЬ (сон);

Холодный пот облил его всего: сердце его билось так сильно, как только можно было биться;... "Неужели это был сон?" - сказал он, взявши себя обеими руками за голову... И видит он: это уже не сон: черты старика двинулись, и губы его стали вытягиваться к нему, как будто бы хотели его высосать... С воплем отчаяния отскочил он - и проснулся.

вернуться v: жизнь; ГЕНЕРИРОВАТЬ (сон);

"Неужели и эго был сон?" С бьющимся на разрыв сердцем ощупал он руками вокруг себя. Да, он лежит на постели в таком же положении, как заснул. Пред ним ширмы; свет месяца наполнял комнату... Итак, это тоже был сон... И видит ясно, что простыня начинает раскрываться, как будто под нею барахтались руки и силились ее сбросить. "Господи боже мой, что это!" - вскрикнул он, крестясь отчаянно, и проснулся.

вернуться; v: жизнь,' ГЕНЕРИРОВАТЬ (жизнь);

Поделиться с друзьями: