Шрифт:
Все работало превосходно! Я чуть было не сошел с ума от радости. Тогда у меня и возник проект автопрограммирования в глобальных масштабах. Я видел перед собой язык программирования пятого поколения, то есть систему с неформальным общением и возможностью решать задачи не последовательным перечислением элементарных или макроэлементарных действий, а посредством точного изложения условия задачи. Этот или подобный мир можно настроить таким образом, чтобы он генерировал автокод не спонтанно, а согласно потребностям. Но для этого нужно было проследить весь процесс инфоволюции.
Однако, справедливости ради, стоит заметить, что меня увлекала не столько идея языка программирования пятого поколения, сколько миросоздание в чистом виде без иных мотивов и целей.
Я жил словно в радужном сне, но в то же время чувствовал, что такая идиллия не может продолжаться вечно. И она закончилась в тот день, когда ко мне снова пришли мои друзья. Они отдали мне трехдюймовую дискету и попросили запустить имеющийся на ней файл на моем симуляторе. В качестве эксперимента. Они заверили меня, что ничего плохого не произойдет. Тогда я еще верил своим друзьям.
В моем Эдемском Саду росло дерево – динамическая библиотека, ядро виртуальной машины, тот самый код, который поддерживал функционирование всего мира. Я запретил любой системе заимствовать код ядра во избежание самоосознания, как потенциальной угрозы зацикливания. Еще я опасался, что инфосистема, взявшая код ядра, сама станет строить примитивную виртуальную машину внутри симулятора, что приведет к излишнему расходу ресурсов, затормозит и исказит развитие моего мира в целом.
А запущенный с дискеты файл оказался стелс-вирусом. Обманув фаговые системы, он прогрыз дырку в защите и заставил Еву внедрить в себя код ядра. Ревизор ядра заметил несовпадение контрольной суммы и тут же обнаружил по циклическому коду присутствие вируса. Но пока дырка была залатана, Ева, пользуясь блоком совместимости, успела передать часть кода Адаму. Фаги уничтожили привнесенный вирус, но он оставил после себя несколько полиморфных копий.
Так мой Сад был осквернен. Я снова остановил эмуляцию, изгнал Адама и Еву на немодифицированное пространство и выставил пятьсотдвенадцатибайтный ключ на вход. Я проанализировал код Адама и Евы и пришел к выводу, что они могут самопроизвольно размножаться. Для такой инфосистемы это было весьма сложной функцией, ведь приходилось избирательно передавать часть кода, присущего обоим родителям, способного к инфоволюции до уровня оригинала. К тому времени файл Адама занимал 6,23 мегабайта, а Евы – 5,78. При интенсивном размножении эти существа могли быстро заполнить весь мой винчестер. Тогда я создал пакет своих вирусов, способных уничтожать существа по отметке времени. Я долго экспериментировал с периодом жизни существ. Сначала я установил его равным девятистам годам модельного времени, но затем (особенно в последние годы, когда их стало слишком много, а я, даже купив четвертый винчестер, испытывал недостаток в свободной памяти на диске) медленно опустил до семидесяти в среднем.
Мой мир не рухнул от вируса. Он стал даже лучше… в каком-то смысле. В зацикленном на себя Саду я все еще по наивности пытался внедрить старые протопрограммы Евы и Адама, но они оказались слишком примитивными для усложнившегося мира. Тогда я решил рискнуть. Я привил флоре и фауне Сада способность к размножению из кода Адама, измененного вирусом, а прикладным ангелам из оптимизационного пакета – способность к уничтожению этих видов и, сломав немодифицированное пространство, размножил Сад на весь виртуальный мир. Сам же Сад я уничтожил.
Конечно, склонированный со случайными модификациями, мой мир не был так хорош, как бы он мог быть, если бы эволюционировал из расширяющегося с каждым мгновеньем Сада. Но это был единственный способ вообще сохранить его.
И тогда, поставив модельное время на максимум, я проследил общую тенденцию инфоволюции моего мира. Убедившись в отсутствии деструктивных логических цепей, я успокоился и стал мало-помалу все больше внимания обращать на реальную жизнь. Свои отношения с друзьями я разорвал, любимой девушки у меня не было, работа шла кое-как, и, главное, мои доходы начали резко падать. Я продал квартиру и переехал в столицу работать администратором банковской сети. Моделирование я остановил только один раз – на время переезда.
Войдя в привычное русло, я даже несколько остепенился. Бывали моменты, правда совсем уж редко, когда мне казалось, что мне надоела эта затея. Наверное, сказывалась обычная усталость. Несколько раз я пытался начать роман с девушками, но отношения всегда прерывались – по моей инициативе.
В конце концов, меня начали беспокоить характеристики моей машины. Дело не в мощности процессора – моделируемое время может быть сколь угодно медленным по сравнению с фактическим, а вот место на жестком диске не может расти неограниченно. Если объем автографики почти уже не увеличивался, то автокод рос потрясающими темпами. Я искал выход – копил деньги на апгрейд своего компьютера.
А решение нашли они. Инфосистемы модельного мира изобрели сон. Я вновь стал терять интерес к реальному миру. Мое очередное помешательство длилось около месяца – я стал вял, апатичен и неинтересен окружающим. Но этот виртуальный сон стоил того! Заснувшее существо почти не потребляло вычислительных ресурсов, поэтому, когда половина моего мира спала, вторая половина жила в моделируемом времени, ускоренном в два раза. Но даже это не главное. Инфосистема во время подготовки ко сну упаковывала свой код и графику, занимая таким образом меньше места на диске. Просыпаясь, распаковывала. Сначала алгоритмы упаковки были примитивными, но быстрыми, что-то в стиле RLE. Затем у одних существ я заметил куски LZW, у других – Хаффмана, а третьи пользовались вообще доселе мне неизвестным (и весьма эффективным!) методом сжатия.