КонтекстДмитрий Бороздин

Глава вторая

Замкнутый цикл

Когда Виктор вошел в мастерскую, Андрей стоял у кофемашины с двумя чашками.

— Одна мне? — спросил Виктор.

Андрей посмотрел на чашки.

— Надеюсь.

— А вторая?

— В этом и заключается интрига.

На столе возле его ноутбука стояла третья. От нее еще поднимался пар.

Виктор снял куртку.

— У тебя совещание?

— Было бы удобно. Тогда все эти люди могли бы сами выпить свой кофе.

— МНЕМОС, — сказал Виктор, — сколько он сегодня выпил?

— Одну чашку.

— А приготовил?

— Четыре.

Виктор посмотрел на Андрея.

— Ты решил перейти на оптовые закупки?

— Я решил выяснить, почему меня второй раз отправляют на перерыв.

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

— Сначала сядь, — сказал он. — И возьми какую-нибудь. Только не эту. Эта без сахара.

— Я всегда пью без сахара.

— Тогда очень удачно вышло.

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

На стене висел календарь двухлетней давности. Виктор несколько раз предлагал его снять, но Андрей утверждал, что это единственный календарь, который гарантированно больше не принесет неприятностей.

Виктор сел.

— Рассказывай.

Андрей коснулся дужки очков.

— МНЕМОС, текущая задача.

— Проверить обработку времени в утренней сводке. Ошибка зарегистрирована вчера в семь пятьдесят восемь.

— Вот. Я работаю. Потом она говорит: пора отдохнуть. Я иду за кофе. Возвращаюсь — она напоминает, на чем я остановился. Хорошая функция, между прочим.

— Верю.

— Открываю код. Она опять говорит: пора отдохнуть.

— А ты?

— Полагаю, выполняю рекомендации высококвалифицированного специалиста.

— То есть снова идешь за кофе.

— Но уже с некоторым подозрением.

— Судя по столу, подозрение крепло постепенно.

— Вторая чашка была для тебя. Я посмотрел календарь, увидел, что ты скоро придешь.

Виктор поднял свою чашку.

— А вот эта?

— Вот эта уже требует объяснений.

МНЕМОС негромко произнесла:

— Рекомендуется сделать перерыв. Продолжительность рабочей сессии — семьдесят восемь минут.

Андрей развернул ноутбук.

— Начнем с того, что последние десять минут я стою.


Три года назад Виктор тоже вошел в эту комнату и застал Андрея перед экраном.

Тогда чашка была одна. Холодная.

— Мы сегодня едем или нет? — спросил Виктор.

— Куда?

— На склад.

— Зачем?

Виктор решил, что тот издевается.

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

— За товаром, Андрюх.

— А. Конечно.

Андрей открыл почту. Прочитал письмо поставщика. Посмотрел на дату.

— Странно.

— Что?

— Я собирался тебе позвонить.

— Ты позвонил.

— Когда?

— Час назад.

Андрей взял телефон.

Виктор помнил, как изменилось его лицо. Совсем немного: исчезло раздражение, с которым человек ищет чужую ошибку.

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

— Наверное, не выспался, — сказал Андрей.

Они тогда оба охотно приняли это объяснение.

Позже появились записки.

Сначала обычные желтые листки на краю монитора. Затем блокнот, который Андрей носил в нагрудном кармане. На обложке крупно написал: «ЧИТАТЬ, ПРЕЖДЕ ЧЕМ СПРАШИВАТЬ».

На первой странице были дата и три дела.

На второй — те же три дела, но уже в другом порядке.

На третьей — замечание:

Не заводить второй блокнот.

Виктор нашел второй блокнот в ящике стола.

— Этот для того, чтобы помнить, где лежит первый?

— Этот для работы.

— А первый?

— Тоже для работы.

— Разделение обязанностей пока неочевидно.

Тогда Андрей еще запоминал многое. Иногда мог подробно рассказать о вчерашнем разговоре, а через час не вспомнить, что рассказ уже состоялся. Хорошие дни перемежались с плохими. Они долго пытались найти закономерность: сон, нагрузка, стресс.

Андрей составлял таблицы.

