Первая леди программирования

Александр Лейзерович • 15 апреля 2017
10

    Даже граждане бывшего СССР уже знают, что декабря — День прав человека, учрежденный ООН в честь принятия в 1948 году Всеобщей декларации прав человека (в советские времена само ее существование замалчивалось).

    Общеизвестно также, что с 1901 года именно декабря вручаются ежегодные Нобелевские премии в память об их учредителе Альфреде Нобеле, умершем в этот день в 1896 году.

    Порывшись в календарях, энциклопедиях, справочниках, а также попутешествовав по Интернету, можно обнаружить, что декабря 1799 года Франция перешла на метрическую систему мер (в чем за ней до сих пор никак не могут последовать Соединенные Штаты Америки). А также, что в 1828 году был основан Санкт-Петербургский технологический институт, что в этот день родились русский поэт Николай Некрасов, американская поэтесса Эмили Диккинсон и украинская писательница Марко Вовчок, французские писатель Эжен Сю и композитор Цезарь Франк, британский фельдмаршал Харолд Александер, получивший титул «Тунисский», и советский «государственный деятель» недоброй памяти Андрей Вышинский, лауреат Нобелевской премии по литературе шведско-немецкая поэтесса Нелли Закс, клоун Карандаш, хоккейный тренер Анатолий Тарасов, дирижер Юрий Темирканов, литературовед и философ Сергей Аверинцев и многие другие.

    Но есть и еще одно менее известное определение для этой даты, имеющее, однако, самое прямое отношение к роду занятий многих наших читателей: декабря названо Днем программиста в честь родившейся также в этот день первой представительницы этой не слишком древней профессии Ады Августы Лавлейс, единственной дочери прославленного английского поэта Джорджа Гордона Байрона и его супруги Аннабеллы Милбэнк.

    Ада Августа Байрон родилась декабря 1815 года; родители ее расстались, когда девочке было два месяца, и больше своего отца она не видела. Байрон посвятил дочери несколько трогательных строк в «Паломничестве Чайльд Гарольда»: «Спи в колыбели сладко без волненья. Я через море с горной высоты тебе, любимой, шлю благословенье…» (перевод Г. Шенгели). По настоянию Байрона, девочке было дано имя в честь его сводной (по отцу) сестры и любовницы, которой поэт посвятил знаменитые «Стансы Августе»: «Ты из смертных, но ты не лукава, Ты из женщин, но им не чета, Ты любовь не считаешь забавой, И тебя не страшит клевета…» (перевод Б. Пастернака). Но при этом в письме к кузине Байрон заранее беспокоился: «Надеюсь, что Бог наградит ее чем угодно, но только не поэтическим даром…». Еще менее намерена была способствовать развитию у дочери литературных наклонностей мать, которую в свете за увлеченность точными науками прозвали «принцессой параллелограммов».

    Ада Августа получила прекрасное образование, в том числе и в области математики. К 1834 году относится ее первое знакомство с выдающимся математиком и изобретателем Чарльзом Бэбиджем (1791 — 1871), создателем первой цифровой вычислительной машины с программным управлением, названной им «аналитической». 

    Машина Бэбиджа была задумана как чисто механическое устройство с возможным приводом от парового двигателя, но содержала большинство основных блоков, характерных для компьютеров ХХ века. В ней предусматривалась работа с адресами и кодами команд, данные вводились с помощью перфокарт. Основы программирования также были заложены Бэбиджем. Несмотря на почти сорокалетний труд своего создателя, машина так и не была достроена, опережая не только технические потребности, но и технические возможности своего времени. Многие из идей Бэбиджа просто не могли быть реализованы на базе механических устройств и оказались востребованы только спустя столетие, с разработкой первых электронных вычислительных машин.

    Понятно, что современники относились к работам Бэбиджа как к, по крайней мере, экстравагантному чудачеству. Супруга известного английского математика того времени де Моргана, под руководством которого Ада Августа изучала математику, так описывала их первый визит к Бэбиджу: «Пока часть гостей в изумлении глядела на это удивительное устройство с таким чувством, как, говорят, дикари первый раз видят зеркальце или слышат выстрел из ружья, мисс Байрон, совсем еще юная, смогла понять работу машины и оценила большое достоинство изобретения». Бэбидж нашел в Аде не только благодарную слушательницу, но и верного помощника. Он искренне привязался к девушке, бывшей почти ровесницей его рано умершей дочери.

    В 1835 году Ада Байрон вышла замуж за Уильяма, восемнадцатого лорда Кинга, ставшего впоследствии первым графом Лавлейс. (В некоторых русских публикациях с именем семейства Лавлейс связывается слово «ловелас»; это ошибка: Ловелас — имя героя популярного в начале прошлого века романа Ричардсона «Кларисса», ставшее нарицательным для обозначения волокиты, соблазнителя.) Муж не имел ничего против научных занятий супруги и даже поощрял ее в них. Правда, высоко ценя ее умственные способности, он сокрушался: «Каким отличным генералом ты могла бы стать!». Появление детей на время отвлекло Аду от занятий математикой, но в начале 1841 года она пишет Бэбиджу: «Я надеюсь, что моя голова может оказаться полезной Вам в реализации Ваших целей и планов в течение ближайших трех-четырех, а может быть, и более лет».

    По просьбе Бэбиджа, Ада занялась переводом очерка итальянского военного инженера Луи Фредерико Менабреа, в будущем профессора механики Туринского университета, одного из лидеров борьбы за объединение Италии, с 1867 года — ее премьер-министра и министра иностранных дел. Менабреа в 1840 году, слушая в Турине лекции Бэбиджа, подробно записал их и в своем очерке впервые дал полное описание аналитической машины Бэбиджа и его идей программирования вычислений. Он писал: «Сам процесс вычисления осуществляется с помощью алгебраических формул, записанных на перфорированных картах, аналогичных тем, что используются в ткацких станках Жаккарда. Вся умственная работа сводится к написанию формул, пригодных для вычислений, производимых машиной, и неких простых указаний, в какой последовательности эти вычисления должны производиться».

    Леди Лавлейс не просто перевела очерк Менабреа, но и снабдила его обширными комментариями, которые в сумме почти втрое превысили объем оригинального текста. Все комментарии, их общая структура и содержание подробно обсуждались и согласовывались с Бэбиджем. Известный своей нетерпимостью к чужому мнению Бэбидж, тем не менее, был в восторге от оригинальных проработок своей ученицы: «Чем больше я читаю Ваши примечания, тем более поражаюсь Вашей интуиции… Мне не хочется расставаться с Вашим превосходным философским рассмотрением моей аналитической машины».

    Книга Менабреа с комментариями, подписанными инициалами A.A.L. (Ada Augusta Lovelace), вышла в свет в августе 1843 года. Отдавая должное обоим авторам, Бэбидж писал: «Совокупность этих работ (Менабреа и Лавлейс) представляет для тех, кто способен следовать ходу их рассуждений, наглядную демонстрацию того, что практически любые операции математического анализа могут быть выполнены с помощью машины». При этом Бэбидж так до конца и не примирился с концепцией Ады, которую впоследствии Тьюринг именовал шестым постулатом противников идеи мыслящей машины: «Аналитическая машина не претендует на то, чтобы создавать что-то действительно новое.

    Машина может выполнять лишь то, что мы умеем ей предписать».

    В комментариях Лавлейс были приведены три первые в мире вычислительные программы, составленные ею для машины Бэбиджа. Самая простая из них и наиболее подробно описанная — программа решения системы двух линейных алгебраических уравнений с двумя неизвестными. При разборе этой программы было впервые введено понятие рабочих ячеек (рабочих переменных) и использована идея последовательного изменения их содержания. От этой идеи остается один шаг до оператора присвоения — одной из основополагающих конструкций всех языков программирования. Вторая программа была составлена для вычисления значений тригонометрической функции с многократным повторением заданной последовательности вычислительных операций; для этой процедуры Лавлейс ввела понятие цикла — одной из базовых конструкций структурного программирования. В третьей программе, предназначенной для вычисления чисел Бернулли, были использованы вполне современные расчетные методы. В своих комментариях Лавлейс высказала также великолепную догадку о том, что вычислительные операции могут выполняться не только с числами, но и с другими объектами, без чего вычислительные машины так бы и остались всего лишь мощными быстродействующими калькуляторами.

    После завершения работы над переводом и комментариями Ада предложила Бэбиджу, что она будет консультировать лиц, заинтересованных в использовании вычислительных машин, то есть, пользуясь сегодняшней терминологией, возьмет на себя функции customer support, дабы Бэбидж не отвлекался от основной работы по доведению своей аналитической машины.

    Но время для вычислительных машин еще не пришло, толпы пользователей не спешили получить консультацию у леди Лавлейс, более того — в 1842 году правительство Британии отказало Бэбиджу в финансовой поддержке его разработок. Бэбидж был готов на все, чтобы раздобыть необходимые деньги.

    В частности, вместе с супругами Лавлейс он увлекся идеей создания «подлинно научной, математической» системы ставок на бегах, которая давала бы верный выигрыш. Как и следовало ожидать, «система» не сработала и принесла не только разочарование, но и большие финансовые потери. Самым стойким ее приверженцем оказалась графиня Лавлейс — она продолжала упорно играть, часто даже втайне от мужа и Бэбиджа, пытаясь усовершенствовать систему. На этом она потеряла почти все свои личные средства. К тому же в начале 50-х годов ее здоровье неожиданно и резко ухудшилось, и в 1852 году Ада Лавлейс скончалась в роковом для многих гениев возрасте 37 лет, как и ее отец, и была похоронена рядом с ним в фамильном склепе Байронов.

    Имя Ады Лавлейс воскресло из небытия в середине 1930-х годов в связи с работами английского математика Алана Тьюринга, введшего понятие логической алгоритмической структуры, получившей название «машины Тьюринга», а также последующим созданием первых электронных вычислительных машин.

    К концу 1970-х годов исследования, проведенные в министерстве обороны США, выявили отсутствие языка программирования высокого уровня, который бы поддерживал все основные этапы создания программного обеспечения. Применение же различных языков программирования в разных приложениях приводило к несовместимости разрабатываемых программ, дублированию разработок и другим нежелательным явлениям, включая рост стоимости программного обеспечения, многократно превышающей стоимость самой вычислительной техники.

    Выход из кризиса виделся в разработке единых языка программирования, среды его поддержки и методологии применения. Все три составляющие этого проекта разрабатывались очень тщательно с привлечением наиболее квалифицированных специалистов разных стран. В мае 1979 года победителем в конкурсе разработки языков был признан язык «Ада», названный в честь Ады Августы Лавлейс и предложенный группой под руководством француза Жана Ишбиа. Прототипом этого языка явился язык программирования «Pascal», названный в честь Блеза Паскаля, который еще в возрасте девятнадцати лет, в 1624 году, разработал проект «Паскалины», или, по-другому, «Паскалева колеса» — первой механической вычислительной машины.

    С появлением и широким распространением персональных компьютеров язык «Ада» во многом утратил свою значимость, однако до сих пор используется как язык высокого уровня для разработки программ, работающих в реальном масштабе времени.

    Любопытно, что в честь Ады Лавлейс названы в Америке также два небольших города — в штатах Алабама и Оклахома. В Оклахоме существует и колледж ее имени. Вроде бы немного, но вместе с тем есть люди, искренне полагающие, что слава Ады Лавлейс затмила славу ее знаменитого отца и что ее вклад в мировую цивилизацию, по крайней мере, соизмерим с вкладом великого поэта.