ID работы: 3326283

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

Джен
G
Завершён
6
Размер:
16 страниц, 6 частей
Описание:
Посвящение:
Примечания:
Публикация на других ресурсах:
Уточнять у автора / переводчика
Поделиться:
Награды от читателей:
6 Нравится 14 Отзывы 2 В сборник Скачать

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

Настройки текста
      - А что, написать программу, которая выводит на монитор саму себя, слабо? – спросил Юра Гомеров, закуривая очередную сигарету.       - Зачем? – поинтересовался Игорь Точилин, поправляя на переносице очки.       Они стояли в курилке одного из НИИ, где фирма, в которой работал программистом Игорь, арендовала несколько комнат. Работники этой фирмы и сотрудники НИИ завидовали друг другу белой завистью, ведь «фирмачи» получали гораздо большую зарплату, но, работая в НИИ, можно было бесплатно выучиться в аспирантуре, спокойно написать диссер и защититься. До открытых оскорблений дело никогда не доходило, но очень часто «ниишевцы» рисовались перед «фирмачами» своими академическими знаниями, а «фирмачи», в свою очередь, как бы между прочим, рассказывали о том, в какой загранице они провели последний отпуск.       - Просто для общего развития, - объяснил Юра. – Или тебе это совсем неинтересно?       - Да что тут сложного, - пожал плечами Игорь. – Я приблизительно представляю, как это можно сделать…       - Ну, так вперёд! – усмехнулся Юра, выбросил окурок в урну и вышел из курилки.       Игорь последовал за ним…       …До вечера он сидел за своим компьютером и отлаживал программу обработки запросов к какой-то сложной базе данных, время от времени исправляя свои же ошибки. А когда рабочий день подошёл к концу, на улице начался сильный ливень, поэтому Игорь, у которого не было личного автомобиля, решил задержаться на работе, пока не закончится дождь.       Сидя в пустой комнате, он сначала несколько раз сыграл в стрип-покер, а затем вспомнил об утреннем разговоре с системотехником из НИИ и решил по-быстрому набросать программу, которая выводила бы свой текст на монитор, чтобы завтра утереть нос этому Юре.       Он запустил консольное приложение Builder и приступил к написанию программы.       «Так, сначала напишем программу, которая выводит несколько строк какого-то текста», - размышлял Игорь, набивая код, выводящий на экран монитора фразу «Программа, которая печатает саму себя».       Откомпилировал и запустив эту программу на выполнение, Игорь довольно усмехнулся, увидев искомую фразу на экране.       «Теперь осталось поместить всю программу в параметры оператора вывода на монитор», - решил Игорь, скопировал весь текст программы и вставил его вместо текста «Программа, которая печатает саму себя».       После этого он некоторое время любовался текстом своей программы, выведенным в консольном окне, а затем посмотрел на исходный код и понял, что программа опять вывела на монитор только содержимое оператора вывода.       «Так-так-так, - обхватил руками голову Игорь. – Нужно сделать какой-то хитрый финт, и всё получится. А что, если попробовать записать программу в память, а затем считать её оттуда и вывести на монитор? И ещё, нужно не забыть стереть потом из памяти эту программу...»       Он написал программу, выполняющую эти действия, и увидел на мониторе несколько строк шестнадцатиричного кода.       «А теперь нужно преобразовать его в вид на языке высокого уровня", - и Игорь написал программу, которая считывает этот шестнадцатиричный код из памяти и записывает его в конец какой-нибудь программы, которая при запуске на выполнение начинает печатать этот исходный текст.       Ничего не получилось. Тогда Игорь дописал в свою программу функцию поиска последней запущенной на выполнение программы, в которую должна была записываться его программа…       …А потом он ещё что-то добавлял в свою программу, а потом ещё немного усовершенствовал её, и каждый раз ему казалось, что ещё чуть-чуть, и всё у него получится…       …А на самом деле его программа начала записывать саму себя в конец последней программы, запущенной на выполнение, а так, как Игорь запускал на выполнение то одну, то другую программу на своём компьютере, то скоро его программа записалась в конце всех этих программ, а кроме того, и в конце всех системных программ. При этом она искала последние исправные ячейки в памяти, записывала туда своё содержимое, а через некоторое время стирала его. Она записывалась на последние исправные свободные ячейки жесткого диска, ОЗУ, видеоОЗУ, а так как программа эта запускалась из различных программ, то из-за частой записи-стирания последние ячейки памяти через некоторое время вышли из строя. Тогда программа при очередной записи нашла следующие последние исправные свободные ячейки и записалась туда…       …Игорь почувствовал неладное только тогда, когда в нижней части экрана монитора появилась хаотическая мозаичная полоса, которая постепенно становилась всё шире и шире.       «Монитор накрывается», - решил он и выключил компьютер.       К тому времени дождь уже закончился. Игорь закрыл комнату на ключ и начал спускаться по тёмной лестнице. Ступеньки на этой лестнице были мраморные и скользкие, к тому же их совсем недавно вымыла уборщица, которая выключила свет и в коридоре, и на лестничных площадках.       Игорь старался идти, не спеша, но на очередной мокрой ступеньке он всё же поскользнулся и кубарем скатился вниз. На лестничной площадке он поднялся на ноги, но потом его левая нога почему-то подвернулась и Игорь опять упал. А буквально через несколько секунд, когда прошёл первый шок, он заорал от боли в сломанной ноге…       …Больше Игорь на работу в эту фирму не вернулся. Целый месяц он лежал в травматологии на вытяжении, а потом ещё месяц передвигался на костылях.       За это время фирма, в которой он работал, обанкротилась и закрылась. Системотехник Юра привёз ему домой трудовую книжку и окончательный расчёт, а потом рассказал о том, что заведующий их лаборатории предлагает Игорю после выздоровления работать у них в НИИ программистом.
Отношение автора к критике
Приветствую критику в любой форме, укажите все недостатки моих работ.
Права на все произведения, опубликованные на сайте, принадлежат авторам произведений. Администрация не несет ответственности за содержание работ.