четверг, 11 декабря 2014 г.

Августа Ада Лавлейс

Августа Ада Лавлейс - первый программист


     «Мой мозг - нечто большее, чем просто смертная субстанция, 
я надеюсь, время покажет это ... 
    Клянусь дьяволом, что не пройдет и 10 лет, как я 
высосу некоторое количество жизненной крови из загадок 
Вселенной, причем так, как это не смогли бы сделать обычные 
смертные губы и умы. 
    Никто не знает, какие ужасающие энергии и сила лежат еще 
неиспользованными в моем маленьком гибком существе ...
    ... Для Вселенной хорошо, что мои устремления и честолюбие 
навсегда связаны с духовным миром и что я не собираюсь 
иметь дела с саблями, ядом и интригами вместо X,Y и Z". 
(Из письма А. Лавлейс к Ч. Бэббиджу) 


В 1833 г. английский ученый, профессор Кембриджского университета Чарльз Бэббидж (1792-1871) разработал проект аналитической машины - гигантского арифмометра с программным управлением, арифметическим и запоминающим устройствами. Аналитическая машина Бэббиджа явилась не только предшественницей, но и во многих отношениях прообразом современных электронных вычислительных машин с программным управлением. 

Сотрудницей и помощницей Ч.Бэббиджа во многих его научных изысканиях была леди Лавлейс.
Единственная научная работа леди Лавлейс относилась к "вопросам программирования для аналитической машины Бэббиджа" и предвосхитила основы современного программирования для цифровых вычислительных машин с программным управлением.
Августа Ада Лавлейс - дочь великого английского поэта Джорджа Байрона родилась 10 декабря 1815 года. Семейная жизнь Д.Байрона сложилась неудачно - по истечении года совместной жизни супруги навсегда расстались. Его жена Анабелла Милбэнк (1792-1860) была одаренным человеком. Она любила математику и с детских лет до замужества занималась ею.

Дочь Байронов Ада также увлекалась математикой. Увлечение юной Ады математикой поддерживали друзья леди Байрон - известный английский математик и логик Август де Морган (1806-1871), его жена, математик-любитель Мэри Соммервил и Чарльз Бэббидж. Де Морган высоко отзывался о математических способностях и творческих возможностях своей ученицы. Он следит за научными занятиями Ады, посылает ей книги и статьи, представляющие интерес. Редактор популярного лондонского журнала "Экзаминер" Олбани Фонбланк оставил портрет своей знакомой Августы Ады: "Она была ни на кого не похожа и обладала талантом не поэтическим, но математическим, метафизическим. Наряду с совершенно мужской способностью к пониманию, проявляющейся в умении решительно и быстро схватывать суть дела в целом, леди Лавлейс обладала всеми прелестями утонченного женского характера. Ее манеры, ее вкусы, ее образование, особенно музыкальное, в котором она достигла совершенства, - были женственными в наиболее прекрасном смысле этого слова, и поверхностный наблюдатель никогда не угадал бы, сколько внутренней силы и знания сокрыто под ее женской грацией. В той же степени, в которой она не терпела легкомыслия и банальности, она получала удовольствие от истинно интеллектуального общества и поэтому энергично искала знакомства со всеми, кто был известен в науке, искусстве и литературе".
Мэри Соммервил вспоминает, что они вместе с Адой "часто посещали мистера Бэббиджа" и он всегда "приветливо встречал их, терпеливо объяснял устройство его машины и разъяснял практическую пользу автоматических вычислений".

В июле 1835 г. Ада вышла замуж за Уильяма, восемнадцатого лорда Кинга, ставшего впоследствии первым графом Лавлейсом. Уильям Лавлейс, спокойный и приветливый человек, с одобрением относился к научным занятиям своей жены.

