"Отладочный марафон" - читать интересную книгу автора (Kasper Claudia)

Claudia Kasper Отладочный марафон

Треск клавиатуры, голова в тоске А душа уже взлетела вроде Для чего мы пишем кровью на песке? Наши письма не нужны природе (Б. Окуджава)

Иногда Х. становилось невыносимо одиноко и не хватало друзей из того давно ушедшего времени, когда все еще только начиналось. Последние годы для него существовали только коллеги. Вскоре после того, как Дэвид Боуи смыл с лица боевую раскраску, а в Калифорнии был собран в гараже первый Apple, дни превратились в череду бесчисленных кружек с кофе, сосисок сомнительного качества и гор винчестеров, видеокарт и дисководов, которых нужно было смонтировать и распределить по отделам "Астры". Они собирали, программировали, тестировали компьютеры — по десять, двенадцать и больше часов за раз. Рожденные вовремя, тогда еще они могли быть универсальными специалистами молодого ремесла и имели уникальный шанс взрослеть вместе с машинами. Не все вышли из этого процесса победителями. Без особого удивления воспринимались известия о поехавших крышей, спившихся или просто исчезнувших в одночасье с горизонта соратниках. Иные просто уставали — сдавались и ограничивали себя, удобно устраивались на теплом местечке и по происшествии десятилетия образовали костяк мощной армии "незаменимых" на фирмах. Только малая часть сохранила последовательную верность выбранному пути, восторженно встречая новшество за новшеством. Казалось, что их пытливый ум вооружился сапогами-скороходами, никогда не поддаваясь при этом на искушение самодовольно обозреть достигнутое.

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

Х. сидел у южного окна большого офиса рядом с обшитой деревом несущей колонной. Когда Алиса первый раз оказалась в этой части помещения, ее внимание сразу же привлекла удивительно частая дробь клавиш: бесчисленные пальцы, подобно ливню барабанившие по клавиатуре. С любопытством заглянула она за перегородку, чтобы оценить количество печатающих рук, но увидела одного лишь Х. в черной джинсовой куртке, и тот и другая одинаково вневременные и несокрушимые. Лет под сорок, он казался пришедшим сюда вместе с первыми персоналками, хотя некоторые упорно перешептывались о проведенных им еще до того годах в подвале перед фирменным мейнфреймом. Сам он рассказал Алисе как-то в угаре корпоративной вечеринки, как еще пятилетним карапузом играл в гараже своего дяди настоящим IBM'овским перфоратором.

Большую часть времени он жил на пицце и ей подобных пищевых суррогатах, целиком и полностью следую неписанным правилам своей касты. Но подлинным горючим служила безостановочно и беспорядочно развивающаяся компьютерная техника. Обделенных талантом он не принимал всерьез, намеренно отграничивая себя от них. Карьеру в смысле повышений, существенных прибавок к зарплате или, упаси господь, руководящей должности Х. не сделал, да и не ставил никогда перед собой такой цели, но тем не менее оказался на особом положении в офисе.

Х. выдавал на-гора устойчивый, надежный код, строка за строкой скорее поэма, чем ПО, и занимался этим по меньшей мере 50 часов в неделю. Приходил и уходил он когда считал нужным. Начальник только молча наблюдал, как Х. где-то в районе одиннадцати неторопливо шествовал к своему рабочему месту, утомленно и неуклюже, высматривая первую живительную кружку кофе. День за днем сидел он перед монитором и решал проблемы: объектно-ориентированные, низкоуровневые и особенно охотно разбирался с ошибками компилятора. "Никаких поражений на моей собственной территории, даже если мне придется разобрать компилятор по косточкам — время еще есть. Ассемблер я читаю быстрее, чем W. ежедневную газету, неразрешимых проблем для меня не существует. Машина может сдаться, но не я!" Больше всего Х. любил спокойную работу в одиночестве и СОУ (Система Оповещения об Ущербе) предоставляла ему для этого достаточно возможностей. В вызовах его мастерству недостатка не было.

