В 1840-х годах программирования еще не существовало, как и полноценных компьютеров, но первая программа появилась уже тогда. Правда, поняли это спустя столетие. Рассказываем, что именно сделала Ада Лавлейс для женщин в науке и современной информатики в целом.
Ежегодно осенью отмечается международный День Ады Лавлейс, которую многие знают как первую в мире программистку. Его основная цель — поднять авторитет женщин в STEM-дисциплинах (science, technology, engineering & mathematics) и напомнить о том, что они сыграли крайне важную роль в эволюции технологий. Под брендом Лавлейс ежегодно проходят десятки мероприятий в IT: фестивали, воркшопы, лекции и вручения наград.
Очевидно, что сегодня она — икона феминистского движения. Но так было не всегда; до поры ее слава была ограничена (впрочем, безвестной ее сложно назвать даже в XIX веке). В статье пробуем выяснить, какой вклад внесла Ада Лавлейс в современный кодинг, какие есть споры на этот счет и с чем еще ассоциируется ее имя.
Так кто же все-таки Ада Лавлейс
Начать можно с того, что она — дочь лорда Джорджа Байрона, английского поэта, путешественника и повесы, чья биография полна как реального эпатажа, так и мистификаций. И хотя автор «Дон Жуана» считается одним из главных романтиков мира, мужем и отцом он был, судя по всему, скверным, свою дочь ни разу не видел и развелся с Анабеллой (Анной Изабеллой) Байрон — матерью Ады — вскоре после ее рождения.
Развод сопровождался скандалом, ударившим по репутации писателя, что, впрочем, могло быть единственным способом для Анабеллы получить социальное одобрение, финансовую независимость и опеку над дочерью в довольно патриархальной Англии XIX века, пишет Дороти Стейн в книге «Ада: жизнь и наследие» (к этой биографии мы еще вернемся).
Пожалуй, основной вклад Байрона в том, что именно он одним из первых популяризовал имя дочки в буквальном смысле. При рождении в 1815-м девочку нарекли Августиной (в честь сводной сестры лорда), но сам писатель называл ее исключительно Адой (он справлялся о ее делах в переписке) и упоминал, что это — семейное имя, и восходит оно ко временам правления Короля Иоанна.
Вклад Анабеллы в жизнь дочери был более существенным, но и она относилась к ней отстраненно, а материнскую заботу проявляла скорее из страха перед общественным осуждением. Воспитанием девочки в классическом смысле занималась в основном ее бабушка Джудит Милбенк.
Опасаясь, что Ада унаследует от отца бунтарский нрав и «безумие», леди Байрон настояла, чтобы она обучалась естественным наукам и, в частности, математике. Образованием мисс Байрон с 17 лет занимался, например, «один из последних антиньютоновцев» Уильям Френд, физик Уильям Кинг, специалистка в области математики и астрономии Мэри Сомервилль. Позднее, уже в 1940-х, Аду консультировал шотландский математик и логик Огастес де Морган.
В 1835-м мисс Байрон вышла замуж за Уильяма Кинга-Ноэля (не путайте его с учителем Ады), тоже ученого, который вскоре унаследовал титул лорда Лавлейса. У них было трое детей. Умерла Ада 27 ноября 1852 года, когда ей было 36 лет. В том же возрасте и по той же причине — от процедуры кровопускания (в то время считалось, что это может лечить некоторые заболевания, например, рак) — умер ее отец.
Всю жизнь Ада Лавлейс интересовалась научными достижениями своего времени, в том числе причудливыми френологией и месмеризмом, а в 1844-м даже размышляла над созданием математической модели того, как мозг рождает мысли, а нервные окончания — чувства. Однако больше всего Ада все-таки известна по работе с профессором из Кембриджа Чарльзом Бэббиджем.
Почему Аду называют первой программисткой
Ада познакомилась с Бэббиджем в том же семнадцатилетнем возрасте, во многом благодаря Мэри Сомервилль. В то время профессор работал над Разностной машиной — чем-то вроде огромного калькулятора для частичной автоматизации вычисления математических таблиц (здесь емко описан принцип ее работы).
Аду вдохновили идеи Бэббиджа, а он, в свою очередь, был впечатлен умственными способностями девушки, которую называл Чародейкой чисел (The Enchantress of Number). Много лет они переписывались и встречались лично, обсуждая математические концепции.
Несмотря на субсидии от правительства Великобритании (в сумме — порядка £17 тысяч), Бэббидж так и смог построить разностную машину ни за три, ни за десять лет. Когда финансирование закончилось, он переключился на другое изобретение — так называемую «аналитическую машину», которая (в теории) могла не только табулировать логарифмы, но и вести другие полезные вычисления для инженеров и математиков (подробно о ее устройстве написано тут). Ее, вероятно, можно считать одним из первых прототипов современного компьютера. Например, в машине должны были использоваться перфокарты, идею которых Бэббидж позаимствовал у ткацких станков Жаккарда.
О работе новой аналитической машины Бэббидж рассказывал в Туринском университете в 1842 году, и по мотивам этого выступления итальянский инженер Луиджи Менабреа (впоследствии — премьер-министр Италии) написал статью на французском языке. Она вышла в академическом журнале «Bibliothèque universelle de Genève» в том же году.
В 1842–1843 гг. леди Лавлейс, по просьбе Чарльза Уитстона, перевела эту статью на английский, сопроводив своими комментариями. Материал был опубликован в одном из выпусков «Scientific Memoirs» и подписан инициалами A.A.L. Он содержал 66 страниц, причем на 41 были как раз уточнения Ады. Самое примечательное из них последнее — заметка G, которая сейчас многими исследователями считается первой в истории компьютерной программой.
Какую конкретно программу написала Лавлейс
В примечаниях Ады о принципах работы аналитической машины (и ее отличиях от разностной) упоминаются числа Бернулли — это последовательность рациональных чисел, которые довольно часто используются в матанализе. Ученая объясняет, как машина Бэббиджа могла бы их вычислить, если бы была однажды построена.
Числа Бернулли были выбраны не случайно. Как пишет Science Focus, они очень хорошо подходят для машинного вычисления, поскольку определяются рекурсивно. Это значит, что зная первое число, можно найти второе, а зная второе — посчитать третье. Причем сделать это можно несколькими способами, и Лавлейс выбрала не самый простой. Ее интересовала не легкость достижения цели, а наиболее яркая демонстрация возможностей вычислительной машины.
Выглядела ее заметка, по сути, как обычная таблица, в ячейках которой были прописаны данные, переменные и промежуточные результаты для разных этапов расчета. Формально это была даже не программа, а то, что программисты сейчас называют трассировкой — то есть процесс пошагового выполнения программы.
Сейчас заметка Ады помещается в паре строчек кода (вот пример реализации на языке Python), но в то время не было даже такого термина — «программа», а если бы он существовал, ей можно было бы считать колоду перфокарт. Другая сложность в том, что не было и самой работающей машины, поэтому ученая по сути работала «виртуально» на двух уровнях, говорит исследовательница Сейди Плант: писала виртуальный алгоритм для виртуальной машины. С идеологической точки зрения все это не принципиально и не мешает называть Лавлейс именно программисткой. Если вопросы к ней у кого-то и возникают, связаны они не с этим.