Александр Петровчич - Записки программиста А.
— Опять? — угрожающе произнес менеджер и позвонил в непонятно откуда взявшийся большой колокольчик на деревяной ручке.
А. моментально проснулся. Он оглядел комнату. Все присутствующие спали, и только докладчик продолжал занудно жужжать из аппарата для телеконференций. Теперь А. не знал, спит он или нет. Он чесал затылок и пытался понять, приснились ли ему эти непутевые А., которые не могли найти документ, или же это он, А., чешущий сейчас затылок, приснился одному из этих непутевых А.? Или, может быть, все они трое просто снятся сейчас кому-то из спящих архитекторов? Ясно было одно — рабочий день был в разгаре и до отпуска было очень далеко.
0000101Программист А. попытался откусить от бутерброда, но у него ничего не получилось — обертка так и норовила попасть в рот вместе с хлебом. Нужно было придержать обертку, но в другой руке у программиста А. была электрическая бритва. Он положил бритву на сегодняшний номер “Boston Globe”, развернутый у него на коленях, но бритва тут же соскользнула с гладкого газетного листа и повисла в воздухе, жужжа и качаясь на собственном шнуре. Программист А. протянул руку за бритвой, при этом другая рука с бутербродом оказалась над газетой, и большая капля кетчупа немедленно упала на разворот, образовав смачную кляксу в том месте, которое А. только собирался прочитать. “Ну, с меня достаточно!” — рассердился программист А., сбавил скорость, съехал на обочину и остановил машину.
0000110Программист А. сидел в рабочем кресле уже не первый час. Голова не соображала, замысловатые строчки кода, похожие друг на друга как узорчатые линии арабской вязи, заполняли окно редактора. Несколько раз А. стирал казалось бы законченную подпрограмму и начинал заново. Теперь, отчаявшись, он просто неподвижно сидел перед монитором.
— Вот так и получаются баги, — думал А. — Если код не идет, заставлять себя нельзя, толку не будет. Только багов насажаешь, потом замучишься отлаживать.
План проекта поджимал, нужно было что-то делать, и поэтому А. сидел и смотрел в монитор. Неожиданно прямо под усталым взглядом А. буква G в слове BEGIN превратилась в маленького юркого жучка и быстро поползла по странице, коварно стирая символы на своем пути. А. чуть не упал со стула. Не веря своим глазам, он потряс головой из стороны в сторону и снова уставился на экран. След от убежавшей буквы не исчезал.
— Это что же такое! — ошарашенно подумал А. — Баги уже вот прямо так и ползают по программе?! Говорил же, нельзя себя заставлять.
Некоторое время ничего не происходило, и А. уже собирался вычеркнуть произошедшее из памяти как невозможное, как вдруг сразу две буквы U и R в слове NUMBER превратились в жучков и побежали по странице в разные стороны. Пытаясь сохранять остатки здравого смысла, А. отметил, что баг, в которого превратилась буква R, на своем пути стер значок умножения, превратив 2**N в 2*N.
— Как же так, — беспомощно пробормотал А. — Должна быть степень, а не умножение! Это же баг…
Еще через мгновение весь экран монитора кишел бегающими багами, безжалостно поедающими все, что с таким трудом успел за несколько месяцев написать А. Ему казалось, он даже слышит монотонное злорадное жужжание, издаваемое полчищем поедающих код жучков. Внезапно все закончилось, и в воздухе повисла тишина. А. остолбенело сидел перед абсолютно черным экраном и пытался осознать, что произошло, и что теперь будет с проектом, и с самим А. Либо материализовавшиеся баги только что, прямо на глазах у А., съели его программу, либо А. сошел с ума. Ни то, ни другое не сулило ничего хорошего.
В комнату заглянул системный администратор и увидев А., сидящего с всклокоченными волосами перед пустым монитором, спросил:
— Ну как тебе наш новый screensaver? Вчера ночью поставили на все компьютеры, распоряжение из главной службы поддержки.
А. глубоко вздохнул, и словно гора свалилась с его плеч.
0000111Программист А. разговорился за чашкой кофе с соседкой по столику в кафе на первом этаже. Обсудив погоду и состояние экономики, соседка спросила его, что у него за акцент.
— Русский, — ответил программист А. — Я из России.
К его удивлению, женщина посмотрела на него недоверчиво, даже немного подозрительно.
— Нет, на русского ты совершенно не похож, — сказала она.
— Почему это? — обиделся А.
— У меня был знакомый русский, — объяснила женщина. — Он был здоровый, как слон, на три головы выше тебя, с черными волосами, нос как у орла, и пел очень красиво.
— Может, я тоже пою красиво, — из принципа спросил программист А., хотя петь действительно совершенно не умел.
— Может и так, — ответила женщина. — Но все остальное на русского явно не тянет.
— И как же этого русского звали? — поинтересовался А.
— Цхиладзе, — ответила женщина.
— Странное имя для русского… — сказал А.
— Вам, русским, виднее… — задумчиво ответила женщина.
Они допили кофе и, пожелав друг другу take it easy, разошлись.
— Абыдно, слюшай, — думал программист А., поднимаясь по лестнице на свой этаж. — И кто же я теперь?
0001000За спиной программиста А. рабочая группа программистов-индийцев обсуждала дизайн будущего приложения. Обсуждение длилось уже больше часа и, казалось, застопорилось на одном месте. Индийцы добросовестно всматривались в каракули, нарисованные на доске, стирая одни и рисуя другие, но идея не приходила. Программист А. пытался сосредоточиться на своей работе, но и это не удавалось.
— Йех фанкшен хо на чэйи хе, — задумчиво сказал один индиец.
— Нахи, йе просиджа хо на чэйи хе, — возразил другой.
Они опять замолчали и уставились на доску.
— Мера кхайал хаин ки йе фанкшен аур просиджа хо на чэйи хе… — медленно и неуверенно выговорил третий.
Это было уже слишком. Программист А. резко повернулся в своем кресле и сказал:
— Айса нахи карна чэйи хе. Йе фанкшен хо на чэйи хе джо рикерсивли бу ла та хаин!
Индийцы посмотрели на А., потом на доску, потом опять на А., и в их глазах зажегся огонек понимания.
— Рикерсивли бу ла та хаин? — с надеждой переспросил один из них.
Программист А. кивнул, выразительно развел руками и повернулся обратно к своему монитору.
— Лекин, вох сахи хаин! — воскликнул индиец.
0001001Программист А. сидел у камина в кресле-качалке и задумчиво сжигал рукопись, подкладывая в огонь лист за листом. В правой руке он держал бокал с аргентинским красным вином, а на полу рядом с ним, на медвежей шкуре, стоял поднос с нарезанным тонкими ломтиками корсиканским сыром Brin d'Amour. Терпкий запах вина смешивался в воздухе комнаты с ароматами чабера, розмарина и можжевельника от сыра. Кроме огня в камине, комнату освещали только три свечи на круглом столе в глубине комнаты, и поэтому в комнате царил полумрак. Дрожащие тени на стенах и полу отвечали каждому движению языков огня в камине.
Программист А. задумчиво сжигал рукопись. Вернее, это была не рукопись, а распечатка программы, над которой А. работал несколько лет. Время от времени он задерживал в руке случайный лист перед тем, как отправить его в огонь, и пробегал глазами написанное. Каждая строчка кода была не просто так, в каждом ключевом слове таилось особое содержание, за каждой буквой скрывалось событие прошлых лет. Вот переменная _fuckIt… Глаза А. подернулись дымкой воспоминания… Новые джинсы, порно-сайт, выплывший на рабочем экране по заданному незнакомому адресу, менеджер, тихо подкравшийся сзади, огромный стакан горячего кофе, вылитый себе на колени от неожиданности… Чем было бы имя переменной без этой истории? Так, бессмысленное сочетание букв.
В жизни каждого художника наступает момент, когда рукопись должна быть сожжена, думал А., потому что после какого-то момента накопившиеся воспоминания, связанные с каждой строчкой кода, неизбежно уводят внимание в сторону. Вот знакомая метка BEER, а вот и оператор безусловного перехода GO TO BEER в конце подпрограммы. А. улыбнулся. Конечно, он и тогда знал, что это плохой стиль программирования, и что программа не будет работать! Но друзья уже ждали его в баре, и, подвыпив, звонили каждую минуту по сотовому, и так не хотелось блуждать в саду расходящихся тропок условного оператора.
А. бросил в огонь последний лист и посмотрел, как он съеживается и исчезает. Не то же ли самое происходит с каждым днем нашей жизни, брошенным в камин наступающей ночи? Некоторое время он сидел неподвижно, затем посмотрел на часы. Было девять вечера, делать ничего не хотелось. Программист А. подошел к компьютеру и дотронулся до мыши. Экран монитора загорелся. А. включил принтер, загрузил файл с текстом программы в редактор и нажал Print. Через пятнадцать минут он снова сидел у камина с толстой стопкой распечатки все той же программы и бокалом вина.