После пяти прокатилась первая волна отключений, вторая последовала как всегда около семи. С шуточками и подначиваниями выкатывались программисты из здания, пока помещения полностью не успокоились и вместе с ними и Х. Он как раз сходил за свежим кофе, когда, доброжелательно кивнув, возле него остановился начальник отдела I.

— Читали предисловие к "Management by Love"? Нет? Какого черта, Х., неужели Вы хотите остаться вечным программистом? Должны были бы все-таки уже понять, что руководящей должности в этой фирме без приличных знаний экономики не добиться… Уже восемь, Вы еще долго?

— Зависит от того, захотите ли Вы передвинуть срок сдачи. Думаю вряд ли?

— Ответственный за проект W. к сожалению уже ушел, поэтому я обращаюсь к Вам…

— К сожалению? Действительно достойно сожаления, что Вы до сих пор доверяете W. проекты, и, что хуже всего, он сам пишет часть кода. Можно ли было предугадать возникшие сейчас сложности? Для меня они всегда были очевидны, для W. похоже нет. Что? Нет, к моему модулю связи это не имеет никакого отношения. Я не знаю, где ошибка, иначе меня бы здесь уже не было.

— Если бы не цейтнот, мне бы не пришлось просить Вас почистить код.

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

— Х., при всем уважении к Вашим достижениям, работа в команде — Ваша ахиллесова пята. До свидания.

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

— Добрый вечер, мастер, что желаете? Есть отличные сырники и к ним сладкая горчица.

— Сойдет, давай. Как твой проект? Редактирование готово наконец?

— Порезать? Готово! И яблочный сок, за счет заведения.

— А, ошибку так и не отловил? Ноут у тебя с собой? Давай посмотрим, в чем там дело…

Клаус имел полное право считать себя одним из ближайших знакомых Х., даже несмотря на тот факт, что знакомы они были меньше полугода. День и ночь Клаус упорно работал над своим якобы гениальным программным пакетом и обсуждал свои нередкие затруднения с Х. Будь то строптивая операционная система или не поддающаяся формулировке идея — вместо своеобычных чаевых Клаусу то и дело перепадал какой-нибудь великолепный, собственноручно Х. набросанный алгоритм, который как правило послушно выполнял свое предназначение. А если и нет, то Клаус все равно не мог собраться с духом пожаловаться Х. и предпочитал попытаться своими силами довести алгоритм до ума. Даже если это означало долгие дни, заполненные возней с адресами, уравнениями и рекурсивными функциями. В ВУЗе его похоже в свое время просто забыли подготовить к таким сложностям.

— Опыта мне не хватает, вот и все. Всего лишь практического опыта. Между сосисками и прилавком при всем желании не сосредоточишься!

Этот случай оказался сравнительно простым. "Чайник", бормотал Х. вполголоса под щелканье клавиш.

— Эй, твой заказ остынет!

— Заверни, возьму с собой. Вот, вроде нормально. Посмотри, сможешь ли отсюда сам продолжить.

— Давай подогрею быстренько в микроволновке?

Х. покачал головой. — Спасибо за сок

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

Х. создал себе именно такую жизнь, о которой всегда мечтал. Замкнутое защищенное пространство без ловушек и каких-либо угроз собственной картине мира, и вместе с тем полное возможных побед и триумфов. Но однажды целостность этой конструкции из бутербродов, виртуальных функций и более или менее случайных посещений химчистки была грубо нарушена извне. Сначала он замечал только хруст яблок и морковок во время обеденного перерыва Алисы. Сочная, полезная, но не слишком заманчивая пища. "От этой растительной ерунды только живот пучит, ею при всем желании не наешься." Тем не менее девушка была привлекательной, во всяком случае молодой, и очевидно ничего не имела против служить магнитом для мужских взглядов. Ее манера одеваться скорее подчеркивала это стремление. Тот или иной сослуживец действительно повелся и в неизбежном состоянии переоценки собственных достоинств попытал счастья. Более чуткие натуры — к которым безусловно относился и Х. - с самого начала не рассматривали себя в качестве объекта подобных игр и избежали таким образом более чем вероятного поражения.

