История языка программирования Ada и женщины, подарившей ему своё имя
Не так уж и много существует «женских» эпонимов, то есть объектов, названных в честь женщин. Мир высоких технологий долгое время считался исключительно «мужской» территорией, но и здесь – прекрасное исключение. Один из самых надежных, строгих и критически важных языков программирования на планете носит имя Ада (Ada) в честь Ады Лавлейс, первой в мире программистки. Что характерно, первая в мире программа была написана в 19-м веке, когда ещё не было компьютеров.
Этот язык создавался не для написания мобильных игр или дизайна сайтов. На нем работают бортовые компьютеры пассажирских лайнеров Boeing и Airbus, системы управления космическими аппаратами NASA и ESA, автопилоты высокоскоростных поездов и автоматика атомных электростанций.
Почему же военное ведомство США решило назвать свой главный программный инструмент именно в честь английской леди из XIX века? Кем была эта женщина, чьё имя стало синонимом абсолютной надежности в мире цифр?
1. Дочь поэта и «Принцессы параллелограммов»
Чтобы понять происхождение эпонима, нам придется перенестись в Лондон эпохи Регентства (1811–1820 годы). 10 декабря 1815 года на свет появилась Огаста Ада Байрон. Она была единственным законнорожденным ребенком великого поэта-романтика лорда Джорджа Гордона Байрона и его супруги Аннабеллы Милбенк.
Брак родителей оказался катастрофой. Лорд Байрон был человеком буйного нрава, страстным, импульсивным и склонным к авантюрам. Аннабелла, напротив, увлекалась точными науками и логикой. За это Байрон иронично прозвал её «Принцессой параллелограммов», впрочем не зная, что же называют столь красивым словом. Спустя всего пять недель после рождения малышки супруги расстались навсегда. Байрон навсегда покинул Англию и больше никогда не видел дочь, хотя до конца дней упоминал её в своих стихах.
Леди Аннабелла панически боялась, что Ада унаследует «опасный», бунтарский и пылкий нрав своего отца-поэта. Чтобы «укротить воображение» девочки и привить ей дисциплину, мать наняла лучших репетиторов Кембриджа и заставляла дочь изучать математику, астрономию, латынь и физику.
Надо сказать, что занятия наукой не были для Ады наказанием. Она обожала математику и проявила в ней выдающиеся способности. Хотя и поэтическое воображение отца никуда не исчезло. Оно просто соединилось с точной логикой, образовав удивительный сплав. Сама Ада позже называла свой подход «поэтической наукой» (poetical science). В возрасте 12 лет она, изучила анатомию птиц и разработала детальный проект летательного аппарата, приводимого в движение паровым двигателем с подробными чертежами и расчетами.
2. Встреча с гением и рождение первой программы
Судьбоносный поворот в жизни 17-летней Ады произошел в 1833 году на одном из светских вечеров в Лондоне. Там она познакомилась с Чарльзом Бэббиджем, профессором математики Кембриджского университета и известным изобретателем.
Бэббидж демонстрировал публике действующий макет своего изобретения, разностной машины. Это было механическое устройство для автоматического вычисления математических таблиц). Пока большинство гостей рассматривали шестеренки как диковинную игрушку, Ада сразу поняла глубинный смысл изобретения.
Позже Бэббидж приступил к проекту ещё более амбициозного устройства – Аналитической машины. По сути, это был проект первого в мире механического компьютера общего назначения, работающего на перфокартах. Архитектура машины опиралась на терминологию текстильной промышленности того времени и содержала два ключевых узла:
«Склад» (Store) — аналог современной оперативной памяти, предназначенный для хранения чисел и промежуточных данных.
«Фабрика» (Mill) — аналог процессора (арифметико-логического устройства), где происходила непосредственная «переработка» чисел и выполнение операций.
В 1842 году итальянский инженер Луиджи Менабреа опубликовал на французском языке статью с описанием Аналитической машины Бэббиджа. Ада (к тому моменту уже графиня Лавлейс) перевела эту статью на английский язык. Однако Бэббидж предложил ей дополнить перевод собственными комментариями.
Эти комментарии, скромно подписанные инициалами A.A.L. (Augusta Ada Lovelace), оказались в три раза длиннее самой статьи! В знаменитой «Заметке G» (Note G) Ада написала детальный, пошаговый алгоритм для вычисления чисел Бернулли с помощью Аналитической машины.
Этот алгоритм содержал понятие циклов, ветвлений и адресных ячеек. Сегодня научное сообщество единогласно признает «Заметку G» первой в истории человечества компьютерной программой, а саму Аду Лавлейс — первым программистом.
Но самое главное заключается в другом. Бэббидж видел в своей машине лишь гигантский калькулятор для сложения и умножения чисел. Ада, обладавшая навыками «поэтической науки» (говоря проще, имевшая на плечах умную голову) совершила прорыв философского масштаба: она предсказала, что если машина может манипулировать числами, то она сможет работать с любыми видами информации, которые не сложно закодировать с помощью цифр.
К сожалению, Аналитическая машина так и не была построена при жизни изобретателей из-за отсутствия финансирования, а более того, из-за отсутствия такой машиностроительной дисциплины, как допуски и посадки. В машине Бэббиджа должны были слаженно работать десятки тысяч взаимозаменяемых шестерёнок. Технология машиностроения тогдашнего времени не могла обеспечить производства такой точности.
Ада Лавлейс скончалась от болезни в 1852 году в возрасте всего 36 лет — ровно в том же возрасте, что и её отец.
3. Рождение языка Ada: Заказ Пентагона
Прошло больше века. В 1970-х годах Министерство обороны США столкнулось с катастрофической проблемой, которую специалисты назвали «программным кризисом».
Военная техника американской армии (самолеты, танковые компьютеры, системы наведения ракет, радары и корабли) программировалась на более чем 450 различных языках программирования! Каждый подрядчик использовал свой собственный язык. Поэтому программные коды разных устройств были несовместимы, процесс поддержки стоил миллиарды долларов, а ошибки в программах могли привести к фатальным последствиям во время реальных боевых действий.
Пентагон объявил международный конкурс на создание единого, стандартизированного языка программирования для всех военных и критически важных систем.
Требования к новому языку были жесткими. Во-первых, абсолютная надежность. Программа должна выявлять максимально возможное количество ошибок еще до запуска (на этапе компиляции). Во-вторых, параллелизм: поддержка одновременного выполнения сотен задач в реальном времени. В-третьих, строгая типизация, запрет на «сомнительные» операции с памятью, которые часто приводят к сбоям.
В конкурсе участвовали лучшие умы мира. Чтобы избежать предвзятости, проекты подавались анонимно под цветами: Red, Green, Blue, Yellow. В 1979 году победителем стал проект Green, разработанный французской командой под руководством Жана Ишбиа (Jean Ichbiah) из компании Cii Honeywell Bull.
Когда встал вопрос о названии нового языка, военно-морской инженер и офицер ВМС США Джек Купер предложил назвать его в честь Ады Лавлейс. Пентагон направил официальный запрос владельцу титула графа Лавлейса — прямому потомку Ады, чтобы получить разрешение на использование имени. Разрешение было получено.
Так эпоним Ada официально вошел в историю мировых технологий. Официальный стандарт языка был утвержден в 1983 году, получив символ ANSI/MIL-STD-1815. Четыре последние цифры символизируют год рождения Ады Лавлейс.
Забавно отреагировала на это событие советская газета «Известия». В 1984 году журналист-международник Мэлор Стуруа опубликовал статью, в которой резко раскритиковал язык программирования Ада, принятый на вооружение Пентагоном. Он написал: «Язык Пентагона — враг мира. Язык Ада - голос термоядерного ада… В языке Ада слышится проклятие роду людскому». В таких случаях принято спрашивать: «Ты сам-то понял, что сказал?»
4. В чем суперсила языка Ada? Разбираем без программирования
Представьте, что Вы пишете программу для компьютера, которая должна будет составить кулинарный рецепт или инструкцию по сборке мебели.
Если Вы пишете на языке, похожем на обычные языки программирования (вроде C или JavaScript), компьютер ведет себя как послушный, но абсолютно слепой исполнитель. Если в рецепте написано «добавьте 500 килограммов соли» вместо 500 граммов, такой язык молча выполнит команду — и ваша программа сработает неверно. Блюдо будет испорчено прямо во время приготовления ужина.
Язык Ada работает совершенно иначе. Он ведет себя как бескомпромиссный и строгий инспектор качества.
1. Строгий контроль типов
В Ada вы не можете случайно прибавить километры к килограммам или рубли к градусам Цельсия. Если разработчик описывает систему управления самолетом, он явно указывает диапазоны значений:
type Altitude is range 0 .. 50_000; - Высота от 0 до 50 000 метров
type Speed is range 0 .. 3_000; - Скорость от 0 до 3 000 км/ч
Если программист по ошибке попытается присвоить переменной «Высота» значение переменной «Скорость» или задать высоту в -100 метров, Ada откажется даже скомпилировать (собрать) такую программу. Ошибка будет исправлена на столе разработчика, а не в воздухе на борту самолета!
2. Ранжирование и безопасность границ
Одной из самых частых причин кибератак и сбоев в ПО является «переполнение буфера» (когда программа пытается записать данные за пределами выделенной памяти). В Ada встроен непрерывный контроль границ массивов. Если программа попытается обратиться к несуществующему элементу, Ada мгновенно перехватит эту ситуацию без краха всей системы.
3. Поддержка реального времени и параллелизма
В современной технике параллельно работают десятки датчиков: радар считывает дистанцию, датчик топлива измеряет расход, а автопилот удерживает курс. Ada содержит встроенный механизм «Задач» (Tasks), который гарантирует, что важнейшая команда (например, отклик на предупреждение о столкновении) будет выполнена точно за гарантированные миллисекунды.
5. Где язык Ada работает прямо сейчас?
Многие думают: если язык был создан в 1980-х и его нет в топах курсов по веб-дизайну, значит, он ушел в историю. Это заблуждение! Ada незаметно управляет миром вокруг нас.
В инженерии существует термин Safety-Critical Systems (системы, критичные для безопасности). Это системы, где программная ошибка может привести к гибели людей или экокатастрофе. Именно там Ada остается неоспоримым королем. Вернее, королевой.
6. Ключевые области применения Ada сегодня:
Гражданская и военная авиация: Бортовое программное обеспечение большинства современных самолетов чаще всего написано на Ada.
Космонавтика: Европейское космическое агентство (ESA) и NASA используют Ada в ракетах-носителях Ariane 5 и Ariane 6, а также в системах управления спутниками и космическими станциями.
Скоростной транспорт и метро: Автоматические поезда без машинистов в метрополитенах Парижа, Лондона и Нью-Йорка, а также сигнализация скоростных поездов TGV во Франции.
Энергетика: Системы защиты и мониторинга реакторов на атомных электростанциях (АЭС) в Европе.
7. Наследие «Поэтической науки»
Существует прекрасная историческая рифма в том, как сложилась судьба этого эпонима.
В XIX веке молодая женщина, дочь великого поэта, взглянула на чертежи и шестеренки Чарльза Бэббиджа и увидела в них универсальный инструмент будущего. Она мечтала о времени, когда математика объединится с воображением.
Спустя полтора века инженерная мысль создала язык программирования Ada, главный смысл которого — довести точность и безопасность компьютерного кода до абсолютного идеала.
Каждый раз, когда безопасно садится тяжелый пассажирский лайнер или на орбиту выводится новый исследовательский спутник, где-то в глубине их электронных сердец безупречно и безрассудно точно исполняет свои задачи великое наследие леди Ады Лавлейс.








