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