Пожиратель памяти

Фэндом:

Ориджиналы

Рейтинг:

G

Жанры:

Фантастика, Детектив, Повседневность

Размер:

Мини, 16 страниц

Кол-во частей:

6

Статус:

закончен

Описание:

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

Посвящение:

Крису Касперски и его хакерским (в хорошем смысле этого слова) книгам

Публикация на других ресурсах:

Где угодно, но пришлите, пожалуйста, ссылку

Примечания автора:

Куайн - компьютерная программа, которая выдаёт на выходе точную копию своего исходного текста.

1998 год - Околонаучные изыскания

      - А что, написать программу, которая выводит на монитор саму себя, слабо? – спросил Юра Гомеров, закуривая очередную сигарету.

      - Зачем? – поинтересовался Игорь Точилин, поправляя на переносице очки.

      Они стояли в курилке одного из НИИ, где фирма, в которой работал программистом Игорь, арендовала несколько комнат. Работники этой фирмы и сотрудники НИИ завидовали друг другу белой завистью, ведь «фирмачи» получали гораздо большую зарплату, но, работая в НИИ, можно было бесплатно выучиться в аспирантуре, спокойно написать диссер и защититься. До открытых оскорблений дело никогда не доходило, но очень часто «ниишевцы» рисовались перед «фирмачами» своими академическими знаниями, а «фирмачи», в свою очередь, как бы между прочим, рассказывали о том, в какой загранице они провели последний отпуск.

      - Просто для общего развития, - объяснил Юра. – Или тебе это совсем неинтересно?

      - Да что тут сложного, - пожал плечами Игорь. – Я приблизительно представляю, как это можно сделать…

      - Ну, так вперёд! – усмехнулся Юра, выбросил окурок в урну и вышел из курилки.

      Игорь последовал за ним…

      …До вечера он сидел за своим компьютером и отлаживал программу обработки запросов к какой-то сложной базе данных, время от времени исправляя свои же ошибки. А когда рабочий день подошёл к концу, на улице начался сильный ливень, поэтому Игорь, у которого не было личного автомобиля, решил задержаться на работе, пока не закончится дождь.

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

      Он запустил консольное приложение Builder и приступил к написанию программы.

      «Так, сначала напишем программу, которая выводит несколько строк какого-то текста», - размышлял Игорь, набивая код, выводящий на экран монитора фразу «Программа, которая печатает саму себя».

      Откомпилировал и запустив эту программу на выполнение, Игорь довольно усмехнулся, увидев искомую фразу на экране.

      «Теперь осталось поместить всю программу в параметры оператора вывода на монитор», - решил Игорь, скопировал весь текст программы и вставил его вместо текста «Программа, которая печатает саму себя».

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

      «Так-так-так, - обхватил руками голову Игорь. – Нужно сделать какой-то хитрый финт, и всё получится. А что, если попробовать записать программу в память, а затем считать её оттуда и вывести на монитор? И ещё, нужно не забыть стереть потом из памяти эту программу...»

      Он написал программу, выполняющую эти действия, и увидел на мониторе несколько строк шестнадцатиричного кода.

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

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

      …А потом он ещё что-то добавлял в свою программу, а потом ещё немного усовершенствовал её, и каждый раз ему казалось, что ещё чуть-чуть, и всё у него получится…

      …А на самом деле его программа начала записывать саму себя в конец последней программы, запущенной на выполнение, а так, как Игорь запускал на выполнение то одну, то другую программу на своём компьютере, то скоро его программа записалась в конце всех этих программ, а кроме того, и в конце всех системных программ. При этом она искала последние исправные ячейки в памяти, записывала туда своё содержимое, а через некоторое время стирала его. Она записывалась на последние исправные свободные ячейки жесткого диска, ОЗУ, видеоОЗУ, а так как программа эта запускалась из различных программ, то из-за частой записи-стирания последние ячейки памяти через некоторое время вышли из строя. Тогда программа при очередной записи нашла следующие последние исправные свободные ячейки и записалась туда…

      …Игорь почувствовал неладное только тогда, когда в нижней части экрана монитора появилась хаотическая мозаичная полоса, которая постепенно становилась всё шире и шире.

      «Монитор накрывается», - решил он и выключил компьютер.

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

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

      …Больше Игорь на работу в эту фирму не вернулся. Целый месяц он лежал в травматологии на вытяжении, а потом ещё месяц передвигался на костылях.

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