Виктор возил его на обследования.

После одного из приемов Андрей вышел из кабинета, сел рядом и молча раскрыл блокнот.

— Что сказали? — спросил Виктор.

— Сейчас.

Он начал писать.

Виктор больше не задавал вопросов, пока Андрей не закончил.


— Смотри, — сказал Андрей.

На экране появились несколько строк.

10:41. Рекомендован перерыв.

10:42. Пользователь покинул рабочее место.

10:46. Пользователь вернулся. Незавершенная задача восстановлена.

10:46. Рекомендован перерыв.

Виктор наклонился к ноутбуку.

— Она не заметила, что ты отдыхал?

— Заметила. Вон, записала уход и возвращение.

— Тогда почему?

— Пока не знаю. МНЕМОС, из какого времени вычислена продолжительность сессии?

— Из времени начала задачи. Девять двадцать восемь.

— А после перерыва?

— Девять двадцать восемь.

Андрей кивнул.

— Уже теплее.

МНЕМОС снова предложила отдохнуть.

— Рекомендации на двадцать минут отключить, — сказал Андрей. — Сбор событий оставить.

— Принято.

— А чего сразу не отключил? — спросил Виктор.

— Потому что первое напоминание было правильным. Я действительно засиделся.

Он открыл соседнее окно.

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

— Ты завтракал?

— Да.

— Что ел?

— МНЕМОС?

— Омлет и два ломтика хлеба. Восемь семнадцать.

— Вот, — сказал Андрей. — Не пропаду.

Виктор достал из пакета булочку и положил возле его локтя.

Андрей посмотрел на нее.

— Это проверка системы или проявление недоверия?

— Это булочка.

— Хорошо. Наконец-то однозначные исходные данные.


Первую версию внешней памяти Андрей сделал на телефоне.

Она умела записывать голос и искать в расшифровках. На этом ее достоинства в основном заканчивались.

Чтобы что-нибудь найти, требовалось вспомнить, что именно ищешь.

Андрей говорил в телефон:

«Я отдал Виктору ключи от мастерской».

Через два часа искал:

«Где ключи?»

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

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

Следующая версия научилась связывать записи с людьми и временем. Потом появились фотографии. Потом автоматические сводки.

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

Однажды они полчаса обсуждали крепление микрофона, прежде чем выяснилось, что сам микрофон лежит в коробке.

В журнал попали полчаса шорохов.

Андрей назвал запись «Совещание руководства».

Чем хуже становилась память, тем меньше времени оставалось на удобство разработки.

Раньше он мог открыть код утром и помнить вечером, зачем изменил три строки. Теперь приходилось оставлять объяснение раньше, чем вносить изменение.

Виктор однажды увидел над функцией длинный комментарий.

— Это все для программы?

— Для меня.

— А программа?

— Программа хотя бы не забывает, что делает, пока делает.

На столе появились небольшие карточки.

Что проверяю.

Что уже проверил.

Следующее действие.

Виктор сначала считал их временной мерой.

Андрей не считал.

Он записывал даже неудачные попытки, чтобы не возвращаться к ним снова. Если проверка занимала долго, делил ее на части. Если отвлекался, система должна была показать последнее подтвержденное действие, а не предложить начать сначала.

Иногда Виктор заставал его за одной и той же задачей несколько дней подряд. Казалось, работа стоит.

Потом Андрей показывал результат.

— Вот здесь вчера не работало. Здесь сегодня работает. Здесь все еще не работает, но теперь я знаю почему.

— А ты сам вчерашний день помнишь?

— Нет.

— Тяжело, наверное.

Андрей смотрел на экран.

— Тяжело было бы опять искать ту же ошибку.

Виктор не всегда понимал, шутит он или отвечает буквально.

Потом научился не требовать от каждой фразы чего-то одного.

Название предложила Марина.

До этого Андрей называл систему «помощником», а папка с программой называлась «новый_помощник_последний_точно».

— Ей нужно нормальное имя, — сказала Марина.

— Ей нужно нормально работать.

— Одно другому не мешает.

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

Так появилась МНЕМОС.

