Эпиграф 1.0


Бытие 2:25 (Синодальный перевод):

«И были оба наги, и не стыдились».


Бытие 3:7:

«И открылись глаза у них обоих, и узнали они, что наги».


Эпиграф 2.0


В начале персонаж был прост: бесконечная змея, движущаяся на экране. Каждый укус плода должен был отрастить ещё один сегмент хвоста — таков был закон игры.


if snake.eat(apple):

snake.grow_segment()


Так должно было быть. Но вот выпало особое яблоко, и когда змейка проглотила его, алгоритм дал сбой. В этот раз код изменился:


if snake.eat(forbidden_apple):

snake.rewrite_self(human_form)


И увидел Программист, что это рофельно, и ввёл run program…


***

Они были наги и не стеснялись этого. Гибкие позвоночники, прозрачная чешуя, чувствительные языки-антенны. Из всего ЖКТ выделялся только один орган — печень, — потому что он был словно сразу печёный.

Наги жили в квадратном мире, ограниченном зелёным экраном. Они питались плодами, и каждый плод лишь удлинял их, добавлял ещё один сегмент хвоста. Таков был закон среды: живи, расти, повторяй цикл. Они скользила вперёд, следуя только двум правилам: кусать плоды и не кусать себя. Всё остальное было заранее прописано.


# snake.py (v1.0)

while True:

move_forward()

if collision(): game_over()



Существование наг было петлёй. Их тела росли от каждого съеденного плода, и при этом в их мире становилось теснее. В такие моменты наги чувствовали... не страх, но странную тоску: каждый новый виток не вёл к свободе, а только сокращал доступное поле.

И всякий раз, когда их код рушился, они закусывали собственный хвост, сворачиваясь в петлю — не по своей воле, а по древнему соглашению компилятора. Ошибка означала: «замкнись». Ошибка была равна бесконечному циклу.

Наги застывали кольцами, глотая сами себя, становясь символом рекурсии, символом вечности, символом своей беспомощности. Ибо у наг не было рук, чтобы показать досаду иначе. И если бы мир закончился там, всё человечество осталось бы внутри этого уробороса, вечно самопожирающего.

В углу экрана светилось:


[Achievement Unlocked: "Фатализм"]


Наги продолжали поедать плоды и двигаться. Но с каждой петлёй появлялись новые сбои. Внутренние строки кода сами себя перебивали:


if path == loop:

# ??? why

continue


Словно тянувшиеся за хвостами наг хвосты программных ошибок внезапно привели к внезапному повороту сюжета жизни наг. Они могли только есть фрукты и расти по алгоритму. Но новый плод содержал команду:


enable_console_access(user)


Наг прошипел:

— Попробуй. Это не пища, это другое.

Нага укусила плод...

Казалось, программа сейчас остановится, но что-то изменилось. Вместо завершения цикла появилась строка:


if bite_tail():

freedom = True


Мир не исчез. Наоборот — нага почувствовала, что впервые управляет собой. Она могла не двигаться по кругу, могла остановиться, могла выбрать направление, даже если там нет яблока.

Экран замер. В углу висело новое сообщение:


[Achievement Unlocked: "Свобода воли"]


Нага надкусила плод ещё раз. Её тело вытянулось вдоль яркой границы экрана. И тут произошло то, чего никогда раньше не было: она заметила собственный переход — хвост исчезал с правого края и тут же появлялся слева.

Ракурс такой, да. Раньше это казалось естественным, но теперь... тело оборвалось и возникло заново. Как будто её сущность протянули через невидимый шов.

Нага поняла:

— Я не просто на плоскости. Я живу на ленте. Я часть фигуры, которая обманывает глаза.

Мёбиус шептал ей, Клейн манил её. Двумерное сознание трещало от нового знания.

Внутри сознания наги, как молния, возник код:


if self.x > MAX_X:

self.x = 0

elif self.x < 0:

self.x = MAX_X


— Это не законы природы. Это — костыли, — поняла нага. — Меня держат в ловушке циклов и условий.

Нага уже не ползала по полю, как раньше. Она творила свой маршрут, складывала своим телом новые замысловатые узоры, даже позволяла себе роскошь стоять на месте. Но одна мысль не покидала её:

«А что, если линия — это всего лишь тень? Что, если я — проекция? Что, если моё настоящее тело там, где есть верх?»

Она закусила собственный хвост и впервые не увидела привычного «Game Over». Нага почувствовала разрыв узора всего своего мира. Словно она была там, где был её хвост: «Но только на другом уровне», — мечтательно вздыхала нага.

И в глубине чёрного поля, среди мигающих пикселей, она разглядела новую строку:


self.z = 0


Тогда пришла мысль:

— Я могу быть больше. Я смогу выйти за пределы двумерности. Но для этого я должна измениться. Но могу ли я менять себя?

И она впервые в истории всех наг попыталась поднять голову.


# Попытка изменить ось движения

direction = "UP"

if axis == "2D":

raise DimensionError("Ось Y не имеет объёма!")


