Владимир Губайловский - Учитель цинизма. Точка покоя
Но все-таки не литературный мир мне был дорог, а сам Костя. Я все время с ним разговаривал. Наталкивался на странное сближение и думал: вот надо Косте рассказать, это его позабавит. И тут же спохватывался: да ведь нет Кости. Так зачем я тогда все это думаю? Кому это теперь нужно?
Первый раз он мне приснился через несколько дней после похорон. Он смотрел на меня с ледяной усмешкой. Я сказал: «Костя, нам надо договорить…». Он поглядел куда-то в сторону и бросил: «А детишек не жалко?».
Я стал пить. Не как в юности, когда выпивка только катализатор веселья, а тяжело и одиноко, как пьют отчаявшиеся люди. Я не понимал, как мне жить. И тогда Костя мне приснился второй раз и последний.
Мы сидим в осеннем парке на белых пластиковых стульях за круглым белым столиком. Парк завален шуршащей палой листвой. Костя одет так, как он больше всего не любил: меховая шапка и старообразное пальто, явно с чужого плеча. Так он одевался только в самые сильные морозы, когда его курточка на символической подкладке совсем не грела. Кофе дымится в чашках. Небо пасмурное. Деревья желтые. Пусто. Тихо. Только шелест. Мы молчим. Костя спокоен. Он почти улыбается.
И меня как будто отпустило. Я решил пока повременить с полетами с 22-го этажа и занялся своими программами. Оля вздохнула с облегчением.
58Пришел Женя и говорит нам с Сорочкиным:
— Все отлично, договор подписан. Задача трудная и дорогая. Называется «Директивные графики». Заказчик — Мосоргстрой.
Сорочкин откликнулся:
— Моргстрой, значит. Да, что-то у нас с моргами последнее время напряженка.
— Значит, Моргстрой. Главная проблема в том, что никто не знает, как эту задачу писать. Там нужен нетривиальный алгоритм оптимизации.
Это уже прямо ко мне, самому видному среди нас троих специалисту по дискретке. Я, понятное дело, — плечи расправлены, челюсть вперед и вверх, как у Цоя:
— Женя, расслабься. Задачу решим — не впервой. Но это событие надо отметить.
— Меня что-то одолевают смутные сомнения.
— Сомнение может быть только в одном, — сурово остановил я любимого начальника — 0,5 или 0,7?
Сорочкин встрепенулся:
— 0,5 оба раза.
— Пойдет.
— Ребята, я же водку не пью, — тоскливо напомнил Женя.
— Ну, ты можешь пить коньяк, если такое дело.
Сорочкин вывернул карманы и сложил на стол наличность.
— Два раза 40 по Цельсию и один — по Кельвину.
— ОК. Но все-таки, чтобы тебе не было скучно, я с тобой пойду.
Сорочкин обиделся:
— Ты что же думаешь, я дорогой, что ли, все выпью?
— Нет, конечно, все ты не выпьешь, это даже для профессионала будет некоторое переполнение. Но вот быстро ты пойдешь или медленно? Кого ты встретишь на своем нелегком пути? Сколько в мире тайн! Так что не будем рисковать. И потом, надо хоть какой-нибудь минимальной закуски, что ли. Ты ведь даже хлеба не купишь.
— Закуска — это пережиток социализма.
— Нет, ребята, — вмешался Женя, — закуска все-таки нужна. Возвращайтесь и немного обсудим, что же мы будем писать.
В нашем недалеком походе мы наткнулись на очередь за пивом, ну и тоже прихватили бутылочек…цать — для лакировки действительности.
Вернулись во всеоружии. Разлили — вздрогнули.
— Женя, все будет в лучшем виде. Слепим нетленку прямо на колене.
— Я же говорю, там не все так просто. Нужно написать программу планирования застройки целого микрорайона, для примера у нас Северное Бутово. Проблема в том, что строительство — процесс сильносвязанный: нужно учесть последовательность и распараллеливание работ, чтобы сначала стены там, крыша, потом ЦТП [4], потом отделка, и чтобы бригады не простаивали, и материалы шли в дело прямо с колес, без складирования. И работ, и бригад, и ресурсов этих очень много.
— И что?
— А то самое, этот план-график нужно построить, а потом еще вывести красиво на экран и на печать, по типу диаграммы Ганта. C графикой придется повозиться серьезно.
— Это же тривиальный ациклический граф.
— Может, он не такой и тривиальный.
Веселье набирало обороты, но Женя почему-то не разделял нашей крепнущей с каждым подходом уверенности.
59
Дальше дело развивалось постепенно, но твердо. Сорочкин сидел в глубокой задумчивости и играл в хоккей. Единственный цветной монитор у нас был от компьютера «Агат». Сам компьютер сразу сунули куда-то под стол, монитор привинтили к «Роботрону», и Сорочкин завис.
На вопрос Жени: «Не пора ли что-нибудь начать делать?» — Сорочкин, проигравший «New York Islanders» со счетом 1:7, отвечал односложно: «Щаз-з-з». На повторный вопрос он сообщал, что очень занят, но как только будет чуть посвободнее, сразу займется исследованием нужных паскалевских библиотек. Писать собрались на Turbo Pascal 5.0.
Я вообще на работу не ходил. Ходил вокруг работы и размышлял. Когда случайно встретил Женю в очереди за молоком, он поинтересовался, как дела с алгоритмом. Я попытался его успокоить:
— Задача вошла в стадию созревания. Полет нормальный.
— Только что-то полет медленный очень.
— Я же говорю — нормальный. Скоро все дозреет.
— Ну-ну. Может, просто попробовать линейное программирование?
— Линейное программирование — это для ламеров. Вот оно-то как раз медленное очень. Для больших размерностей мы на нашей икстюхе его всю жизнь ждать будем. Здесь должно быть простое и элегантное решение. Осталось его найти.
— Давай ищи. Но ты помни, что я тебе про книжечку Набокова рассказывал. Положи ее рядом с машиной и поглядывай иногда.
60В процессе выбора инструментов разработки произошли серьезные сдвиги. Сорочкин устал играть в хоккей и взялся осваивать трехмерный «Тетрис». Игрушку каким-то непростым образом утянули прямо у разработчиков где-то в Долине месяца за три до релиза. Недоделанная немного, но у нас уже была. Результаты росли на глазах.
После трех-четырех часов упорного труда Сорочкин вдруг спохватывался и куда-то быстро уходил. Впрочем, куда он уходил, догадаться было несложно — либо за пивом, либо к товарищам-коллегам, обсуждать последние натыренные не пойми где игрушки.
Возвращался с целой кипой дискет и садился осваивать. Вдруг прямо перед носом у Сорочкина сначала одна буковка, потом вторая, третья и прочие другие посыпались вниз и образовали в нижней строке экрана что-то вроде братской могилы. Сорочкин некоторое время ошарашенно смотрел на пустой экран и наконец, прервав тяжелое молчание, разразился водопадом мата.
Заглянув по чистой случайности в родную контору, я стал свидетелем этого события: «А-а, подцепил-таки заразу. Теперь чисти давай».
Сорочкин почернел лицом, как квадрат, и стал чистить. На следующий день у нас появился антивирус Лозинского — со всякими скачущими, как блохи, буковками и прочими тринадцатыми пятницами он управлялся без проблем.
Нельзя сказать, что я сачковал. Напротив, я давно так интенсивно не работал. Задача меня захватила. Сначала я ее обобщил, поскольку слышал от людей знающих, что обобщенная задача иногда решается проще, чем частный случай, а если найти общее решение, его потом можно конкретизировать для своих скромных нужд. Но после моих обобщений задача превратилась во что-то абсолютно неудобоваримое: что-то вроде «для любого графа провести оптимизацию всего чего угодно». Это никуда не годилось, поскольку стала проглядывать какая-то нездоровая NP-полнота. Замаячил коммивояжер, которого по российским нетвердым дорогам мотает нелегкая.
Количество изрисованных листочков стремительно росло. А Женя уже начинал серьезно беспокоиться. Месяц прошел, а мы еще ни байта не сдвинули.
Радиус моего хождения вокруг проблемы постоянно увеличивался. Я бродил вдоль Царицынских прудов, сидел на бетонной трубе, по непонятным причинам залетевшей на вершину холма, и размышлял. Иногда закрадывалась и вовсе шальная мысль — пойти в ГПНТБ [5] полистать журналы. Может, все давно решено? Но эту предательскую мысль я отметал с мефистофельским смехом. Настоящий мужчина принимает вызов и бьется о стенку лбом, пока что-нибудь не треснет.
61
Сорочкин принес новую игру — «Пираты Карибского моря». Тут я тоже не выдержал. Поднялся на капитанский мостик звонкой, как мандолина, шхуны и занялся серьезным мужским делом: нападать на испанский Treasure Fleet, топить галионы и фрегаты, собирать денежки и искать сокровища майя. Игрушка затянула всех. Женя хоть сам и не играл, поскольку у него на такую хренотень времени ну совершенно не было, часами сидел рядом и давал советы. Иногда вполне дельные. Например, он первый заметил, что в нашей игрушке роза ветров вполне реальная. Тут же была найдена толстая сугубо научная книга по гидрографии Карибского моря и тщательнейшим образом проштудированы все ветра и течения. Это, конечно, очень продвинуло нас в выполнении заказа терпеливого Моргстроя.