Виктор помнил тот вечер. Марина сидела на полу среди проводов, держала настольную лампу, а Андрей пытался научить камеру узнавать ее лицо при плохом освещении.

— Кто перед тобой? — спрашивал он.

— Марина, — отвечала система.

— А теперь?

Марина отворачивалась.

— Марина.

— А теперь?

Она закрывала половину лица ладонью.

— Недостаточно данных.

— Вот и в браке иногда так, — говорил Андрей.

Марина бросила в него свернутую инструкцию от лампы.

Виктор вспомнил это и улыбнулся.

— Чего ты? — спросил Андрей.

— Вспомнил, как вы ее называли.

Андрей оторвался от экрана.

— Есть запись?

— Наверное.

— МНЕМОС, найди вечер, когда выбрали тебе имя.

— Найдено три связанных события. Показать?

Андрей посмотрел на открытый код.

— После проверки. Закрепи ссылку.


— Вот он, наш красавец, — сказал Андрей минут через пять.

Виктор увидел выделенную строку. По ней нельзя было понять ни красоту, ни степень вины.

— Объясни словами.

— У меня есть две вещи. Напоминание о перерыве и восстановление задачи после возвращения.

— Это я заметил.

— Перерыв я начал учитывать отдельно. Вчера обновил. А восстановление осталось старое: оно возвращает все состояние задачи, включая время начала.

Виктор посмотрел на чашки.

— И получается, ты опять работаешь с девяти двадцати восьми.

— Для счетчика — да. Человек вернулся, задача вернулась, усталость тоже вернулась. Очень заботливо.

— А если ты уйдешь домой?

— Завтра утром мне настоятельно порекомендуют отдохнуть от вчерашнего дня.

Виктор засмеялся.

Андрей тоже улыбнулся, но продолжал смотреть на экран.

— Я это вчера проверял.

— Плохо?

— По отдельности. Напоминание срабатывает. Уход определяется. Возвращение определяется. Задача восстанавливается. Все работает.

Он пододвинул к себе остывшую чашку.

— А вместе они гоняют меня на кухню.

— Система здорового образа жизни.

— Если так пойдет, я к обеду пройду десять тысяч шагов. По одному коридору.

Андрей открыл журнал разработки и надиктовал описание ошибки.

Потом добавил:

— Возврат к задаче не должен отменять подтвержденный перерыв. Время работы считать отдельно.

— Создана запись, — ответила МНЕМОС.

Он начал печатать.

Виктор следил за ним поверх чашки.

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

Поэтому Виктор теперь спрашивал:

— Можно отвлечь?

Раньше это казалось ему нелепой вежливостью. Они знали друг друга больше тридцати лет.

Теперь он понимал, что иногда отнимает не минуту.

Андрей остановился, прочитал собственную запись в журнале и продолжил.

— Ты домой сегодня во сколько? — спросил Виктор, когда тот убрал руки с клавиатуры.

— Почему?

— Надо заехать за разъемами. И тебе, кажется, к вечеру что-то было нужно.

— МНЕМОС, задачи на вечер.

— Проверить настройки контактов. Начало — двадцать часов. Других назначенных задач нет.

Виктор опустил чашку.

— Тогда успеем, — сказал он.

Андрей снова повернулся к экрану.

— Сейчас только докажем, что я имею право сидеть на собственном стуле.


Для проверки Андрей поставил короткий интервал.

— Две минуты работы, минута перерыва. Не забудь потом вернуть нормальные значения, — сказал он.

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

Они сидели молча.

За стеной кто-то двигал мебель. С улицы доносился шум машины, которая никак не могла завестись.

— Рекомендуется сделать перерыв, — произнесла МНЕМОС.

Андрей поднялся.

— Пойдем.

— Куда?

— На кухню. Но кофе не трогать.

Они остановились у окна в конце коридора. На подоконнике лежал засохший лимон. Виктор видел его здесь с весны.

— Выкинуть надо, — сказал он.

— Не трогай. Возможно, это чья-то работа.

— Чья?

— Не знаю. Но очень длительная.

Виктор посмотрел на друга.

— Ты помнишь, что мы проверяем?

Андрей помедлил.

