Тонкое лезвие кухонного ножа с легким хрустом прорезало желтую цедру. Мелкие капли эфирного масла брызнули во все стороны, наполняя теплую кухню резким, свежим цитрусовым ароматом. Анна перевернула половину лимона на деревянной разделочной доске и отрезала следующий тонкий полупрозрачный ломтик. Острие ножа глухо стукнуло по влажному дереву.
Алексей сидел, откинувшись на спинку стула, и смотрел на ее руки. За окном сгущались ранние ноябрьские сумерки. Ветер швырял горсти мелкой ледяной крупы в стекло. Оконная рама едва заметно подрагивала под порывами, но внутрь холод не проникал. Квартира давно перестала быть пустой гулкой коробкой. Здесь поселился запах свежезаваренного индийского чая, книжной пыли и того неуловимого человеческого тепла, которое превращает жилплощадь в дом.
На дальнем краю широкого письменного стола тихо гудел блок питания. Черно-белый кинескоп модифицированной «Юности» отбрасывал на обои бледные, пульсирующие блики. Под телевизором покоился плоский пластиковый корпус «Сферы-80М». Внутри него не было сложного микропроцессора. Только центральный управляющий блок — ЦУБ, собранный на россыпи микросхем простой логики. Машина ждала команд, мерно помигивая белым прямоугольником курсора на темном фоне экрана.
Раздался резкий, дребезжащий звонок в дверь.
Анна вытерла руки о полотенце. Вышла в коридор. Щелкнул поворотный замок, скрипнули петли. В прихожую ввалились Евгений Громов и Люба Ветрова.
Запахло стылым сукном, снегом и дешевым табаком.
Люба стянула с шеи толстый шерстяный шарф, раскрасневшаяся от ветра, тяжело дышащая. Громов молча повесил тяжелое пальто на крючок и тщательно вытер ботинки о половичок. Движения программиста были непривычно медленными, выверенными. Со дня их разговора в темном заледенелом переулке прошла неделя.
Влажные следы на линолеуме медленно подсыхали, оставляя белесые разводы соли. Громов стянул с плеч тяжелый, набравший влаги драп, но всё ещё чувствовал озноб — и дело было вовсе не в ноябрьской стуже. Всю эту неделю его мозг, привыкший к жесткой, предсказуемой логике машинных кодов, отчаянно пытался скомпилировать реальность, в которой никак не сходились контрольные суммы. Он смотрел на спину Морозова, на его чуть сутулые плечи в обычной клетчатой рубашке, и пытался до конца осознать: в этой черепной коробке прямо сейчас покоятся технологии, до которых всему остальному человечеству предстоит добираться десятилетиями проб, ошибок и миллиардных бюджетов.
Квартира Морозова казалась Евгению не просто жилплощадью. Она превратилась в изолированную лабораторию, в точку технологической сингулярности, спрятанную среди типовых бетонных панелек. Здесь пахло домашним теплом, подсыхающим шерстяным ворсом и лимоном, но сквозь этот уютный советский быт явственно проступал холодный, математический расчёт. Громов глубоко вдохнул, заставляя себя сбросить оцепенение.
Гости прошли в комнату. Люба сразу потянулась к горячей батарее отопления, растирая озябшие пальцы. Громов остановился у стола. Взгляд его скользнул по мерцающему экрану «Юности», задержался на ровных рядах клавиш.
Анна внесла в комнату поднос. Четыре фарфоровые чашки, исходящие паром. Блюдце с лимоном. Сахарница. На столе уже ждала глубокая тарелка с румяными домашними пирожками и щедро нарезанный песочный торт. Звон ложечек о тонкий фарфор и сладкий аромат выпечки наполнили комнату атмосферой ленивого воскресного вечера.
Громов опустился на стул напротив Алексея. Вытянул ноги. Взял чашку двумя руками, согревая ладони о горячие стенки. Сделал мелкий глоток.
Тишина. Только свист ветра за стеклом.
— Леша, — Громов заговорил тихо, глядя в темную гладь чая. — Я тут думал над архитектурой распределения памяти.
Алексей чуть наклонил голову, показывая, что слушает.
— Если мы берем за основу текущую конфигурацию, — программист поднял глаза. Прежняя ирония уступила место аналитическому голоду. — Мы упираемся в потолок. Физический потолок адресации. Я хочу понять, куда двигаться дальше. Чисто гипотетически.
Евгений поставил чашку на блюдце. Керамика звякнула.
— Если заглянуть за горизонт. На три года вперед. На пять лет. Куда пойдет развитие вычислительной техники? Как изменятся требования к софту? Мне нужно понимать вектор, чтобы не закладывать в ядро МикроДОС тупиковые ветви алгоритмов. Пофантазируй для меня. Представь, что ты пророк.
Морозов смотрел на коллегу. Формулировка была безупречной. Ни слова о пришельцах, машинах времени или других эпохах. Никаких прямых вопросов, которые могли бы напугать Анну или Любу. Абсолютно невинная просьба ведущего программиста к архитектору проекта. Просьба дать стратегический ориентир. Громов, вооруженный знанием о происхождении Алексея, аккуратно, словно пинцетом, пытался извлечь из его памяти карту будущего мира.
Алексей принял правила игры.
Он подвинул к себе чашку. Бросил в горячую воду дольку лимона. Наблюдал, как желтая мякоть медленно всплывает на поверхность.
— Через пять лет текст перестанет быть главным средством общения человека и машины, — ровно произнес Морозов.
Громов замер. Люба, перестав тереть руки, повернулась от окна. Анна тихо опустилась в кресло, подтянув колени к подбородку.
— Командная строка — это барьер, — продолжил Алексей, глядя на мигающий курсор телевизора. — Люди мыслят образами, а не операторами синтаксиса. Будущее за графическими интерфейсами. Экран перестанет быть просто терминалом для вывода букв. Он станет рабочим столом. На нем появятся визуальные объекты. Окна, которые можно будет перемещать, перекрывать друг другом. Документы будут выглядеть как листы бумаги.
— Графика жрет память, — мгновенно отреагировал Громов. Его мозг уже переводил концепцию в байты и такты. — Чтобы отрисовать каждый пиксель независимо, нужен колоссальный объем видеоОЗУ. Наша шина просто захлебнется, перекачивая такие массивы. ЦУБ не потянет.
— Восьмибитная архитектура уйдет в прошлое, Женя. Произойдет переход на шестнадцатиразрядные системы. А затем на тридцатидвухразрядные. И на шестидесятичетырёх. А в некоторых случает разрядов будет ещё больше. Шина расширится. Появятся отдельные сопроцессоры, задача которых — только отрисовка графики. Основной кристалл будет разгружен.
Морозов говорил сухо, выстраивая слова в четкие технические блоки. Никакого пафоса. Никаких восторгов по поводу технологий будущего. Только голая физика и математика развития.
— Как управлять этими объектами? — голос Громова сел. Он нащупал на столе карандаш и начал неосознанно крутить его в пальцах. — Стрелками на клавиатуре? Это чудовищно медленно.
— Появятся манипуляторы. Координатные устройства. Коробка с датчиками перемещения, которая лежит на столе под правой рукой. Неуклюжие прототипы есть уже сейчас. Двигаешь ее по плоскости — на экране синхронно двигается указатель. Наводишь на объект, нажимаешь кнопку на корпусе манипулятора. Происходит действие. Запуск программы, выделение текста.
Карандаш в руках Громова замер. Программист смотрел сквозь Алексея. Его зрачки были расширены. В этой тихой советской однушке он только что увидел смерть своей командной строки. Смерть целой эпохи перфокарт и текстовых терминалов.
— Сети, — бросил следующее слово Морозов. — Машины перестанут работать в изоляции. Потребуется создание локальных вычислительных сетей. Обмен данными по кабелю на огромных скоростях. Топология кольца или звезды. Данные будут резаться на пакеты. Каждый пакет получит адрес отправителя и адрес получателя. Канальный контроллер будет проверять целостность кадра, программный слой — собирать пакеты в единый файл на стороне приема.
— Протоколы, — прошептал Громов. — Нужны единые протоколы маршрутизации. Иначе зоопарк стандартов убьет саму идею сети.
— Верно.
Для советской вычислительной школы тысяча девятьсот восьмидесятого года эта мысль звучала как абсолютная технологическая ересь. В реальности, где каждое ведомство и каждый номерной завод лепили свои собственные, совершенно несовместимые аппаратные интерфейсы, где перенос данных с одной машины на другую превращался в мучительный квест с перфолентами и перепайкой кабелей, идея универсального языка казалась чистой утопией.
Министерства ревниво охраняли свои стандарты, возводя непроницаемые цифровые стены между ЕС ЭВМ, СМ ЭВМ и специализированными оборонными комплексами.
Морозов прекрасно понимал, что этот зоопарк форматов — главный тормоз прогресса. Он помнил, как в его исчезнувшем мире глобальная сеть стерла границы между континентами именно благодаря жестко стандартизированным протоколам. Пакет данных должен быть абсолютно слеп к тому, какое «железо» его отправляет и какое принимает. Только так можно было связать воедино неповоротливые вычислительные центры Госплана, заводские станки с ЧПУ и домашние микрокомпьютеры школьников. Алексей смотрел на побледневшего Громова, наблюдая, как тот пытается осмыслить услышанное.
Люба шагнула от окна к столу. Тепло от батареи сменилось холодным светом кинескопа. В ее глазах стоял жесткий, практичный скепсис инженера-схемотехника.
— Леша. Ты рисуешь красивые картинки, — она оперлась ладонями о край столешницы. — Графика, сети, пакеты. А что с аппаратной надежностью? Узел связи на заводе. Стык промышленной сети и компьютера. Там помехи такие, что сварочный аппарат сгорит. Как развязывать питание? Гальваника? Оптроны?
Алексей перевел взгляд на девушку. Люба всегда возвращала его фантазии на землю.
— Оптронные развязки на всех входах, — кивнул Морозов. — Обязательно. Но проблема глубже. По мере роста плотности элементов на кристалле кремния начнет падать отказоустойчивость. Токи станут микроскопическими.
— И любой внешний всплеск перевернет триггер, — закончила мысль Люба.
— Не только всплеск по питанию. Высокоэнергетические частицы. Радиационный фон.
Анна удивленно вскинула брови.
— Радиация? Здесь, на земле?
— Космические лучи, Аня, — Алексей отпил остывающий чай. Вкус лимона стал резче. — Они прошивают атмосферу. При высоких плотностях упаковки памяти случайная частица, пробившая микросхему, вызовет локальный ионизационный трек. И ноль в ячейке памяти физически превратится в единицу. Для текстового редактора это опечатка в букве. Для системы управления самолетом или промышленным роботом — катастрофа.
Люба нахмурилась, мысленно рисуя топологию кристалла.
— Экранировать свинцом каждый корпус невозможно.
— Физику не обмануть. Поэтому надежность перейдет на уровень логики. Бит четности. К каждому байту данных будет аппаратно добавляться девятый контрольный бит. Модуль памяти сам вычисляет сумму единиц. Если при чтении сумма не сходится — система знает, что данные повреждены. В критических узлах, в авиации и космосе, пойдет дублирование и троирование систем. Три процессора считают одну задачу параллельно. Если результаты двух совпадают, а третьего нет — его ответ отбрасывается аппаратным мажоритарным элементом.
Люба медленно кивнула. Сложная, параноидальная архитектура безотказности выстраивалась в ее сознании в стройную схему.
Громов молчал. Он положил карандаш на стол. Костяшки пальцев побелели от того, как сильно он сцепил кисти. Человек, писавший код вслепую, только что получил карту минных полей на десять лет вперед. Масштаб форы, которую они имели перед инженерами соседних НИИ и даже перед западными лабораториями, раздавливал. Им не нужно было набивать шишки, ища тупики.
Алексей пододвинул к себе блюдце с куском торта. Долгое теоретизирование сушило горло, но останавливаться было нельзя.
— Но это только половина дела, — произнес он, отламывая ложечкой мягкое песочное тесто. — Мало знать, куда идти. Нужно понимать, куда сворачивать категорически нельзя. Тупиковых решений будет предостаточно, и нам придется искусно обходить эти подводные камни.
Громов подобрался, вновь взяв в руки карандаш. Аналитический голод в его глазах вспыхнул с новой силой.
— Главная ловушка — жесткая аппаратная привязка кода, — Морозов говорил убедительно, глядя прямо на программиста. — Возникнет колоссальный соблазн написать программу так, чтобы она выжимала все соки из конкретного процессора, используя его уникальные недокументированные инструкции. Это даст прирост скорости сегодня. Но завтра, когда выйдет новый чип, этот код превратится в тыкву. Придется переписывать всё с нуля.
— Ты предлагаешь пожертвовать тактами ради универсальности? — нахмурился Евгений, для которого каждый байт и каждый такт были на вес золота.
— Нам нужна абстракция, Женя. Код должен общаться с железом только через стандартизированные вызовы операционной системы, — непреклонно ответил Алексей. — Второе — монолитная архитектура. Сейчас принято писать огромные, неделимые программы. Ошибка в одном модуле рушит всё. Будущее за тем, чтобы система строилась из независимых блоков. Завис один процесс — остальные продолжают работать.
Люба кивнула, откусывая капустный пирожок:
— Звучит как модульная компоновка на платах. Если сгорел триггер, меняем плату, а не перепаиваем весь шкаф.
— Именно. И третье, — Алексей запил торт остывшим чаем. — Несовместимые стандарты данных. Обязательно захочется создать свой, «самый оптимальный» формат файлов или протокол обмена. Это путь в никуда. Нужно брать универсальные, пусть и избыточные форматы. Иначе мы сами построим цифровые заборы, через которые потом не сможем перелезть.
Громов долго смотрел на свой пустой блокнот, в котором так и не появилось ни одной записи — все эти принципы он вбивал прямо в свою память. Масштаб архитектурных сдвигов, о которых говорил Морозов, пугал и завораживал одновременно.
— Понимаешь, — добавил Алексей, — если мы изначально заложим неправильный фундамент в наше ядро, то через пять лет нам придется не развивать систему, а бороться с ее внутренними костылями. Подводные камни кроются не в слабом «железе», а в недальновидной архитектуре программ.
В тишине комнаты, нарушаемой лишь завыванием ноябрьского ветра за стеклом, слова Алексея звучали как план масштабного наступления. Громов не сводил глаз с Морозова. Спорить с человеком, который уже видел ошибки грядущих десятилетий, было бессмысленно; но реализовывать, проверять и приземлять эти принципы к реальному железу предстояло именно ему. Евгений медленно обошел стол и вернулся к своей чашке. Чай окончательно остыл. Он сделал большой глоток холодной, терпкой жидкости, смакуя не столько напиток, сколько кристальную ясность поставленной перед ним задачи.
Быть тем, кто переведет это далекое будущее на язык реального железа тысяча девятьсот восьмидесятого года — вот задача, по-настоящему достойная жизни.
— Значит так, — голос Громова обрел твердость. — Я переписываю ядро. Разбиваю МикроДОС на модули. Видеодрайвер выношу в отдельный блок. Обработку прерываний изолирую. Мы создадим архитектуру, в которую потом, через три года, можно будет встроить твой манипулятор без переписывания всей системы.
Евгений посмотрел на Алексея.
— Ты даешь мне принципы обмена и ограничения по адресации. Не сегодня. На неделе. Я начну закладывать резерв в системные таблицы и формат обмена. Под будущие адреса узлов.
Морозов кивнул.
— Завтра обсудим структуру.
Они говорили еще долго. Незаметно стемнело, ветер за окном стих, а чайник на кухне пришлось кипятить заново. Громов исписал мелким почерком несколько страниц своего блокнота, пока, наконец, Люба решительно не закрыла его записи ладонью.
— Всё, мальчики, хватит. Нельзя же всё время только работать, надо иногда и просто жить, — Люба отошла от телевизора и принялась аккуратно складывать свой шерстяной шарф. В ее тоне зазвучали привычные, заземляющие нотки. — А завтра, между прочим, понедельник. Леша, нам на этой неделе нужно обязательно связаться с лауреатами Олимпиады. Не все нам ответили, надо официально приглашать ребят на награждение в декабре.
— Декабрь… — Анна задумчиво улыбнулась, подливая гостям свежего чая. — А ведь скоро Новый год. Знаете, нам обязательно нужно отметить его всем вместе.
— Отличная идея, — оживилась Люба. — Можно позвать Липатовых. И Олега с Наташей.
— Только мы все здесь не поместимся, — резонно заметил Алексей, оглядывая свою небольшую гостиную, которая и без того казалась тесной от обилия техники.
— А давайте соберемся у Липатовых? — предложила Анна. — У них квартира большая, места точно всем хватит. Думаю, они будут не против.
Громов моргнул, словно выныривая из глубин машинного кода в обычную человеческую реальность. Видения глобальных сетей и графических окон отступили, сменившись уютной перспективой мандаринов, елки и праздничного стола.
— Я за, — кивнул Евгений, пряча свой пухлый блокнот в карман. — Главное — вовремя распределить задачи, кто что готовит.
Анна пододвинула гостям тарелку с выпечкой.
— Угощайтесь еще, пирожков много.
Громов подошел к вешалке, снимая свое тяжелое пальто.
— Завтра начнем перекройку ядра, — сказал он, набрасывая драп на плечи. — Нужно будет оптимизировать процедуры вывода на экран, чтобы не перегружать шину лишними вызовами.
— Перепиши через прямой доступ к видеопамяти, — кивнул Алексей, убирая со стола пустые блюдца. — Обойди стандартную процедуру вывода символа. Пиши прямо по адресам.
— Сделаю.
Люба замотала шею шарфом, скрывая подбородок.
— Спасибо за гостеприимство, Аня. Чай с вашим лимоном был чудесный, — улыбнулась девушка. — Где достали-то? Найти цитрусовые в ноябре — это подвиг похлеще нашей трассировки плат.
— В гастрономе на углу выбросили, случайно застала, — тепло отозвалась Анна.
Громов пожал Алексею руку. Хватка программиста была крепкой. В ней чувствовалась новая, осознанная сила.
Захлопнулась входная дверь. Щелкнул замок.
В квартире снова стало тихо. Ветер за окном стих. Мороз окончательно сковал город ледяным панцирем.
Алексей вернулся к столу. Оперся о край столешницы. Анна собирала чашки на поднос, на ее лице блуждала легкая, теплая полуулыбка.
Морозов перевел взгляд на мерцающий экран телевизора «Юность». Он сидел в уютной квартире, пропахшей лимоном, выпечкой и чаем, и слушал едва уловимый гул — биение примитивного, но живого цифрового сердца машины, которую они создавали своими руками.
Впереди была тяжелая неделя.