10 декабря 2015 года всё мировое компьютерное сообщество отметило эпохальное событие. 200 лет назад у великого лорда Байрона родилась дочь, которая стала первым программистом планеты. Звали её Ада Августа, леди Лавлейс.
Кто такая эта АДА, в честь которой был назван язык программирования? Почему 10 декабря считается «Днём программиста»? Казалось бы, какое отношение дама может иметь к программированию? Ведь всяк знает, что настоящий программист — это мужчина. Попытка же привлечь даму к благородному делу программирования опасна, ибо дама «по определению» не способна ни понять задачу, ни сформулировать алгоритм её решения…
Те, кто интересовался историей вычислительной техники, знает, что первая вычислительная машина была механической. Речь идёт о вычислительной машине Бэббиджа. Поводом для её создания послужила нужда Британского Адмиралтейства в навигационных таблицах, которые требовалось регулярно (раз в год) пересчитывать по одному и тому же алгоритму. По некоторым данным, еще в 1812 году 21-летний английский математик Чарльз Бэббидж высказывал мысль о возможности выполнения табличных вычислений машиной. Но лишь спустя 10 лет он реализовал свои мечты, создав работоспособный прототип чисто механической т.н. «разностной машины». Она была предназначена для задач табулирования (вычисления значений функции для формирования таблиц). Речь шла о функциях, которые вычислялись методом конечных разностей (цифровой аналог дифференциального исчисления).
Проект получил финансирование от Британского Адмиралтейства. Его не хватало и не могло хватить: существовавший на тот момент уровень технологий изготовления механических элементов не позволял создать столь сложное, напомню, чисто механическое, устройство с требуемой точностью. В 1834 году, так и не решив поставленной и профинансированной задачи, Бэббидж приступил к созданию ещё более универсальной АНАЛИТИЧЕСКОЙ машины, которая, по его замыслу, могла исполнять любые алгоритмы (в т.ч. с использованием ветвления и цикла). Копия «Большой разностной машины Бэббиджа», воссозданная в 1891 году по их чертежам и описаниям, находится в лондонском Музее науки. В Сети есть видеоролик с демонстрацией работы реконструированной разностной машины Бэббиджа (цикл вычислений соответствует одному повороту рукояти, результат распечатывается на ленте) из Computer History Museum (город Mountain View, Калифорния, США).
(Несколько десятилетий спустя дифференциальную машину (по сути, упрощённую версию первой машины Бэбиджа), пригодную для реального вычисления адмиралтейских таблиц, довёл до ума другой человек (и задача была проще, и технология изготовления механических устройств успела кое-чего достичь). и эти упрощённые машины реально эксплуатировались).
Надо сказать, что Бэббидж, будучи великим учёным и инженером, не умел рассказывать о своей работе так, чтобы его понимали хотя бы коллеги. Одной из первых, кто попытался понять, что именно создал великий Бэббидж, стала Ада Байрон (в замужестве леди Лавлейс).
Ада была странной девочкой. И отец (который не видел её после того, как ей исполнилось два месяца), и мать больше всего опасались, что она последует по стопам отца. Поэтому её параллельно пытались сделать светской дамой и обучали точным наукам, всячески поощряя её интерес к ним. Миссис Анна Изабелла Байрон (Анабелла) и сама не была чужда точным наукам (муж даже прозвал её «королевой параллелограммов»). Есть сведения, что с 12 до 17 лет юная Ада болела корью и лежала в кровати, поэтому занятия математикой были для неё своего рода «светом в окошке». Мать пригласила для Ады своего бывшего учителя шотландского, математики и логики Огастеса де Моргана и знаменитую Мэри Сомервилль, которая перевела в своё время с французского «Трактат о небесной механике» математика и астронома Пьера-Симона Лапласа.
Именно Мэри стала для своей воспитанницы примером для подражания. Морган и его жена, а также супруги Соммервилль поощряли научные устремления юной Ады, не вполне традиционные для юной леди первой половины XIX века. Они и познакомили в 1834 году юную Аду с Бэбиджем. Чарльз Бэббидж в момент их знакомства был профессором на кафедре математики Кембриджского университета, как, к слову сказать, и сэр Исаак Ньютон за полтора века до него. Вместе с Соммервилем девятнадцатилетняя Ада впервые посетила Бэббиджа в его мастерской и вскоре стала часто бывать у Бэббиджа. Нередко сопровождавшая её миссис де Морган в своих воспоминаниях так описала один из первых визитов: «Пока часть гостей в изумлении глядела на это удивительное устройство с таким чувством, как говорят, дикари первый раз видят зеркальце или слышат выстрел из ружья, мисс Байрон, совсем ещё юная, смогла понять работу машины и оценила большое достоинство изобретения».
Бэббидж всячески поощрял увлечение юной дамы математикой. Она была ровесницей его рано умершей дочки, и его отношение к Аде было скорее отеческим. Позднее Ада познакомилась с другими выдающимися личностями той эпохи: Майклом Фарадеем, Дэвидом Брюстером, Чарльзом Уитстоном, Чарльзом Диккенсом.
В 1835 интерес юной леди к математике прервался по весьма уважительной причине — она вышла замуж за 29-летнего лорда Кинга, который впоследствии стал графом Лавлейс. У них родились трое детей (в 1836 году — сын, в 1838 — дочь и в 1839 — сын). Муж не возражал против увлечений жены и даже финансировал их. Вот что писали про неё современники: «Наряду с совершенно мужской способностью к пониманию, проявлявшейся в умении решительно и быстро схватывать суть дела в целом, леди Лавлейс обладала всеми прелестями утонченного женского характера. Её манера, её вкусы, её образование — особенно музыкальное, в котором она достигла совершенства,— были женственными в наиболее прекрасном смысле этого слова, и поверхностный наблюдатель никогда не угадал бы, сколько внутренней силы и знания скрыто под её женской грацией. В той же степени, в какой она не терпела легкомыслия и банальности, она получала удовольствие от истинно интеллектуального общества и поэтому энергично искала знакомства со всеми, кто был известен в науке, искусстве и литературе».
В 1841 году Ада Лавлейс предлагает Бэббиджу тесное сотрудничество по описанию и продвижению его Аналитической машины. В одном из писем к Бэббиджу она настаивает: «Вы должны сообщить мне основные сведения, касающиеся Вашей машины. У меня есть основательная причина желать этого». В другом письме Ада излагает свои планы: «…Некоторое время в будущем (может быть в течение 3-х или 4-х, а возможно, даже многих лет) моя голова может служить Вам для Ваших целей и планов… Именно по этому вопросу я хочу серьёзно поговорить с Вами».
Предложение Бэббиджем было принято, но чисто авторской работы не получилось. В 1842 году Чарльз Бэббидж проводил семинар по своей Аналитической машине в Туринском университете. Присутствовавший на семинаре инженер Луиджи Менабреа (будущий премьер-министр Италии) записал лекцию на французском, и впоследствии она была опубликована в Общественной библиотеке Женевы. В статье было много неточностей и «тёмных мест». Ада Лавлейс взялась за её перевод и комментирование. Комментарии согласовывались с Бэббиджем и заняли в целом аж 52 листа. По объёму и значимости они превзошли первоначальную статью Менабреа.
Спустя год труд Ады Лавлейс был передан в типографию. Несмотря на то, что данные комментарии являются единственным печатным трудом Ады Лавлейс, именно они обессмертили её имя. В комментируемом материале было представлено просто описание машины Бэбиджа, в комментариях же впервые появляются понятие программы для машины Бэббиджа, алгоритма и блок-схемы как средства описания алгоритма. Общепринятые графические средства для описания блок-схем (прямоугольник для действия и ромб для ветвления) также впервые появились в этой работе.
Самая простая (без циклов, но с ветвлениями) программа касалась решения двух линейных уравнений с двумя неизвестными. При её описании появилось понятие рабочих ячеек и изменения их состояния (аналог оператора присваивания). Более сложная программа с применением простых циклов касалась вычисления тригонометрических функций. Третья программа (вычисление чисел Бернулли) предполагала вложенные циклы.
Надо сказать, что во времена Бэббиджа никто не видел никакого другого применения вычислительных машин, кроме вычислений (как правило, речь шла о многократных табличных вычислениях). Тем интереснее гениальная догадка Лавлейс о том, что и нечисловыми объектами (если воспользоваться кодированием) можно манипулировать с помощью вычислительных машин. Не будем забывать, что её учителем был математик и логик Август де Морган. Как показала жизнь, именно нечисловые применения числовых вычислительных машин сделали их массовым и персональным устройством. Но всё это будет позже…
Бэббидж и Вильям Лавлейс (муж Ады Лавлейс) увлекались скачками. Бэббидж даже пытался применить математические методы для расчёта оптимальной стратегии ставок на скачках. К сожалению, эта «страстишка» захватила и Аду Лавлейс. Мужчины к азартным играм сравнительно быстро остыли, а Ада «зависла». Наделала долгов, которые пришлось выкупать её матери, ухитрилась связаться с дурной компанией и понаписать компрометирующих писем некоему Джону Кроссу, которыми её пытались шантажировать (их тоже пришлось выкупать).
Трудно сказать, что было решающим — наследственность (её отец, лорд Байрон, умер рано в 37 лет) или треволнения в связи с долгами и шантажом, но Ада Лавлейс тяжело заболела и, как и её отец, умерла, не дожив до 37 лет (27 ноября 1852 года).
В 1980 году был разработан язык для программирования параллельных процессов, который был назван АДА в честь Ады Лавлейс. Язык разрабатывался с 1975 года по уникальной процедуре. Сначала несколько фирм сделали первоначальные предложения, лучшие из них затем были проработаны более детально. По результатам отобрали и язык-прототип (Паскаль), и основные принципы будущего языка, собрали общую команду разработчиков. Язык был широко распространён в США как стандарт Министерства обороны для Американских вооруженных сил, а в дальнейшем и для всего НАТО. Принят язык был 10 декабря 1980 г. — в годовщину со дня рождения Ады Лавлейс. В штатах Алабама и Оклахома в честь Ады Лавлейс названы два города. В Оклахоме есть колледж её имени.
А 10 декабря — день, когда родилась Авгу́ста А́да Кинг (урождённая Ба́йрон), графиня Ла́влейс, — для всех программистов мира стал их профессиональным праздником — «Днём программиста».