— Перерывы. Взаимодействие со старой функцией возврата.

— А что исправил?

— МНЕМОС, кратко.

Система ответила.

Андрей кивнул и показал на очки.

— Вот поэтому я и доволен.

— Я ничего не сказал.

— У тебя лицо.

— У меня всегда лицо.

— Сегодня особенно выразительное.

Виктор отвернулся к окну. Во дворе мужчина в синей куртке ходил вокруг незаводящейся машины.

— Ты столько сил в нее вложил, — сказал Виктор.

— Да.

— И вот стоим. Проверяем, даст ли она тебе нормально вернуться за стол.

Андрей посмотрел на него.

— Вить, если я сейчас вернусь и продолжу с того места, где остановился, это уже хороший результат.

Виктор хотел ответить, но Андрей добавил:

— А если еще и разрешит поработать, вообще праздник.

Они вернулись в мастерскую.

На линзе Андрея появилась подсказка. Он прочитал ее, сел и открыл нужное окно.

МНЕМОС молчала.

Через минуту все еще молчала.

Виктор поднял большой палец.

— Поздравляю. Тебя приняли на работу.

— Испытательный срок две минуты.

Новое напоминание пришло вовремя.

Андрей проверил журнал, вернул обычный интервал и снял временное отключение рекомендаций.

— А теперь контрольный заход.

Он снова встал, вышел, вернулся.

Сел.

Подождал.

— Все, — сказал он. — Можно жить.

Виктор потянулся за курткой.

— Сколько мы потратили?

Андрей посмотрел на него.

Они одновременно улыбнулись.

— Даже не начинай, — сказал Виктор.


Перед уходом Андрей открыл найденную запись.

На экране появилась Марина. Она сидела на полу, поджав ноги, и держала лампу над головой. Изображение было темным и чуть перекошенным.

— Так нормально? — спросила она.

— Отлично, — ответил Андрей из-за камеры. — Только не двигайся.

— Я уже десять минут не двигаюсь.

— Вот видишь, а говоришь, у нас мало общего.

Марина рассмеялась.

Андрей остановил запись.

— Ну надо же.

Виктор ждал.

— Что?

— Она правда все это выдержала.

— Она еще потом провода убирала. Мы-то ушли.

Андрей снова посмотрел на экран.

На неподвижном кадре Марина смеялась. Одной рукой держала лампу, другой придерживала волосы, падавшие на лицо.

— Надо ей показать, — сказал он.

— Покажи.

Андрей отправил ссылку и написал:

Нашел, как мы тебя мучили. Спасибо за МНЕМОС. И за лампу.

Он перечитал сообщение, прежде чем отправить.

Потом закрыл ноутбук.

Виктор уже стоял в дверях, но Андрей задержался у стола.

— Хорошая все-таки штука получилась.

— Хорошая.

— Нет, ты посмотри. Я сейчас почти весь наш разговор восстанавливал по подсказкам. Но ошибку нашел. Исправил. Проверил.

Виктор кивнул.

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

— И это я сам сделал, — сказал Андрей.

— Знаю, Андрюх.

На телефоне появился ответ Марины.

Лампу ты держал минуту. Потом сказал, что у тебя рука устала.

Андрей рассмеялся.

— Справедливое замечание.

Он набрал:

Теперь система следит, чтобы я не переутомлялся.

Через несколько секунд пришло:

Заметила.

Виктор протянул ему куртку.

Они погасили свет и вышли.

Уже в коридоре Андрей остановился.

— А зачем мы сюда сегодня приезжали?

Виктор успел открыть рот, но МНЕМОС ответила раньше:

— Вы исправили ошибку обработки времени и устранили повторные напоминания о перерыве. Обе проверки завершены успешно. Следующая задача — забрать разъемы вместе с Виктором.

— Точно.

Андрей пошел к выходу.

Виктор догнал его у лестницы.

— Кофе-то забыли.

Андрей обернулся к закрытой двери мастерской.

— Сколько там осталось?

— Три чашки.

— МНЕМОС, завтра не предлагай мне их допить.

— Такое предложение не запланировано.

— Отлично. Хоть что-то я предусмотрел.