Обратната инженерна разработка на събрана компютърна програма беше най-трудният занаят, който един програмист можеше да усвои. В сравнение с него писането на програми, дори на най-сложните, беше като детска игра. Програмистът можеше да използва всеки от дузината езици, за да създаде програма. Всеки от тези езици улесняваше живота на шифровчиците, позволявайки им да използват английски думи — наречени сорс код, — вместо да ги принуждава да използват само цифри, от които компютрите действително разбираха. Онези английски команди бяха конвертирани в числа от компилатор, еднопосочен преводач между двете.
Обратното инженерство бе занаятът да превърнеш тези сурови цифри обратно в английски команди без сорс код, който да те напътства. Все едно да превеждаш от простонароден египетски без помощта на Розетския камък132 — Хората мислят в стандартната десетична система, където цифрите вървят 0-1-2-3-4-5-6-7-8-9, преди да се добави втора цифра към първата, за да стане 10. Компютрите мислят в осембитов бинарен код — с база две, където последователността е 00000000-00000001-00000011 и така нататък до безкрайност. Но беше лесно да разчетеш погрешно потоците от нули и единици, докато си пропит от скука, която нито колата, нито кафето можеха да излекуват.
И така Уийвър използва декомпилатор, за да конвертира бинарните числа в шестнадесетични — база дванадесет. Уийвър поне можеше да мисли шестнадесетично, където се броеше 1-2-3-4-5-6-7-8-9-0-a-b-c-d-e-f. Но оттам трябваше да гледа числата и да се опита да ги върне обратно в сорс кода, който изпълняваше същите функции.
В частния сектор плащаха добри пари на малцината, които можеха да обръщат инженерни програми. Това бе полезно умение за всяка компания, опитваща се да открадне софтуерните търговски тайни на конкуренцията, а Уийвър притежаваше точното количество лудост за този занаят. Уменията му трябваше да му носят два пъти повече от държавната му заплата, а „Майкрософт“ и „Гугъл“ му направиха щедри оферти, но патриотичната жилка на Уийвър го задържаше на държавната служба. Той предполагаше, че може да си осигури добър живот чрез корпоративен шпионаж, но тук щеше да прави същите неща, без да се тревожи за закона. Ако Уийвър не се тъпчеше с кофеин — истинската кръв на програмистите навсякъде по света, той би спал със съня на праведните…
Аналитичната програма, дето му донесоха от Червената клетка, беше проста. Китайските шифровчици, които я бяха писали, притежаваха компетентност, но им липсваше вдъхновение. Програмирането беше изкуство, в което ефикасността създаваше естествена елегантност, но най-добрите алгоритми преставаха да бъдат кодирани редове и ставаха нещо красиво, напълно чисто в своята ефикасност и работеха заедно в модулна хармония. Кодираните редове, които Уийвър реконструира цяла нощ, дори не се доближаваха до онова, което бе едновременно благословия и проклятие. Така те ставаха почти предвидими при обръщането им в асемблерен код. Но това ги правеше и скучни което не му помагаше, като се има предвид, че минаваше полунощ.
Алгоритъмът, който Уийвър измъкна от китайската CAD програма, беше по-дълъг от очакваното и по-сложен, отколкото предполагаше размерът му. В МИТ133 изискваха от него да вземе уводен курс по диференциални уравнения и той получи едва средна оценка, така че му отне цял час да се сети, че алгоритъмът е от тях. Беше заел учебниците на колегата си, понеже продаде своите още в колежа, часове след последния изпит. Ала те изобщо не му помогнаха. Стори му се, че този алгоритъм е интегриран в CAD програмата и текстовете по обща математическа теория няма да му помогнат много. По-подходящи биха били текстове по геометрия или машинно инженерство, или може би по физика.
Другите уравнения измерваха най-простите физически свойства — дължина, ширина, дълбочина, площ. Това оставаше константно, когато променливите за размерите се запазваха пропорционални — промяната в общите размери на обекта не променяше изходното уравнение, но промяната във формата го правеше. Той пропускаше нещо… Но какво? Маса? Уийвър изключи това. Тя би се променила заедно с мярката за площ. Издръжливост на опън? Не е възможно без вкарването на специфичния материал, от който е изработена формата, а Уийвър не виждаше начин да влезе в тази стойност на програмата. Реши, че може да са части от цифров генератор, даващ уникални идентификатори на всяка нова част, проектиран така, че да бъде разположен в някоя база данни. Но уравнението беше твърде сложно за това. Дали не бе някаква непозната за него инженерна функция?
132
Част от древноегипетска гранитна стела с гравиран тест, който осигурява ключа към съвременното разбиране на египетските йероглифи. — Б. пр.
133
Massachusetts Institute of Technology — известен американски технически колеж, който се намира в град Кеймбридж, Масачузетс (САЩ) — Б. пр.