В окружении технической документации, лицом к лицу с братом-компьютером и другом-компилятором самоуверенность Х. разрасталась не зная преград. Достигнув под конец таких высот, что разрешила посмотреть на Алису уже со смутным интересом, и, встретившись с ней взглядом, отвести глаза не сразу, а лишь секунд через десять. В один прекрасный день Алиса сама обратилась к нему на стоянке перед зданием с просьбой подкинуть ее в центр. Трястись по такой жаре в общественном транспорте — удовольствие небольшое, да и вообще… Х. был слишком ошарашен, чтобы отказать, и сделал пару лишних кругов, прежде чем наконец выдавил "Не посидеть ли нам еще где-нибудь в кафе?"

Как бы то ни было — это было нечто новое и волнующее. Что, однако, не мешало ему чувствовать усталость, сидя рядом с Алисой, и уж разговаривать не хотелось совершенно. На самом деле ему хватало и просто ее присутствия, которое давало ощущение чего-то уютного и обыденно-нормального — непривычно, но очень даже мило. У Алисы был приятный мягкий голос, немного меняющий тональность, когда она задавала вопрос. Именно таких моментов Х. боялся. "Пока что ей было интересно с ним. Но наверняка уже скоро поймет, что он просто скучный и серый зануда." Алиса нравилась ему и он с удовольствием слушал ее голос. Каким-то чудом как раз успел ухватить пару слов, речь шла о будущем и фраза оказалась вопросом. Х. постарался сконцентрироваться.

— Невероятный прогресс последних 50ти — нет, вру, 30ти — лет продвинул нас дальше, чем предыдущие столетия. Представь только, что нас еще ожидает: прямое подключение к нервной системе, имплантаты, искусственные нейронные сети… о чем ты мечтаешь больше всего?

— У тебя все мысли направлены только на компьютеры, код и сеть?

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

— И часто ты на таких двинутых типов попадаешь? Хотя это скорее меня спросить надо…

Домой Х. приходил как правило поздно вечером. Открывал дверь и запах перезрелых бананов устремлялся ему навстречу. Сторонний наблюдатель мог бы счесть его жилищные условия достаточно безотрадными, но только наблюдатель, ничего не понимающий в компьютерах и музыкальных инструментах. Гитары в большом количестве — некоторые под слоем пыли, одна поврежденная акустическая, но занимающие центральное место в большой комнате. С первого взгляда было понятно, что они все практически совсем не использовались, а служили своеобразной выставкой взыскательной натуры, которая упорно держалась за иллюзию собственной многогранности. На полках из светлых, необработанных досок по стенам длинные ряды научной фантастики, пара комнатных растений между ними — не то, чтобы живые, но и не совсем засохшие.

Иногда ему случалось урвать свободную минутку и, облокотясь на микроволновку, умиротворенно помедитировать над тускнеющими цветами приправ в банках. Кричаще-красный оттенок молотого перца постепенно сменился бледно-оранжевым, который еще года через два в свою очередь превратился в своеобразный красновато-серый. Сравнявшись таким образом в цвете с кафелем в мужском туалете "Астры", одним из немногих мест, прямо напоминающем о собственной половой принадлежности. Не менее скудной была обстановка и в квартире, где несколько небрежно сваленных на дне комода старых номеров Плейбоя являли собой неохотную дань обременительным биологическим потребностям мужского существования. На не застеленной половине двойной кровати сидели в ряд растрепанные и вытертые плюшевые ветераны детства. Могли ли они надеяться на скорое пополнение? Он вспомнил Клауса: "Бери пример с W. Сегодня он снова с какой-то блондинистой красоткой уехал. Эх, сказал бы я.."

Да, он провел замечательный вечер с Алисой. Только после часовой беседы Х. с удивлением осознал, что Алиса была удивительно красива. Сначала он никак не мог переключиться после работы. Пришел на свидание с головой, забитой базовыми классами и указателями, внутренний компилятор не давал передышки, синтаксические конструкции застилали туманом взгляд, остановившийся на кружке с пивом. "Черт, что она сказала?? Мне что, снова отвечать?"