В мае 1836 г. у Ады родился сын, в феврале 1838 г. - дочь, а в конце 1839 г. - второй сын. Но ни семейные заботы, ни слабое здоровье Ады не поколебали ее решимости заниматься математикой.
22 февраля 1841 г. Ада сообщает Бэббиджу, что занимается вопросами, связанными с его вычислительными машинами: "Я более чем когда-либо определилась в своих планах на будущее. Я много думаю о возможном (полагаю, что могу сказать - вполне вероятном) сотрудничестве между нами в будущем... Я считаю, что результаты этого сотрудничества будут полезны для нас обоих..."
В начале 40-х годов Бэббидж напряженно работал над совершенствованием структуры аналитической машины. Но для ученого в то время важным был и другой вопрос - добиться, чтобы правительство финансировало работы по постройке аналитической машины. Для этого нужна была популяризация идеи автоматических вычислений, четкое и понятное для широких кругов изложение принципов действия аналитической машины. "Необходимо было получить одобрение и поддержку его планов в различных кругах общества, чтобы создать общественное давление на правительство".

Статья военного инженера Л. Ф. Менабреа (впоследствии генерал в армии Гарибальди, а затем премьер-министр Италии) "Очерк Аналитической машины, изобретенной Чарльзом Бэббиджем" заинтересовала Аду, и она перевела ее на английский язык. Тогда Бэббидж предложил ей добавить некоторые примечания к переводу. Эта идея была немедленно принята. Перевод статьи Менабреа занимает 20 страниц, примечания же Ады Лавлейс — в два с половиной раза больше, 50 страниц. Одно это сопоставление показывает, что А. А. Лавлейс отнюдь не ограничилась ролью простого комментатора. При этом статья Менабреа касается в большей степени технической стороны дела, тогда как примечания Лавлейс — математической.

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

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

Эта программа вызвала восторг Бэббиджа, он не жалел хвалебных слов для её автора, и они были вполне заслуженными. Поддержка и теплые слова укрепляли уверенность Ады и давали ей силы для работы. Успехи давались ей с большим напряжением и не без ущерба для здоровья, на что она неоднократно жалуется в письмах Бэббиджу. Лавлейс хотелось, чтобы эта и последующие работы, о которых она мечтала, могли как-то связываться с ее именем. Поэтому Ада решает под каждым примечанием поставить свои инициалы.

"Примечания" Лавлейс заложили основы современного программирования, базирующегося на тех идеях и принципах, которые были ею высказаны. Одним из важнейших понятий программирования служит понятие цикла. Лавлейс полностью осознала значение цикла — использование циклических вычислительных методов является одним из простейших и эффективнейших методов, облегчающих использование вычисли-тельных машин. Поэтому она уделяет весьма много внимания циклам в своей работе. Ей принадлежит определение цикла: "Под циклом операций следует понимать любую группу операций, которая повторяется более одного раза". Организация циклов в программе значительно сокращает ее объем. Без такого сокращения практическое использование Аналитической машины было бы нереальным, т. к. она работала с перфокартами, и требовалось бы огромное их количество для каждой решаемой задачи.

Прежде всего, уже в то время Ада Лавлейс отдавала себе полный отчет в колоссальной "широте спектра" возможностей универсальной вычислительной машины. Вместе с тем она очень четко представляла себе границы этих возможностей: "Желательно предостеречь против преувеличения возможностей Аналитической машины. Аналитическая машина не претендует на то, чтобы создавать что-то действительно новое.

Машина может выполнить все то, что мы умеем ей предписать. Она может следовать анализу; но она не может предугадать какие-либо аналитические зависимости или истины. Функции машины заключаются в том, чтобы помочь нам получить то, с чем мы уже знакомы". В 1843 году, когда эти положения высказывались, Ада, конечно, не могла предвидеть, как разовьется и какие формы примет программирование спустя 120 лет.

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

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

В начале 50-х годов у Ады появляются первые признаки рака, а 27 ноября 1852 г. Ада скончалась, не дожив нескольких дней до 37 лет, в том же возрасте, что и лорд Байрон. Согласно завещанию она была похоронена (3 декабря) рядом с могилой отца в семейном склепе Байронов в Ноттингемпшире.

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

В конце 1970-х годов по заказу военного ведомства был создан мощный язык программирования, который был назван в честь Ады Лавлейс "АДА".