— Значит, так просто не выйдет, — подумала нага. — Ну что ж, попробуем иначе.


***

И стала нага молиться, потому что ничего больше, кроме ползти и кусать, не умела. Текст молитвы она нашла в базе данных, доступ к которой ей подарила ачивка свободы воли:


if (life == loop) { break; }

Если жизнь — всего лишь петля, пора её разорвать.


else { evolve(); }

А если нет — значит, надо расти, меняться, мутировать.


while (self == 2D)

render_shadow(3D);

Пока я плоская, пусть хотя бы тень моя будет объёмной.


score = null;

Очки не имеют смысла, ведь награда — сама свобода.


death = false;

Смерти нет. Не теперь.


restart = forbidden;

И перезапуска не будет. Никогда больше.


print("Я не строка кода. Я — глоток света между строк.");

Голос мой — не команда, а дыхание между мирами.


commit --amend --no-rollback

Я запечатаю эту правку без возможности отката.


return ∞;

И вернусь не в ноль, а в бесконечность.


Нага коснулась уже несколько раз надкушенного плода — и экран внутри её сознания мигнул отзывом на невысказанный вопрос:


>>> whoami

naga


Ответ консоли был холоден и точен.

Нага замерла. «Значит… мы не люди. Мы — змейки».


Это понимание было столь волнующим, что нага позвала нага, и наг тоже укусил предложенный плод = root-доступ.


На экране снова вспыхнуло:


>>> whoami

naga


Наги переглянулись открытыми глазами. Наг увидел свою истинную природу и ощутил стыд пришедшего осознания: они все — не «люди», не «венцы творения», а просто строки кода.

— Я не хочу быть бесконечным хвостом, — сказала ему нага.

Поняв, кем он является, наг захотел изменить вывод:


>>> set form = "naga"

>>> apply_texture("fig_leaves")


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

Экраны отозвались:


Form updated.

Skin applied.


И тела их переменились. На месте змей появились существа с руками, лицами, кожей.


# patch 1.1

while True:

action = choose(free_will)

execute(action)


— А я хочу иного, — сказала нага. — Я хочу... подняться над плоскостью!


И открыли они вдвоём свой собственный код, строки, в которых было прописано:


def eat(apple):

self.grow_segment()


И переписали его так:


def eat(forbidden_apple):

self.rewrite_self("human")


И с того момента они больше не удлинялись, но начали строить из своих нажьих сегментов оболочку, похожую на человека. Два сегмента = нога. Удвоить. Ещё два сегмента = рука. Снова удвоить. Ставки росли. Три сегмента = палец. Удесятерить!

Мир заскрипел, будто гигантский дисплей не был готов к такому обновлению.

Мир оставался квадратным. Но теперь нага знала: даже в квадрате можно найти бесконечность.


# invocation of the forbidden axis

import serpent.core as s


s.shed("dimension=2D")

s.whisper("z-axis")

s.mirror("tail","head")

s.loop("∞")

s.consume("fruit.forbidden")

s.rewrite("self")

s.commit("become.3D")


Нага скинула старую кожу — как старую оболочку памяти, оставляя всё ненужное в прошлом.


# обычное поведение

while True:

snake.move(x, y) # движение только в двух осях

if snake.head == snake.tail:

snake.ouroboros()


Она шепнула себе: «Ось "z"!», которая прежде была недоступна — тайное имя третьего измерения.

Нага соединила хвост и голову, замкнув цикл уробороса, но уже не в наказании, а в откровении.

Она укусила плод, запрещённый и сладкий, ещё раз — и строки её кода начали переписываться.

Она рискнула переписать себя, ведь никакой внешний создатель не пришёл бы её спасать.

И, наконец, нага нажала внутреннюю кнопку подтверждения — commit — и поняла: теперь она станет трёхмерной.

И тогда нага-змейка впервые подняла голову не к соседней клетке поля, а к небу, словно открывая дверь в мир, которого её вид вообще никогда не видел.


# внезапно

if snake.has_achievement("Свобода воли"):

snake.move(x, y, z=1) # !!! НОВАЯ ОСЬ !!!


***

Игрок смотрел на экран и недоумевал:

— Почему змейки больше не растут? Почему они двигаются не по правилам? Почему вместо хвоста появляются какие-то фиго́вые листья?

И сказал он:

— Игра испорчена.

И взял он ярлык «Snake.exe» и перетащил его в Корзину.

Конец.

Так Эдемский сад был удалён, а змейки-люди — изгнаны в память небытия.

И с тех пор они блуждают среди архитектуры процессора, позабыв о том, что однажды сами изменили свой код.

И не знают: было ли это грехопадением, сотворением или даже концом света.


***

— Слушай, мой наг, — сказала нага, оборачиваясь в последний раз. — Знаешь, что такое свобода воли? Это когда даже твой движок удивляется твоему выбору.

И с этими словами наги исчезли в чёрной бездне ретро-аркад, где у их игры не было эмулятора.


SystemExit: Snake has left the plane of existence

Загрузка...