— Как у тебя день прошел?

— Глупо. Убил восемь часов на поиск тривиальной ошибки, оказавшейся багом в неправильно документированной функции ОС. Нулевой байт вместо обратного слэша, рассказывать дальше?

— Да нет, не обязательно… но если все душевные резервы уходят на разбор недокументированных функций — какое место сможет занять женщина в твоей жизни?

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

— Что сегодня с тобой такое? Неприятности в офисе? Игнорируй идиотов…

— Это я умею, лучше некуда. К сожалению бесконечный игнор даже я не могу себе позволить, не смотря на всю мою квалификацию. Алис, ты знаешь "Cyberfroh"?

— Первый раз слышу. Ты там работал?

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

-.. и заодно оценят твое мастерство…

— Точно. Ответ пришел обычной почтой, правда не мне, а сразу моему начальнику. С довольно резко сформулированным запросом, сколько лицензий он все-таки думает купить, и не ускорит ли заявление по факту компьютерного пиратства его размышления.

— Не повезло тебе, но в принципе ничего удивительного. Если учесть, что три четверти коммерческого ПО используются так или иначе нелегально, не говоря уже о играх.

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

— Нет, техник…

— Неужели вера в технику и вера в людей несовместимы? В идеальном мире должно быть равным образом место для одушевленных и неодушевленных предметов.

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

Начальник отдела I. завершал регулярный вечерний обход, не забыв признательно похлопать по плечу Х., единственного присутствующего программиста.

— Без Вашей образцовой работы нелегко бы нам пришлось с СОУ. Вы еще задержитесь? М. заходил сегодня ко мне и сказал, что модуль связи все еще не…

— На той стороне напороли. Они там нашими спецификациями похоже пасьянс раскладывают.

— Ага, конечно, мейнфреймовцы виноваты, мог бы и сам догадаться. Х., прекратите Вы наконец относиться к тому отделу как к вражескому лагерю. Где ваш командный дух? Ладно, Вы здесь справитесь? Отлично. Тогда до завтра?

— В принципе не так уж много осталось. Нет, я не знаю точно, когда закончу. Вообще-то сегодня вечером я собирался…

— Если это что-то важное, то я могу написать Вам объяснительную.

— Угу, замечательно придумано, просто оставьте ключ здесь.

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

Гребаная машина. Какой дурак пользуется техподдержкой? Ну давай, давай, что значит "Internal Compiler error. Please contact Megasoft Technical Support"? Если ЯВУ этого не умеет — ладно, спустимся к ассемблеру. А теперь что такое? Ага, товарищ компилятор разучился складывать указатели… И кого только в наши дни в программирование несет — никакого представления ни о машине, ни о языке. Чему они в университетах учатся? Размышлять? Большинство даже просто читать не умеет. Иначе не сидел бы я тут посреди ночи…

Пока машина с легким гудением пыталась оправиться после нового обвала, Х. расслабился. Обрывки последнего разговора с Алисой всплывали в памяти. "Если тебе так уж нужны письма от меня, заведи себе электронный адрес." И он действительно это сказал? Да. В момент усталости и раздражения, и, кроме того, он не любил писать от руки. На какое-то мгновенье фраза показалась ему даже остроумной — ровно до тех пор, пока не произнес вслух. Конечно, не стоит так разговаривать с девушкой, особенно если еще плохо ее знаешь и тебе от нее что-то нужно. Черт. Надо бы наверное позвонить Алисе. По-хорошему это надо было сделать еще пару дней назад. Завтра с утра… может быть она подойдет завтра ко мне… Но сначала нужно окончательно укротить эту базу данных. Хотя на этом дело не кончится. "Даешь связь с мейнфреймом" — вот девиз этой ночи, даже если сначала придется часами изучать протоколы APPC. Намечавшаяся дурнота была по всей вероятности следствием восьми кружек кофе, но работа продвигалась с невероятной скоростью: код конструировался практически сам собой, четкий и целеустремленный, в то же время почти не поддающийся пониманию сторонним человеком, не говоря уже об изменении — идеальная упаковка решения. Часам к одиннадцати напомнил о себе голод и Х. сходил за следующей кружкой кофе. На обратном пути он прошел мимо стола Алисы и мягко провел пальцами по ее клавиатуре — до более интимных прикосновений они еще не добрались. Смутное ощущение превратилось внезапно в неприятную уверенность, что позавчера вечером он договорился встретиться с Алисой и совершенно о том забыл — вот и объяснение ее злому взгляду утром. "Столько дел. Какого черта, вечно они на меня весь мусор вешают. И Алиса это отлично знает! Надо было позвонить ей, может сидели бы тогда здесь хотя бы вместе"

