Вопрос о том, кто написал первую компьютерную программу, имеет однозначный исторический ответ: это была английская математик Ада Лавлейс. В 1843 году она опубликовала алгоритм для вычисления чисел Бернулли на Аналитической машине Чарльза Бэббиджа. Этот код стал первым опубликованным примером программы, предназначенной для исполнения машиной, а не человеком.
Лавлейс не просто перевела работу итальянского инженера Луиги Менбреа — она добавила собственный комментарий, объём которого превышал исходный текст в три раза. В «Заметке G» она описала пошаговый алгоритм, использующий циклы и условные переходы, что делает её работу прообразом современного разработки ПО.
Ада Лавлейс: первая программистка истории
Огаста Ада Кинг, графиня Лавлейс, родилась в 1815 году в семье поэта Лорда Байрона и Анны Мильбэнк. Мать, опасаясь наследственного безумия отца, наставила дочь на изучение математики и логики. Это решение определило судьбу Ады: она стала одной из немногих женщин того времени, получивших серьезное техническое образование.
В 17 лет Ада познакомилась с Чарльзом Бэббиджем на вечере. Демонстрация прототипа Разностной машины произвела на неё неизгладимое впечатление. Она сразу поняла потенциал механических вычислений, выходящий далеко за рамки простой арифметики. Их переписка длилась годы и заложила фундамент для будущего сотрудничества.
- 👩💻 Первая программистка — признана мировой общественностью как автор первой алгоритмической инструкции для машины.
- 🧠 Визионер — предсказала, что машины смогут сочинять музыку, создавать графику и использоваться в науке, а не только для расчётов.
- 📚 Автор термина «программирование» — хотя слово появилось позже, именно её подход заложил его смысл.
- 🏷️ Имя языку Ada — в 1980-х годах Министерство обороны США назвало в её честь язык высокого уровня для критически важных систем.
⚠️ Внимание: Часто встречается мнение, что Бэббидж написал программы раньше Лавлейс. Он действительно составил несколько последовательностей операций для своих машин, но они были фрагментарными, неопубликованными и не имели структуры полноценного алгоритма с циклами и ветвлениями.
Аналитическая машина Бэббиджа: платформа для первой программы
Аналитическая машина — это проект универсального механического компьютера, над которым Бэббидж работал с 1834 года. В отличие от Разностной машины, предназначенной только для табулирования полиномов, Аналитическая машина обладала архитектурой, поразительно похожей на современные фон-неймановские компьютеры.
Архитектура включала «Мельницу» (арифметико-логическое устройство), «Магазин» (память на 1000 чисел по 50 знаков) и систему управления на перфокартах по типу ткацких станков Жаккара. Машина должна была выполнять четыре основные операции, поддерживать циклы, условные переходы и даже параллельную обработку данных.
Бэббидж так и не собрал рабочий экземпляр машины при жизни — не хватало точности механической обработки и финансирования. Полностью функциональный фрагмент был собран лишь в 1991 году Музеем науки Лондона к 200-летию изобретателя. Это означает, что первая программа в истории была написана для «железа», которое не существовало в металле.
Первая компьютерная программа в истории была написана для несуществующей машины — Аналитическая машина Бэббиджа так и не была построена при жизни изобретателей.
- ⚙️ Мельница (Mill) — аналог современного CPU, выполнял арифметические операции.
- 💾 Магазин (Store) — оперативная память на 1000 ячеек по 50 десятичных разрядов каждая.
- 🃏 Перфокарты операций — задавали последовательность инструкций (программу).
- 🔢 Перфокарты переменных — указывали адреса операндов в Магазине и куда писать результат.
- 🔁 Поддержка циклов — карты могли заставлять машину возвращаться к предыдущим инструкциям.
Заметки к переводу Менбреа: где родился алгоритм
В 1842 году Луиджи Менбреа, будущий премьер-министр Италии, опубликовал на французском языке описание Аналитической машины на основе лекций Бэббиджа в Турине. Бэббидж попросил Аду перевести работу на английский. Она согласилась, но пошла дальше — добавила семь собственных «Заметок», помеченных буквами от A до G.
Именно в Заметке G содержится таблица операций для вычисления чисел Бернулли. Это не просто расчёт: Лавлейс описала процесс как последовательность состояний машины, используя обозначения для переменных, циклов (operation cards, которые возвращаются назад) и работы с памятью. Она фактически изобрела трассировку выполнения программы.
Интересно, что сама Ада не называла это «программированием». Она использовала термин «план разработки» или «диаграмма развития». Современное понятие «софт» и «код» сформировалось только в середине XX века, но суть процесса — передача инструкций исполнителю — была сформулирована ею точно.
☑️ Что делает «Заметку G» первой программой?
⚠️ Внимание: Не путайте «программу» с «кодом на языке высокого уровня». Лавлейс писала микрокод / инструкции для конкретной архитектуры железа. Это было ближе к современному ассемблеру или прошивке FPGA, чем к Python или C++.
Алгоритм вычисления чисел Бернулли: разбор первой программы
Выбор чисел Бернулли не был случаен. Это последовательность рациональных чисел, критически важная для математического анализа, теории чисел и расчёта сумм степеней. Формула их рекуррентного вычисления идеально демонстрировала способность машины к сложной логике: вложенным циклам, делению, умножению и работе с дробями.
Программа Лавлейс состояла из 25 операций (в некоторых подсчётах до 75 с учётом итераций цикла). Она использовала переменные V1–Vn в «Магазине» для хранения промежуточных результатов. Ключевая инновация — использование цикла для повторения блока операций с изменением индексов переменных. Это первый задокументированный случай loop unrolling и работы с индексными регистрами в истории.
Современные исследователи (например, Дорон Свайд из Музея науки Лондона) проверили алгоритм на эмуляторе. Он работает корректно, за исключением одной незначительной ошибки в порядке операций деления/умножения в шаге 4, которую Ада, вероятно, допустила из-за усталости при ручной проверке. Это делает её не просто автором идеи, а практикующим разработчиком, допускающим баги.
Детали ошибки в коде Ады Лавлейс
В шаге 4 алгоритма для вычисления B7 (седьмого числа Бернулли) Ада указала операцию V11 / V2 → V13, а затем V13 * V3 → V13. Правильный порядок для формулы рекуррентного соотношения требует предварительного умножения на коэффициент перед делением, либо перегруппировки скобок. Из-за этого результат накапливает погрешность. Бэббидж в переписке отмечал этот момент, но опубликованная версия осталась с ошибкой. Это первый известный баг в истории программирования.
| Характеристика | Аналитическая машина (проект) | Современный ПК (условно) |
|---|---|---|
| Архитектура | Десятичная, механическая | Двоичная, электронная |
| Память (Store) | 1000 чисел × 50 разрядов | Гигабайты RAM |
| Управление | Перфокарты (Жаккард) | Двоичный код инструкций |
| Программа (Лавлейс) | ~25 операций с циклом | Миллионы инструкций/сек |
| Статус исполнения | Эмуляция (1991+) | Нативное выполнение |
Споры историков: была ли это настоящая программа?
Несмотря на консенсус, в академической среде существуют альтернативные взгляды. Некоторые историки техники (например, Аллан Бромли) утверждают, что Бэббидж написал «программы» для Аналитической машины еще в 1836–1837 годах — черновики последовательностей операций для решения уравнений. Однако эти рукописи не были опубликованы, не имели структурированного описания логики и не предназначались для передачи знаний другому оператору.
Другая позиция: первая программа принадлежит Конраду Цузе (Plankalkül, 1940-е) или команде ENIAC (кейс-программирование 1945 г.). Аргумент: у Лавлейс не было работающей машины, значит, это «теоретическое упражнение», а не программирование. Контраргумент: определение программы — это инструкция для автоматического исполнителя. Наличие железа не меняет онтологический статус текста.
Третий аспект — гендерный. До 1970-х годов вклад Лавлейс часто списывали на Бэббиджа («она лишь записала его идеи»). Феменистская историография науки (Беatriz Камбер, Дороти Штайн) доказала: математическая глубина Заметки G превосходит понимание Бэббиджа последствиями его же изобретения. Ада видела универсальность машины; Чарльз — калькулятор.
При изучении истории IT читайте первоисточники. «Заметки» Лавлейс переведены на русский и доступны в открытом доступе — это лучший способ понять мышление первого программиста без интерпретаций биографов.
Наследие Лавлейс в современном программировании
Влияние Ады Лавлейс выходит далеко за рамки исторической любопытства. Концепция отделения алгоритма от железа — именно она сформулировала идею, что программа — это абстрактная сущность, которую можно писать, не имея под рукой компьютера. Это основа современной разработки: мы пишем код в IDE, компилируем под разные архитектуры, запускаем в облаке.
Она также первой сформулировала пределы машинного интеллекта. В Заметке A она написала: «У Аналитической машины нет претензий на то, чтобы что-либо создавать. Она может делать всё, что мы умеем приказывать ей выполнять». Эта фраза цитируется в спорах об ИИ и творчестве нейросетей до сих пор. Лавлейс провела границу: машина — инструмент расширения человеческого ума, а не его замена.
Прямая линия преемственности проходит через Алана Тьюринга. В своей работе 1950 года «Вычислительные машины и разум» Тьюринг ссылается на «возражение Леди Лавлейс» как на ключевой аргумент, который он пытается опровергнуть тестом Тьюринга. Таким образом, диалог первого программиста и отца теоретической информатики определяет вектор IT уже 180 лет.
- 🏆 День Ады Лавлейс — второй вторник октября, международный день женщин в STEM.
- 💎 Премия Ады Лавлейс — вручается British Computer Society за вклад в IT.
- 🛰️ Язык Ada (MIL-STD-1815) — стандарт для авиации, космоса, ядерной энергетики (номер стандарта — год рождения Ады).
- 🌌 Кратер на Венере и астероид (12477) названы в её честь.
- 📖 Образ в культуре — героиня романов «Разностная машина» (Гيبсон/Стерлинг), «Энchantress of Numbers» (Чиу), сериала «Доктор Кто».
Главный урок Ады Лавлейс для современных разработчиков: программа — это не просто код, а формализованная логика решения задачи, существующая независимо от конкретного исполнителя.
Память о первопроходце: премии, языки и даты
Признание пришло не сразу. Почти столетие Ада Лавлейс оставалась сноской в биографиях Бэббиджа. Ренессанс интереса начался в 1950-х, когда Боудин опубликовал её Заметки в сборнике «Быстрее мысли». В 1979 году Министерство обороны США утвердило язык Ada (MIL-STD-1815), сделав её имя стандартом де-факто для систем высокой надежности.
Сегодня имя Лавлейс стало символом разнообразия в технологиях. Инициативы вроде Ada Lovelace Day или фонда AnitaB.org используют её образ для привлечения девушек в программирование. Это редкий случай, когда историческая фигура XIX века напрямую влияет на HR-политику корпораций XXI века.
Если вы пишете свой первый Hello, World!, помните: вы повторяете жест Ады Лавлейс 1843 года. Она передала инструкцию машине, которой не существовало, на языке, которого не было, предвидев будущее, в котором мы живём сейчас. Это и есть суть программирования — создавать реальность словом (кодом).
❓ FAQ: Часто задаваемые вопросы
Написала ли Ада Лавлейс код на современном языке программирования?
Нет. Она описала последовательность операций для механической машины Бэббиджа в табличной форме с обозначениями переменных и циклов. Это был микрокод / ассемблер для несуществующего процессора. Современные языки появились только через 100 лет.
Почему Аналитическая машина не была построена при жизни Бэббиджа?
Основные причины: нехватка государственного финансирования (британское парламента прекратило гранты после провала с Разностной машиной), несовершенство точной механики XIX века (требуемые допуски были недостижимы) и конфликты Бэббиджа с инженером Клементом.
Что такое числа Бернулли и зачем их считать?
Числа Бернулли — последовательность рациональных чисел, встречающихся в разложении тригонометрических функций, суммах степеней натуральных чисел и теории чисел (например, в формуле Римана). Их ручной расчёт крайне трудоёмок, что делало их идеальной демонстрацией мощности машины.
Есть ли у Ады Лавлейс прямые потомки в IT-индустрии?
Прямых «наследников кода» нет, но её идеологические наследники — все программисты. Биологические потомки Ады (семья графов Лавлейс) существуют до сих пор, но не связаны с IT профессионально. Последний известный представитель рода — Саймон Лавлейс, граф Лайм-Кейс.
Где можно увидеть оригинал «Заметки G»?
Оригинал статьи Менбреа с заметками Лавлейс (1843) хранится в Британской библиотеке. Полный текст на английском доступен в открытом доступе на сайте Fourmilab (fourmilab.ch/babbage/sketch.html) и в репозитории Project Gutenberg. Русский перевод есть в изданиях «ПостНаука» и на портале «Элементы.ру».