2013 год - Старый "винчестер"

      - Срочно распечатайте мне схему блока обеспечения бесперебойной работы с последними изменениями, – приказал своим подчинённым заведующий лабораторией специзмерений Юрий Викторович Гомеров.

      - А какие там изменения последний раз вносили? – поинтересовалась пожилая дама-конструктор.

      - На входе фильтры по питанию поставили и ещё, кажется, питание завели через другие контакты трансформатора, - объяснил Юрий Викторович.

      На некоторое время в комнате повисла тишина.

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

      - А ещё там какие-то дифференциальные каскады добавлены, - проговорил молодой электронщик Толик Сушко, рассматривая свой вариант схемы.

      - Так мы давно уже эти каскады убрали, - объяснил процессорщик Саша Бобрышев. – Они же постоянно перегорали…

      Юрий Викторович недовольно вздохнул.

      - Так, - сказал он, достав из папки потрёпанный оригинал схемы, где сам вручную по ходу настройки делал все изменения. – Анна Львовна, подкорректируйте у себя схему по моему оригиналу и распечатайте в двух экземплярах, а потом пусть все остальные у Вас её спишут себе на компьютеры. И, вообще, нужно уже завести архивный диск и на него сбрасывать все схемы и программы, с указанием даты внесения изменений.

      С этими словами Гомеров вышел и лаборатории и направился на склад.

      - Здравствуй, Ефимовна, - обратился он к кладовщице. – У тебя жёсткие диски есть?

      - Только бэушные, - ответила кладовщица и показала в дальний угол склада, где стояло несколько наполовину разобранных системных блоков. – Посмотри компьютеры, которые остались от той шарашкиной конторы, которая у нас лет пятнадцать назад офисы снимала. Они, когда съезжали, за аренду полностью расплатиться не смогли, пришлось у них компьютеры отобрать. Вот и лежит это барахло до сих пор, кому что нужно, то оттуда для своих нужд и свинчивает.

      Юрий Викторович подошёл к поставленным возле стены друг возле друга старым компьютерным блокам, многие из которых были со снятыми боковыми стенками и блоками и, увидев, что в одном из них ещё сохранился «винчестер», принёс этот блок на стол, за которым кладовщица выдавала материалы и комплектующие.

      - Вот этот «винт» на мою лабораторию запишите, - сказал он, достав из стоящей на столе жестяной коробки отвёртку и отвинчивая жёсткий диск от корпуса, а затем отсоединил от блока и старый SATA-кабель.

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

      - Толик, - обратился он к молодому специалисту. – Вот тебе диск, присоедини его к компьютеру, где есть старый SATA-разъём, отформатируй и сделай директории по каждому заказу. А потом пусть каждый туда все свои конечные файлы скинет…

      С этими словами завлаб начал складывать в свою сумку копии схем, монтажные инструменты и тестер. Затем он вместе с ведущим программистом Игорем Точилиным и старым силовиком Ильёй Павловичем поехал настраивать аппаратуру на местный метизный завод, прихватив с собой ноутбук и осциллограф.

      После ухода начальника оставшиеся сотрудники сразу же занялись своими делами. Анна Львовна рассматривала на своём компьютере какую-то кулинарную книгу, процессорщик Саша мирно заснул на рабочем столе, отодвинув в сторону клавиатуру, поэтому и Толик решил не спешить выполнять выданное ему задание.

      Он разобрал системный блок на старом компьютере, который служил работникам лаборатории для выхода в Интернет и, найдя на «материнке» этого компьютера старый SATA-разъём, подсоединил его к принесённому начальником диску, который сделал «мастером».

      «Ну, посмотрим сначала, что на этом диске есть интересного», - решил он и включил питание.

      На экране монитора появилась заставка загрузки системы.

      - С ума сойти: Windows 98! – вслух усмехнулся Толик. – Саня, иди, глянешь на раритет.

      - Зато под ней драйверы хорошо было писать, - объяснил Саша, подходя к компьютеру и протирая заспанные глаза. – Давай, глянем, что там, может, чем-то разживёмся.

      Старый «Офис», ещё более старый Builder, куча текстовых файлов с заданиями на проектирование обработчиков запросов к какой-то базе данных, куча программ на Си…

      - Давай, лучше по личным каталогам пройдёмся, может, там что-то интересное найдём, - предложил Саша, которому быстро надоело рыться в чужих рабочих программах. – Вот, смотри, каталог «Моё», может, там есть что-то.

      В этом каталоге, действительно, оказалось много интересного. Тут была и обязательная для таких каталогов большая коллекция откровенно одетых девушек, и собрание таких популярных лет пятнадцать-двадцать назад фэнтези про Амбер и Земноморье, и куча песен любимца всех интеллектуалов тех лет Бориса Гребенщикова, и наивные старые компьютерные игрушки типа «Тетриса» и «Шариков»…

Дальше