Записки программиста А.
Шрифт:
Программист А. вернулся на кухню, поставил на плиту кастрюлю, вылил в нее бутылку красного калифорнийского вина, добавил гвоздики и перца, и подождал, пока все это закипело. Налив дымящийся глинтвейн в бокал, он уселся на диван перед телевизором и натянул на себя клетчатый шерстяной плед, оставив снаружи только голову и одну руку со стаканом.
— Надо будет поставить новые галоши на валенки, — размышлял программист А., потягивая густой горячий напиток и наслаждаясь разливающимся изнутри теплом. — Эти уже совсем износились. Только вот будет ли еще снег? Неужели, опять зимнюю резину ставить…
Его взгляд упал на настенный календарь,
— Да… — подумал программист А. — Что ни говори, длинная в этом году зима. Даже для Новой Англии длинная.
В комнате пахло мандаринами, горячей картошкой и свежими огурцами. Блюдо с салатом оливье, большая хрустальная плошка селедки под шубой, тарелка с аккуратно разложенными шпротами, салат из помидоров и огурцов с луком, салат из риса, крабового мяса, золотистых кукурузных зерен и ломтиков ананаса — все это было расставлено на столе вокруг огромного блюда с дымящейся вареной картошкой и жареными куриными ножками. Тарелки с тонко нарезанными ломтиками буженины и докторской колбасы из русского магазина расположились по краям стола. Бутылка Столичной и три бутылки сладкого Советского шампанского придавали картине законченность золотого сечения.
Программист А. зажег гирлянды и потушил свет. Комната погрузилась в мигающий разноцветный сумрак. Сев за стол, он откупорил шампанское, наполнил бокал и взглянул в светящийся голубым светом экран телевизора. Играла поставленная им кассета с “Иронией судьбы”. Ну что ж, будем… — подумал программист А. и пригубил шампанское. До Нового Года оставалось 114 дней.
— Странно, — подумал мозг. — Этот последний блок данных явно имеет противоречивую информацию в заголовке. Так, посмотрим… Насколько я помню формат заголовка, первые два байта — это внутренний идентификационный номер сообщения. Ну, тут проблем нет, если он, конечно, уникален. Потом — 512 байт — имя блока данных, по два байта на символ, из-за китайцев приходится использовать юникод, чтоб его… Так, что там дальше? Пошли указатели на разные области памяти. Ага, вот оно! Указатель на область событий прошлого. Вот тут-то, похоже, и проблема. Если этот указатель ненулевой, а в данном случае он ненулевой, то дата в соответствующем поле в конце заголовка должна отвечать определенному событию в прошлом. Так… Смотрим на дату… Так и есть! Дата-то сегодняшняя! Как будто это происходит прямо сейчас… Противоречие получается. И как же мне прикажете идентифицировать это событие?
Мозг задумался и еще раз просмотрел весь заголовок. Противоречие не исчезало — согласно указателю, это уже было раньше, а согласно дате, это происходило прямо сейчас. Он покопался в своих инструкциях, надеясь найти какое-нибудь упоминание о том, значение какого поля заголовка должно пользоваться приоритетом в случае конфликта — указатель или дата, но на этот счет инструкций не было.
— А, собственно, чего я мучаюсь, и без того работы полно! — подумал мозг. — Прошлое, будущее — какая, к черту, разница! Указатель ненулевой, ну пусть и идет… по указателю.
И мозг уверенно направил данные в область событий прошлого.
— D'ej`a vu, — подумал программист А.
Часть 2
Программист А. открыл
— Что это?
— Это оператор BEGIN, означающий начало программы, — ответил начинающий программист.
— Хорошо, — сказал программист А. и стер слово BEGIN. — А что это теперь?
— Теперь там ничего нет, — ответил начинающий программист.
— Неверно, — сказал А. — Начало программы по-прежнему там. BEGIN — всего лишь слово на одном из языков программирования, оно и близко не может передать истинного значения “начала программы”. То, что ты хочешь написать, уже существует. Ты не должен писать ни строчки кода, пока не осознаешь эту истину. Понял?
— Понял, — ответил начинающий программист.
— Ничего он не понял, — ворчал программист А. вечером, пытаясь разобраться в 2000 строк кода, которые успел в первый же день работы наваять начинающий индийский программист.
Программиста А. спросили: What's the difference between love and sex?
— Love takes two, — ответил программист А.
Программист А. проснулся как-то осенью и огляделся. Он сидел на рабочем месте перед своим монитором с открытым на нем пустым окном редактора. Часы показывали 11:11 am, индийские программисты вокруг с энтузиазмом печатали новый код, QA захлебывался в нескончаемом потоке багов, менеджеры с озабоченными лицами расходились с очередного митинга. Deadline приближался, но проект был выполнен лишь наполовину.
В следующий раз программист А. проснулся в декабре. Он по-прежнему сидел на рабочем месте перед пустым окном редактора, часы по-прежнему показывали 11:11 am, индийские программисты все так же печатали новый код, QA захлебывался в нескончаемом потоке багов, а менеджеры с озабоченными лицами расходились с очередного митинга. Deadline приближался, но проект был выполнен лишь на четверть.
В следующий раз программист А. проснулся в марте. Часы показывали 11:11 pm, deadline был через неделю, и А. уже несколько дней сидел в офисе, практически не вылезая, пытаясь хоть как-то связать вместе куски кода.
— Что за хренотень! — ругался про себя А, в сотый раз добавляя явную инициализацию для переменной, которую начинающий индийский программист использовал в условном операторе. — Сон какой-то у меня стал прерывистый! К врачу, что ли, сходить…
Однажды утром программист А. наткнулся на работе у кофеварки на двух индийских коллег, которые о чем-то горячо спорили.
— О, вот ты рассуди нас, — сказал один из них. — Мы поспорили, когда лучше продавать акции, а когда лучше покупать.
— А? — сказал программист А.
— Я считаю, что акции нужно покупать, когда они падают, и продавать, когда растут. Когда акции падают, их можно купить дешевле, поэтому их нужно покупать. Когда акции растут, невозможно предсказать, когда рост остановится, поэтому их нужно продавать, пока они не упали.
— Я считаю, что акции нужно покупать, когда они растут, и продавать, когда они падают, — сказал второй индийский программист. — Когда акции растут, цена их увеличивается, поэтому их нужно покупать. Когда акции падают, невозможно предсказать, когда падение остановится, поэтому их нужно сразу же продавать. Кто из нас прав?