от головной боли и стараясь лишний раз не двигаться телом, чтобы не усугублять мучительный беспорядок в желудке. Он сидел на работе, и пытался набирать PL/SQL-код, но в глазах двоилось, и поэтому вместо SELECT…AS каждый раз упорно печаталось SELECT…ASS.

— Только одно название, что органические, а все одно — та же химия. Общество потребления, чтоб им пусто было. Whole Foods, Trader Joe's, Planet Organics Fresh Market my ass… Все, все — с одной и той же грядки! На чем надо было выращивать арбуз, чтобы им можно было так отравиться! Хорошо еще, хоть арбуз был маленький…

Он уронил голову на клавиатуру и попал на клавишу DEL. Так как рукой он при этом держал CTRL-ALT, компьютер перезагрузился. Программист А. не обратил на это внимания.

— …а бутылка большая, — продолжал размышлять он. — Если бы водкой не запивал, вообще бы окочурился. Вот ведь бл$@#&во!

1010010

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

Солнце садилось прямо за дом напротив, заливая улицу розовым светом. Сосед справа возился с граблями во дворе. Он приветливо помахал А. рукой, А. кивнул в ответ.

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

— Вот уж действительно, — подумал он. — Восходит солнце, и заходит солнце…

— …и спешит к месту своему, где оно восходит… — послышался тихий голос непонятно откуда.

Программист А. оглянулся. Поблизости никого не было.

— Надо меньше работать, — проворчал А. и отхлебнул пива из бутылки.

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

Темнело. Мягкий ветерок прокатился по траве.

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

— … и возвращается ветер на круги своя… — с готовностью откликнулся тот же самый голос.

— Возвращается, говоришь?.. — программиста А. внезапно осенило и алгоритм решения задачи, над которым он ломал голову все выходные, вдруг выстроился в его голове до последнего квадрата блок- схемы.

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

Он все понял. Функция вызывала саму себя! Поэтому все и повторялось. Поэтому и не было ничего нового под солнцем. Он бросился в дом, к компьютеру, и, сделав огромный глоток пива, принялся с пулеметной скоростью стучать по клавишам.

— Ну конечно! — приговаривал он. — Рекурсия! Суета сует! Блоковая структура с лексическим именованием — и рекурсия, рекурсия! Вот ведь бл$@#&во!

1010011

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

Программист А., расположившийся рядом в кресле, кивнул.

— Далее, и это очень интересно, обратите внимание, я использую алгоритм быстрой сортировки по имени, чтобы избежать упорядочивания во время запроса к базе данных! Неплохая идея, а?

Программист А. кивнул. Ободренный начинающий программист возбужденно продолжал:

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

Программист А. кивнул.

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

Программист А. кивнул. Молодой индийский программист некоторое время помолчал и тихо вышел из комнаты. Программист А. кивнул еще раз. Ему снился остров Кауаи и он сам, скользящий на серфинговой доске по теплой зеленой волне.

1010100

Программист А. сидел в Starbucks с компьютером и большим стаканом caffe latte. Звучала тихая музыка, уютно светился изнутри большой серый камин, непринужденно болтали за стойкой официанты в черных-зеленых фартуках, скрашивая друг для друга безлюдный вечерний час. Программист А. ничего этого не замечал. Ссутулившись над столом, он не первый час безуспешно пытался найти нужный алгоритм, и ему уже начинало казаться, что это невозможно.

Отчаявшись, А. поднял голову от экрана и огляделся. Словно впервые, он с удивлением заметил странные картины на стене, причудливые лампы под потолком, диски Эллы Фитцджералд и The Police у кассового аппарата. Внезапно его осенило.

— Подождите! — воскликнул он. — Но ведь это же все совершенно неправильно! Это делается совсем не так!

Он вскочил, быстро собрал вещи и выбежал на улицу. Перейдя через дорогу, он вошел в О'Клири и сел за стойку. Здесь громко играла музыка, по телевизору показывали бейсбол, Red Sox выигрывали у канадцев. А. кивнул соседу за стойкой, сосед весело показал ему шаку. Бармен деловито поставил перед ним кружку Сибирской Короны и сгреб пятерку и доллар.

— Вот теперь все как надо, — удовлетворенно сказал А. и, снова ссутулившись над экраном, продолжил свой безнадежный труд.

1010101

Программист А. сидел в темной комнате у камина, пил виски “Канадский туман” и смотрел в огонь. Неожиданно огонь скукожился и погас.

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

Вывод показался вполне логичным, и А. отметил это большим глотком виски.

— Однако, если огонь ушел, — продолжал рассуждать он. — То куда он ушел? В каком направлении?

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату