Записки программиста А.
Шрифт:
— Зато у нас пив… — начал говорить программист А, но осекся и с удивлением уставился на приятеля.
Приятель виновато развел руками. Игра по телевизору закончилась, Celtics проиграли 88:93. Было уже поздно, и бар опустел. Приятели расплатились с усталым барменом и вышли на огромную безлюдную парковку у местного молла. Пронизывающий ветер раскачивал фонари, бросавшие призрачный свет на несколько одиноких машин. Изменяющиеся тени бессмысленно скользили по размеченному асфальту парковки. Кроме них двоих, вокруг не было видно ни души. Они распрощались, и каждый пошел к своей машине.
А все-таки, мне здесь нравится, — думал
Что-то было не так с этим выводом, но думать не хотелось.
Dark They were, And Golden Eyed…
(RayBradbury)
Они были смуглые и золотоглазые. Он работал в группе разработки над созданием кода. Она работала в QA, и этот код тестировала, набирая длинными смуглыми пальцами команды на клавиатуре в своей небольшой рабочей комнате на шестом этаже. Он был хорошим разработчиком, и его код был обычно тщательно продуман и добросовестно проверен, и ошибки были нечасты. Он находил удовольствие в написании красивого кода, в уникальном сочетании эстетики и функциональности, которое, может быть, из всех видов искусства только программирование способно воплотить. Он старался, чтобы его код даже выглядел красиво на распечатках, и для этого часто форматировал написанное, сдвигая строчки право или влево, создавая затейливый рисунок. Его код представлялся ему тончайшей паутиной, секрет плетения которой знал только он.
Они были вместе не первый год, и она знала его привычки и особенности его кода. Она не до конца понимала, что этот код делает и для чего он предназначен, но она всегда чувствовала, что надо проверить в первую очередь, и это чувство редко ее подводило. Обнаружив ошибку, она торопилась сообщить ему, прежде чем регистрировать ее в системе. В этом не было особого смысла, но они находили удовольствие в том, чтобы обсудить ошибку друг с другом до того, как о ней узнают все, и она будет отправлена по стандартному пути исправления. Ошибок было немного, и они были не очень серьезными и легко исправимыми.
В обеденный перерыв они вместе спускались на первый этаж, в кафе, и, не торопясь возвращаться к работе, шутили и смеялись с другими, такими же золотоглазыми, как они, и бронзовые звуки их языка медленно замирали, отражаясь от стекляных стен кафетерия, и казалось, что ничего никогда не изменится.
Но однажды ночью она проснулась от странного чувства. Он не спал и смотрел на нее.
— Ты кричала во сне, — сказал он.
— Мне снился сон, — ответила она, напрягая память, чтобы удержать ускользающие детали. — Это был мужчина, программист… Очень странного вида…
— Да? И что же в нем было странного? — с недоверием спросил он.
— Глаза… У него были серые глаза. И светлые волосы, — медленно произнесла она.
— Разве такое бывает? — удивился он. — Знаешь, наверно, тебе нужен отдых. Думаю, ты могла бы взять несколько дней отпуска.
— И я тестировала его код, — продолжала она, не обращая внимания на его слова.
Казалось, она задержала дыхание, чтобы подольше оставаться под водой своего сновидения.
— И в нем были ошибки, — почти шептала она. — Непонятные ошибки, совершенно необъяснимые ошибки. И они были в самых неожиданных местах. И…
Она
— И я не знала, что делать! — выдохнула она. — Это было так неожиданно. И необычно…
— И что же было дальше? — стараясь придать голосу безразличное выражение, спросил он.
— Я не знала, что делать, — сказала она. — Я даже не знала, в чем именно были эти ошибки. Я совершенно не понимала, как их можно будет исправить. Это было так не похоже на твои ошибки. С твоими ошибками всегда все так просто и ясно… А здесь — казалось, что человек, написавший этот код, совершенно не думал о том, что пишет. Ни разу не просмотрел свой собственный код… Даже не протестировал его…. Разве такое возможно? И я пошла в его рабочую комнату, чтобы с ним посоветоваться…
— И что? — спросил он напряженно.
— Я сказала ему о том, что я нашла. И он посмотрел на меня своими серыми глазами, и улыбнулся. И сказал…
Она смотрела перед собой, вспоминая детали сна.
— Что он сказал? — спросил он почти раздраженно.
— Он сказал, что у меня красивые золотые глаза…
— Ну хватит! — неожиданно резко перебил он. — Завтра же возьмешь отпуск.
Она молчала. Он встал и пошел на кухню выпить стакан воды.
— Ну что за народ! — ругался про себя программист А. на следующий день. — Двенадцать ошибок в моем коде! Уж в последний день перед отпуском могла бы расслабиться! А глаза у нее действительно ничего…
Многопользовательская операционная система с разделением времени работала как часы. Центральный процессор генерировал временные кванты, а системные службы распределяли их между пользовательскими процессами в соответствии с присвоенными приоритетами.
Неожиданно один из пользовательских процессов дал сбой по делению на ноль и завершился прерыванием. Контроль перешел к следующему процессу, который этого не ожидал и был вытеснен из памяти на диск, так и не успев установить флаг продолжения. Несколько процессов одновременно перешли на холостые циклы в ожидании установки флага. Системная служба попыталась подгрузить соответствующие инструкции, но скорость системной шины не давала такой возможности. Система зависла.
Программист А., который печатал одной рукой на клавиатуре, смотря при этом не на экран, а на распечатку, лежащую на коленях, а другой рукой листал документацию и при этом что-то объяснял молодому сотруднику, внезапно остановился и замолчал. Сотрудник, подождав минуту и решив, что разговор закончен, пожал плечами и вернулся к своему компьютеру. Оставшись один, программист А., не меняя положения тела и направления взгляда, медленно протянул руку к бутылке пива, спрятанной за монитором, поднес ее ко рту и сделал глоток.
Поступивший поток дополнительных данных заставил один из процессов выйти из холостого цикла. Это дало возможность служебному процессу перехватить контроль, загрузить нужный сегмент кода и передать ему управление. Заметив, что флаг установлен, остальные процессы вышли из холостых циклов и возобновили выполнение. Система вернулась в нормальный режим.
— Бывают же сбои… — подумал программист А., принимаясь снова стучать по клавиатуре, читать распечатку и листать инструкцию.