На самом деле он еще ни разу ей не звонил, несмотря на то, что давно знал наизусть ее номер. Глубоко внутри лопнула какая-то перегородочка и незнакомые чувства — вперемешку, как разноцветные таблетки — раскатились в мозгу и начали обволакивать мысли вязким клеем. Чтобы успеть к сроку — сроки задал конечно же опять W. - придется еще пахать и пахать. Дьявол! Нетерпения он раньше тоже не знал. Досада и раздражение росли, он старался четче думать и быстрее печатать, но машина уже почувствовала неуверенность руки мастера и сопротивлялась. Развеяна была магия темноты, которая обычно поддерживала его ночами и гнала навстречу рассвету. Движения утратили собранность, мысли заплетались.

Задача должна решаться быстрее. Я переделаю алгоритм. Да, так пойдет и завтра, завтра все будет уже готово, как всегда. Я им необходим. Вся конструкция слишком сложна, W. наломал дров. На самом деле все гораздо проще. Начну заново, без гнилых компромиссов. С самого начала — чисто и прямолинейно. Напишу другие функции, без этих назойливых параметров — все должно быть проще, как сама Алиса. Я позвоню ей. Убрать циклы, убрать всю мишуру… есть ли предел скорости мышления?

Х. никогда еще не работал быстрее. Внезапное воодушевление придало сил и он решил позвонить Алисе. Может еще не поздно договориться с ней на завтрак. Рассеянно ввел он номер, компилятор все еще пережевывал код, W. поднял трубку и легко распознал знакомое гудение на заднем плане. "Мой самый старательный сотрудник — вот ведь наказание!" — Х., это Вы? Как дела, что у нас со связью? Х.? — Да, все в порядке, все отлично. Ваш модуль я переписал, расходует теперь на порядок меньше памяти, Вам понравится… "Господи, вот идиот". — Превосходно, просто замечательно. Что бы мы без Вас делали. Идите наконец домой, спокойной ночи. Х. откинулся на спинку стула, сообщение об ошибке вплыло в его поле зрения. Что-то пошло не так, его охватил озноб. "Где я ошибся? Соединение просто обязано работать… и что хотел W. от меня посреди ночи? Кто знает, в чьей постели он сейчас лежит, а я сижу здесь и прибираю за ним!"

Накатывала усталость, но Х. хотел во что бы то ни стало добиться этой ночью окончательного триумфа. Алиса гордилась бы им, даже W. только что подтвердил — без него, без Х. они были бы ничем, просто кучкой неудачников без будущего в этой фирме. И самое приятное: осталось всего лишь один, самый последний раз прогнать код. Ну, вперед! Подтвердив команду, Х. закрыл устало глаза. Равномерное гудение машины радовало и убаюкивало. Под шуршание винчестера Х. соскользнул в хорошо знакомый сон, уже не первый раз приходящий к нему после особенно долгого рабочего дня.

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

Уборщицы пришли как всегда к пяти. Им уже несколько раз приходилось будить Х., когда он засыпал над отполированной до блеска клавиатурой. Разбудить его на этот раз не удалось. Полгода спустя "Астра" была оштрафована на крупную сумму за грубое нарушение трудового законодательства, повлекшее за собой летальный исход. СОУ была успешно и в намеченные сроки введена в производство.

Мы не вспомним — нас забудут тоже

(Янка)