Выбрать главу

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

Его взгляд упал на настенный календарь, показывающий 10 июня.

— Да… — подумал программист А. — Что ни говори, длинная в этом году зима. Даже для Новой Англии длинная.

0110101

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

Программист А. зажег гирлянды и потушил свет. Комната погрузилась в мигающий разноцветный сумрак. Сев за стол, он откупорил шампанское, наполнил бокал и взглянул в светящийся голубым светом экран телевизора. Играла поставленная им кассета с “Иронией судьбы”. Ну что ж, будем… — подумал программист А. и пригубил шампанское. До Нового Года оставалось 114 дней.

0110110

— Странно, — подумал мозг. — Этот последний блок данных явно имеет противоречивую информацию в заголовке. Так, посмотрим… Насколько я помню формат заголовка, первые два байта — это внутренний идентификационный номер сообщения. Ну, тут проблем нет, если он, конечно, уникален. Потом — 512 байт — имя блока данных, по два байта на символ, из-за китайцев приходится использовать юникод, чтоб его… Так, что там дальше? Пошли указатели на разные области памяти. Ага, вот оно! Указатель на область событий прошлого. Вот тут-то, похоже, и проблема. Если этот указатель ненулевой, а в данном случае он ненулевой, то дата в соответствующем поле в конце заголовка должна отвечать определенному событию в прошлом. Так… Смотрим на дату… Так и есть! Дата-то сегодняшняя! Как будто это происходит прямо сейчас… Противоречие получается. И как же мне прикажете идентифицировать это событие?

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

— А, собственно, чего я мучаюсь, и без того работы полно! — подумал мозг. — Прошлое, будущее — какая, к черту, разница! Указатель ненулевой, ну пусть и идет… по указателю.

И мозг уверенно направил данные в область событий прошлого.

— Déjà vu, — подумал программист А.

Часть 2

0110111

Программист А. открыл окно Notepad, напечатал слово BEGIN и спросил начинающего индийского программиста:

— Что это?

— Это оператор BEGIN, означающий начало программы, — ответил начинающий программист.

— Хорошо, — сказал программист А. и стер слово BEGIN. — А что это теперь?

— Теперь там ничего нет, — ответил начинающий программист.

— Неверно, — сказал А. — Начало программы по-прежнему там. BEGIN — всего лишь слово на одном из языков программирования, оно и близко не может передать истинного значения “начала программы”. То, что ты хочешь написать, уже существует. Ты не должен писать ни строчки кода, пока не осознаешь эту истину. Понял?

— Понял, — ответил начинающий программист.

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

0111000

Программиста А. спросили: What's the difference between love and sex?

— Love takes two, — ответил программист А.

0111001

Программист А. проснулся как-то осенью и огляделся. Он сидел на рабочем месте перед своим монитором с открытым на нем пустым окном редактора. Часы показывали 11:11 am, индийские программисты вокруг с энтузиазмом печатали новый код, QA захлебывался в нескончаемом потоке багов, менеджеры с озабоченными лицами расходились с очередного митинга. Deadline приближался, но проект был выполнен лишь наполовину.