Представьте: вы пишете инструкцию по эксплуатации для автомобиля, который существует только в чертежах. Более того — вы придумываете, как на этом несуществующем автомобиле объехать препятствие, которое водители научатся распознавать только через сто лет. Именно это сделала Ада Лавлейс в 1843 году, создав первый алгоритм для машины, которая никогда не была построена.
Чарльз Бэббидж проектировал монстра. Его аналитическая машина должна была весить несколько тонн, приводиться в движение паром и содержать тысячи латунных шестерёнок. Четыре арифметических операции — сложение, вычитание, умножение, деление — выполнялись бы механически, через систему зубчатых колёс, где каждое число кодировалось углом поворота оси.
Бэббидж придумал то, что сегодня называется архитектурой компьютера: «склад» для хранения чисел (аналог памяти), «мельницу» для вычислений (процессор) и перфокарты для ввода инструкций (программирование). Перфокарты он подсмотрел у ткацких станков Жаккара — там дырки в картоне управляли узором ткани. В аналитической машине дырки управляли потоком чисел.
Проблема была в том, что викторианская Англия не могла изготовить детали с нужной точностью. Станки того времени давали люфт в доли миллиметра — достаточный, чтобы шестерёнки заклинивало после нескольких оборотов. Бэббидж потратил десятилетия и королевский грант, но машина так и осталась на бумаге. К 1840-м проект считали причудой гениального чудака.
Итальянский математик Луиджи Менабреа в 1842 году опубликовал описание аналитической машины на французском. Статья была корректной, но сухой — перечисление механизмов без визии. Бэббидж попросил Лавлейс перевести текст на английский.
Она перевела. А потом добавила примечания. Семь секций, помеченных буквами от A до G. Объём примечаний втрое превысил оригинал Менабреа. Работа вышла в 1843 году в журнале Taylor's Scientific Memoirs под инициалами А.А.Л. — полное имя женщины-автора могло отпугнуть читателей.
В примечании A Лавлейс сформулировала идею, которая опережала время на столетие: машина способна обрабатывать не только числа, но и любые символы, подчиняющиеся правилам. Она писала, что аналитическая машина могла бы сочинять сложную музыку, если бы правила гармонии были выражены алгебраически. Это первое описание того, что сегодня называется символьными вычислениями — фундамента компьютерной графики, синтеза звука, обработки текста.
Но настоящая бомба ждала в примечании G.
Числа Бернулли — последовательность дробей, всплывающая в теории чисел, анализе и комбинаторике. Вычислять их вручную — пытка. Каждое следующее число зависит от всех предыдущих через рекурсивную формулу. Например, чтобы найти B₇ (восьмое число, поскольку счёт начинается с B₀), нужно уже знать семь предыдущих и выполнить десятки операций.
Бэббидж дал Лавлейс математические формулы. Она взяла их и сделала то, что сегодня назвали бы «написала код». В примечании G она изложила пошаговый алгоритм: какие числа загрузить в «склад» машины, какие операции выполнить в «мельнице», когда вернуться назад и повторить цикл, когда остановиться.
Программа содержала 25 операций и впервые в истории использовала структуру, которую программисты XX века назовут циклом с условным переходом. Лавлейс объяснила: если счётчик итераций ещё не достиг нужного значения — вернись к началу блока вычислений. Если достиг — выйди из цикла. Это базовая логика любого современного алгоритма, от сортировки массива до нейросети.
Есть ирония: в операции 4 Лавлейс перепутала переменные. Вместо деления V₄ на V₅ она записала деление V₅ на V₄. Программа содержала баг. Первый алгоритм в истории был одновременно первым багом в истории.
Бэббидж был блестящим инженером, но неряшливым математиком. Предоставляя Лавлейс формулы для чисел Бернулли, он допустил ошибку в расчётах. Лавлейс обнаружила её, самостоятельно проведя алгебраическую работу. Она писала Бэббиджу с вежливой настойчивостью: проверьте заново, у меня выходит иначе.
Эта деталь важна. Лавлейс не была просто переводчицей или секретарём гения. Она спорила с формулами, проверяла выкладки, находила чужие промахи. Её вклад — не литературная обёртка для чужих идей, а самостоятельная инженерная работа: преобразование абстрактной математики в последовательность конкретных механических действий.
Викторианское общество не знало, что с этим делать. Женщина могла быть музой, переводчицей, хозяйкой салона — но не инженером, проектирующим механизм мышления. Рецензии хвалили «элегантность изложения» и «верность оригиналу», не замечая, что оригинал был всего лишь каркасом.
Статья Менабреа с примечаниями Лавлейс пылилась в архивах, пока в 1950-х её не перечитал Алан Тьюринг. Он работал над теорией вычислимости и искал исторические корни своих идей. В примечании A Тьюринг нашёл почти дословную формулировку того, что сам назвал «универсальной машиной» — устройством, способным имитировать любой алгоритм.
К тому времени ENIAC — первый электронный компьютер общего назначения — уже считал баллистические таблицы. Программисты 1940-х заново изобретали циклы, условные переходы, подпрограммы. Они не знали, что диаграмма для вычисления чисел Бернулли существовала с 1843 года.
История вычислительной техники переписала генеалогию. Лавлейс перестала быть сноской в биографии Бэббиджа. Язык программирования Ada, стандарт американского Министерства обороны, назван в её честь. Ежегодный Ada Lovelace Day отмечается во второй вторник октября.
Но есть парадокс: аналитическая машина была построена только в 1991 году, когда Лондонский музей науки собрал разностную машину Бэббиджа по оригинальным чертежам. Она работала. Латунные шестерёнки считали без единого сбоя. Алгоритм Лавлейс для чисел Бернулли до сих пор не запускали на физической машине — программа осталась артефактом бумажной эпохи, который мы можем только эмулировать на кремниевых потомках той самой идеи, которую она описала первой.