Первая программа для вычисления на машине была написана в каком году: Первая в мире компьютерная программа продана с аукциона

Содержание

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

Леди Байрон опасалась, что у дочери могут развиться поэтические наклонности отца, поэтому старалась, чтобы дочь занималась математикой и естественными науками. Совершенствовать знания, по приглашению матери, помогал Аде шотландский профессор математики и мистик Огастес (Август) де Морган. Он был поражен талантом девушки, говорил, что она может быть исследователем в области математики, но так как эта наука считалась мужским занятием, опасался, что напряженная мыслительная работа не принесет женщине радости. В 1833году Ада в сопровождении Мэри Сомервиль, жены профессора, впервые посетила мастерскую Чарльза Бэббидджа, где она познакомилась с изобретателем и его «разностной» машиной, с помощью которой можно было делать математические вычисления. Встреча Ады с разностной машиной еще больше зажгла её интерес к математике. Юная мисс Байрон стремилась понять работу механизма и высоко оценила это изобретение. Молодая девушка 19 века интересовалась новинками вычислительной техники, её незаурядный математический талант был подмечен ученым.

Впоследствии Ада серьезно занималась изучением разностной и аналитической машин Чарльза Бэббиджа, создателя этих механических вычислительных аппаратов. В 1940 году Бэббидж читал лекцию о своем аналитическом движке в университете в Турине. Луиджи Менабреа, преподаватель Туринской артиллерийской академии, будущий премьер-министр страны под впечатлением от лекции подробно сделал описание механизма, статья была опубликована в 1842 году под названием «Элементы аналитической машины, созданной Чарльзом Бэббиджем». Текст был написан на французском языке. Ада Лавлейс к этому времени уже успела неплохо изучить машину, поэтому не только отлично перевела текст на английский язык, но дополнила собственными мыслями и идеями о роли машины. В итоге первоначальный текст увеличился в три раза. Примечания вызвали большой интерес Бэббиджа. Эти «сноски на полях» принесли Аде бессмертие, и внесли её имя в историю вычислительной техники, как первой программистки. Работая над текстом в течении девяти месяцев, она на 52 страницах заложила основы современного программирования.
В этот период они с Бэббиджем обменивались письмами почти каждый день, обсуждали  предложенные Адой примечания и дополнения. Ада задавала вопросы, он отвечал. Девушка была очень ответственная, в первую очередь она понимала, что объясняет принцип работы движка Бэббиджа, поэтому и обсуждала с ним свои дальнейшие коррективы.

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

Она написала пошаговую инструкцию для вычисления чисел Бернулли на аналитической машине.

Ада была уверена, что аналитическая машина способна сплетать алгебраические алгоритмы также виртуозно, как ткацкий станок Жаккара может ткать узоры. Она не только смогла постигнуть принцип работы машины, но и высказала мнение, что машина сможет писать музыку, рисовать картины и др. «Суть и предназначение машины изменяться от того, какую информацию мы в нее вложим», писала Лавлейс. Перевод статьи Луиджи Менабреа вместе с примечаниями переводчика с инициалами А.А.L. вышел в свет в научном журнале «Ученые записки» (Scientific Memoir) в августе 1843 года, вызвал интерес у читателей. Ада блестяще выполнила задачу популяризации идеи автоматических вычислений. Даже если эти вопросы обговаривались с Бэббиджем, это не уменьшает заслуг Ады так как её описание принципов работы разностной и аналитической машин и возможностей вычислений дает ясное представление о них. А термины «цикл», «рабочая ячейка» и их описание впервые получили гласность благодаря её труду, который останется в истории как первая напечатанная работа по программированию.

В честь Августы Ады Байрон, графини Лавлейс назван язык программирования высокого уровня, разработанный в 1979-1980 годах по инициативе Министерства Обороны США. Язык Ада применяется в Европе и США в проектах, нуждающихся в повышенной безопасности и надежности. 10 декабря 1980 года был утвержден стандарт языка. В этот день празднуют День программиста — в день рождения Ады Лавлейс изумительной женщины, сумевшей заглянуть в будущее. Похоронили графиню Лавлейс рядом с отцом лордом Байроном в родовом склепе в церкви Святой Марии Магдалены в Ханкнеле недалеко от Ньюстедского аббатства в Ноттингемшире. Оба умерли в молодом возрасте в 36 лет.

 

Что на самом деле делала программа Ады Лавлейс? / Хабр

Эпизод с основанием Microsoft – один из наиболее известных в компьютерной истории. В 1975 году Пол Аллен вылетел в Альбукерк, чтобы продемонстрировать интерпретатор BASIC, которые они с Биллом Гейтсом написали для микрокомпьютера Altair. Поскольку у них не было работающего компьютера Altair, они проверили свой интерпретатор при помощи написанного ими эмулятора, выполнявшегося на компьютерной системе Гарварда. Эмулятор был основан только на опубликованных спецификациях процессора Intel 8080. Когда Аллен, наконец, запустил интерпретатор на реальном компьютере Altair – перед человеком, который, как они надеялись, купит их ПО – он даже не знал, заработает ли программа. Она заработала. В следующем месяце Аллен и Гейтс официально основали новую компанию.

За более чем сто лет до интерпретатора BASIC Аллена и Гейтса, Ада Лавлейс написала и опубликовала компьютерную программу. Она тоже написала программу для компьютера, о котором знала только по описанию. Но её программа, в отличие от интерпретатора BASIC, никогда не выполнялась, потому что компьютер, для которого она была написана, так и не был построен.

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

С неизбежностью диспут подогревает тот факт, что Лавлейс была женщиной. Историки цитировали всякого рода свидетельства, чтобы доказать, что оказываемые ей почести соответствуют случаю, или, наоборот, незаслуженны. Но они тратят гораздо меньше времени на объяснение технических деталей её опубликованной работы, что обидно, поскольку именно технические детали представляют самую интересную часть этой истории. Кому же неинтересно было бы узнать, как должна была работать программа, написанная в 1843 году?

Честно говоря, программу Лавлейс тяжело объяснить обывателям. Но именно запутанность её программы делает её такой примечательной. Достойна она зваться первым программистом, или нет, её программа была записана с такой точностью, которая превзошла всё, что было до этого. Она тщательно продумала, какие операции можно объединить в группы, которые можно будет повторять – изобретя, таким образом, цикл. Она поняла, как важно отслеживать состояние изменяющихся переменных, и придумала запись, отражающую эти изменения.

Я, как программист, поражён тем, насколько работа Лавлейс напоминает опыт написания софта сегодня.

Так давайте же поближе познакомимся с программой Лавлейс. Она разработала её для подсчёта чисел Бернулли. Чтобы понять, что это такое, необходимо вернуться на пару тысячелетий в прошлое, к началу одной из наиболее старых задач математики.

Суммы степеней


Пифагорейцы

жили на берегах Средиземного моря и поклонялись числам. Одним из их хобби было составление треугольников из гальки.

Один камень, за которым идёт ряд из двух камней, вместе составляют треугольник из трёх камней. Добавьте ещё один ряд из трёх камней, и получится треугольник из шести камней. Эту процедуру можно продолжать, каждый раз добавляя ряд с количеством камней, увеличивающимся на единицу. Треугольник из шести рядов содержит 21 камень. А сколько камней будет в треугольнике из 423 рядов?

Пифагорейцы искали способ подсчитать сумму следующего ряда, не проводя суммирование:

1+2+3+⋯+n

В итоге они поняли, что если расположить два треугольника одинакового размера рядом друг с другом так, чтобы они образовали прямоугольник, можно найти площадь прямоугольника и разделить её на два, чтобы получить количество камней в каждом из треугольников:

1+2+3+⋯+n = n(n+1)/2

Архимед изучал схожую проблему. Его интересовала следующая последовательность:

12+22+32+⋯+n2

Её можно представить себе, как столбик из квадратов всё большего размера (состоящих из крохотных кубиков), стоящих один на другом в виде пирамиды. Архимед хотел узнать, есть ли лёгкий способ сказать, сколько кубиков потребуется для создания пирамиды с, допустим, 423 уровнями. Он записал решение задачи, которое тоже допускает геометрическую интерпретацию.

Три пирамидки можно составить вместе, чтобы они сформировали прямоугольную призму, с одного конца которой есть небольшой выступ в один кубик высотой. Этот выступ представляет собой треугольник, подчиняющийся тем же правилам, что и каменные треугольники пифагорейцев. Поэтому объём всей фигуры задаётся следующим уравнением:

3(12+22+32+⋯+n2) = (n+1)n2+(1+2+3+⋯+n)

Подставляя уравнение пифагорейцев для суммы первых n целых чисел, и проведя некоторые алгебраические операции, получим:

12+22+32+⋯+n2=n(n+1)(2n+1)/6

В 499 году индийский математик и астроном Ариабхата опубликовал свою работу, известную, как Ариабхатия, в которой была приведена формула для вычисления суммы кубов:

13+23+33+⋯+n3=(1+2+3+⋯+n)2

Формулу для суммы первых n положительных целых чисел в четвёртой степени опубликовали только 500 лет спустя.

К этому времени у вас мог появиться вопрос – а нет ли какого-нибудь универсального метода для вычисления суммы первых n целых чисел, возведённых в степень k? Математики тоже этим интересовались. Йохан Фаульхабер, немецкий математик, слегка подвинутый на нумерологии, смог вывести формулы для суммы целых вплоть до 17-й степени, опубликовав их в 1631 году. Но это заняло у него много лет, и общего решения он не дал. Блез Паскаль, наконец, придумал обобщённый метод в 1665 году, который, правда, зависел от подсчёта суммы целых чисел, возведённых в предыдущие степени. К примеру, для подсчёта суммы первых n положительных целых чисел, возведённых в 6-ю степень, вам нужно было сначала узнать, как подсчитать сумму первых n положительных целых чисел, возведённых в 5-ю степень

Более практичное обобщённое решение было приведено в посмертно опубликованной работе швейцарского математика Якоба Бернулли, умершего в 1705. Бернулли начал с того, что вывел формулы для подсчёта сумм первых n положительных целых чисел, возведённых в первую, вторую, третью и четвёртую степени. Он записал их в виде многочленов:

1+2+3+⋯+n = 1/2n2+1/2n

12+22+32+⋯+n2=1/3n3+1/2n2+1/6n

13+23+33+⋯+n3=1/4n4+1/2n3+1/4n2

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

Открытие Бернулли не означало, что сумму первых n положительных целых чисел, возведённых в любую степень, теперь можно было вычислить тривиально. Чтобы подсчитать сумму первых n положительных целых чисел, возведённых в степень k, необходимо было узнать все числа Бернулли вплоть до k-того. А каждое число Бернулли можно было подсчитать, только зная все предыдущие. Но высчитывать длинную последовательность чисел Бернулли было несравненно легче, чем подсчитывать каждую сумму возведённых в степень чисел, поэтому открытие Бернулли стало большим прорывом для математики.

Бэббидж

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

Бэббидж придумал две отдельных механических вычислительных машины. Первая называлась разностной машиной.

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

Разностная машина была не компьютером, потому что она умела только складывать и вычитать. Она пользовалась методом, придуманным французским математиком Гаспаром де Прони, разбившим процесс построения таблицы на мелкие шаги. Эти шаги требовали только сложения и вычитания, что означало, что для построения таблицы можно задействовать небольшую армию людей, не обладавших способностями к математике. Метод де Прони, известный, как метод разделённых разностей, можно было использовать для составления таблицы по любому многочлену. А многочлены уже можно было использовать для приближённого вычисления логарифмических и тригонометрических функций.

Чтобы представить себе, как работал этот процесс, рассмотрим следующую простую полиномиальную функцию:

y = x2+1

Метод разделённых разностей находит разницу между последовательными значениями y для разных значений x. Затем находятся разницы между этими разностями, и затем, возможно, ещё разницы между последними разностями, до тех пор, пока не появляется постоянная разность. Эту разность затем можно использовать для получения следующего значения полинома через сложение.

Поскольку указанный многочлен имеет лишь вторую степень, мы можем найти постоянную разность после всего лишь двух столбцов разностей:

Теперь, зная, что постоянная разность равна 2, мы можем найти значение y, когда x равно 5, при помощи одного сложения. Сложив 2 и 7, последнее значение в столбце Diff 1, мы получим 9. Сложив 9 и 17, последнее значение в столбце y, мы получим 26 – наш ответ.

У разностной машины Бэббиджа для каждого разностного столбца таблицы был свой физический столбец с шестерёнками. Каждая шестерёнка представляла десятичную позицию, а весь столбец – десятичное число. У разностной машины было восемь колонок с шестернями, поэтому она могла составлять таблицы полиномов вплоть до седьмой степени. Колонки изначально ставили на значения, совпадающие с ранним рядом таблицы разностей, просчитанным заранее. Оператор затем должен был поворачивать коленчатый вал, что заставляло постоянную разность перемещаться по машине, когда значения, хранившиеся в каждой из колонок, добавлялись к следующим.

Бэббидж сумел построить небольшую часть разностной машины и использовать её для демонстрации своих идей на вечеринках. Но, даже потратив столько денег, что их хватило бы на постройку двух крупных боевых кораблей, он так и не смог завершить свою машину. В начале XVIII века Бэббидж не нашёл никого, кто смог бы изготовить нужное ему количество шестерней с нужной точностью. Рабочую версию разностной машины построили лишь в 1990-х годах, после появления высокоточных станков.

В итоге Бэббидж потерял интерес к разностной машине, поняв, что можно создать куда как более мощную и гибкую машину. Его «

аналитическая машина

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

жаккардовый ткацкий станок

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

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

Примечания переводчицы

В Турине Бэббидж познакомился с итальянским инженером и будущим премьер-министром Луиджи Федерико Менабреа. Он убедил Менабреа написать обзор возможностей аналитической машины. В 1842 Менабреа опубликовал работу по этой теме на французском языке. В следующем году Лавлейс опубликовала перевод работы Менабреа на английский.

Лавлейс, известная тогда, как Ада Байрон, познакомилась с Бэббиджем на вечеринке в 1833 году, когда ей было 17, а ему 41. Лавлейс была поражена разностной машиной Бэббиджа. Но она смогла разобраться, как та работает, поскольку в детстве её активно обучали математике. Её мать, Анабелла Милбанк, решила, что твёрдая математическая основа образования дочки отвадит от неё дикую и романтическую натуру, которой обладал её отец лорд Байрон, знаменитый поэт. После знакомства в 1833 году Лавлейс и Бэббидж оставались в общем социальном кругу и часто переписывались.

Ада Байрон вышла замуж за Уильяма Кинга в 1835. Кинг позднее стал графом Лавлейсом, вследствие чего Ада стала графиней Лавлейс. И даже родив троих детей, она продолжала обучаться математике, взяв в учителя Огастеса де Моргана, открывшего законы Моргана. Лавлейс сразу распознала потенциал аналитической машины, и с готовностью согласилась работать с ним для продвижения этой идеи. Её друг предложил ей перевести работу Менабреа для английской аудитории.

В работе содержалось краткое описание работы разностной машины, а потом было показано, насколько бы её превзошла аналитическая машина. Аналитическая машина должна была быть настолько мощной, что могла бы «сформировать результат перемножения двух чисел, каждое из которых состоит из двадцати знаков, всего за три минуты». Менабреа дал и другие примеры возможности машины, демонстрируя, как она решала бы простую систему линейных уравнений и раскладывала бы результат перемножения двух биномов. В обоих случаях Менабреа представил то, что Лавлейс назвала «диаграммами развития», описывавшими последовательность операций, необходимых для вычисления правильного ответа. Это были программы, в том же смысле, в каком программа Лавлейс была программой, и они были опубликованы за год до её работы. Но, как мы увидим, программы Менабреа были всего лишь примерами возможного. Все они были тривиальными в том смысле, что не требовали никакого разветвления или циклов.

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

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

Полный её текст, в виде расширенной «диаграммы развития», формат которой Лавлейс описывает в примечании D, можно посмотреть тут. Это, по сути, список операций, обозначенных математическими символами. Не похоже, чтобы Бэббидж или Лавлейс зашли так далеко, чтобы разработать набор операционных кодов для аналитической машины.

Хотя Лавлейс описывала метод вычисления полной последовательности чисел Бернулли до определенного предела, приведённая ею программа показывала только один шаг этого процесса. Она подсчитывала число, которое она назвала B7, известное современным математикам, как восьмое число Бернулли. Поэтому её программа решала следующее уравнение:

B7=−1(A0+B1A1+B3A3+B5A5)

Тут каждый член представляет коэффициент в полиномиальной формуле для суммы целых чисел, возведённых в определённую степень. Тут речь идёт о восьмой степени, поскольку восьмое число Бернулли впервые появляется в формуле для суммы целых положительных чисел, возведённых в восьмую степень. Числа B и A представляют два вида множителей, открытых Бернулли. Числа от B1 до B7 – различные числа Бернулли, пронумерованные согласно Лавлейс. Числа от A0 до A5 представляют собой множители коэффициентов, которые Бернулли мог вычислить при помощи треугольника Паскаля. Значения A0, A1 и A3 приведены ниже. Здесь n обозначает индекс числа Бернулли в последовательности нечётных чисел Бернулли, начинающихся с первого. В программе Лавлейс n = 4.

A0=−1/2⋅(2n−1)/(2n+1)

A1=2n/2

A3=2n(2n−1)(2n−2)/(2⋅3⋅4)

A5=2n(2n−1)(2n−2)(2n−3)(2n−4)/(2⋅3⋅4⋅5⋅6)

Я перевёл программу Лавлейс на язык C, и так, наверное, её будет проще читать. Сначала её программа вычисляет A0 и результат умножения B1A1. Затем начинается цикл, повторяющийся дважды, для вычисления B3A3 и B5A5, поскольку они считаются по одной схеме. После подсчёта каждого перемножения, результат добавляется к предыдущим, поэтому к концу программы получается полная сумма.

Очевидно, что перевод на C не может быть точным воспроизведением программы Лавлейс. Он объявляет переменные в стеке, а переменные Лавлейс больше были похожи на регистры. Но он делает более очевидной наиболее пророческую часть программы Лавлейс. В программе на C есть два цикла while, один внутри другого. У программы Лавлейс не было циклов while, но она сгруппировала операции, и описала в примечании, почему они должны повторяться. Переменная v10 из оригинальной программы и в переводе на C, работает счётчиком, уменьшающимся с каждым проходом цикла – подобная конструкция знакома каждому программисту. В общем, кроме изобилия переменных с непонятными именами, программа на C не выглядит чем-то незнакомым.

Стоит также отметить, что перевод программы Лавлейс на C был не очень сложным, благодаря одной детали в её диаграмме. В отличие от таблиц Менабреа, в её таблице есть столбец «признак изменения значения переменной», благодаря которому гораздо проще отслеживать изменение состояния. Она добавляет каждой переменной надстрочный индекс, чтобы обозначить хранящиеся в них последовательные значения. Индекс 2, к примеру, означает, что используемое значение – это второе значение, присвоенное переменной с начала программы.

Первый программист?

После того, как я перевёл программу Лавлейс на язык C, я смог запустить её на компьютере. К моему разочарованию, результат получался неверный. После поиска ошибок я, наконец, понял, что проблема была не с моим кодом – баг содержался в изначальной программе!

В «диаграмме развития» Лавлейс пишет в четвёртой операции v5 / v4. Но правильно будет v4 / v5. Эта ошибка могла появиться при печати, а не у Лавлейс. Так или иначе, это самый старый компьютерный баг. Я удивился тому, что порядка десяти минут потратил на поиск самого первого бага в истории.

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

В одной из статей Википедии написано, что Лавлейс первая опубликовала «сложную программу». Возможно, именно так и стоит воспринимать её достижение. Менабреа в своей работе опубликовал «диаграммы развития» за год до публикации перевода Лавлейс. Бэббидж также написал более двадцати программ, так и не опубликованных. Поэтому не совсем верно писать, что Лавлейс написала или опубликовала первую программу, хотя всегда можно поспорить о том, что считать программой. И всё равно, программа Лавлейс намного опередила всё, что было опубликовано до неё. В самой длинной программе Менабреа было 11 операций и не было циклов и ветвлений. В программе Лавлейс было 25 операций и вложенный цикл (а, следовательно, и ветвление). Менабреа в конце своей работы написал следующее:

После постройки машины трудности сведутся к изготовлению карточек; но поскольку это всего лишь перевод алгебраических формул, посредством некоей простой записи будет довольно просто перепоручить их выполнение какому-нибудь рабочему.

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

Возникновение программирования

Юрий Полунов

Меня милый не целует,
Не садится близко.
Он ведь чистый математик,
а я – программистка.

Студенческий фольклор

За свою долгую жизнь Чарльз Бэббидж написал более 70 заметок, статей и книг по самым различным вопросам. Однако подробное изложение принципов работы разностной и аналитической машин сделано не им (Бэббидж говорил, что слишком занят созданием машин, чтобы еще заниматься и их описанием). В частности, аналитическая машина была весьма детально описана в «Очерке аналитической машины…» Л. Ф. Менабреа[1], переведенном с итальянского на английский язык леди Лавлейс. Она не только сделала перевод, но и дополнила его собственными «Примечаниями», свидетельствующими о замечательном понимании принципов работы вычислительных машин Бэббиджа. Кроме того, она привела ряд примеров их практического использования: выражаясь современным языком, составила несколько программ для аналитической машины.

В то время как труд Менабреа касается в большей степени технической стороны дела, «Примечания» Лавлейс посвящены в основном математическим вопросам. По этой причине «Очерк…» представляет сейчас лишь исторический интерес, поскольку современные вычислительные машины построены на совершенно иных технических принципах, тогда как леди Лавлейс высказаны идеи, не потерявшие своего значения и в наше время.

Леди Лавлейс в период работы над “Примечаниями переводчика”

Ада Августа, в замужестве графиня Лавлейс, была единственной «дочерью дома и сердца» великого поэта Джорджа Гордона Байрона (1788 – 1824). Она прожила короткую жизнь (1815 – 1852), насыщенную страстями и трагическими событиями. Пожалуй, самым светлым пятном в ней была дружба и сотрудничество с Чарльзом Бэббиджем. Ада с юных лет увлекалась музыкой, языками и точными науками и подобно донне Инессе, созданной пером ее отца, «имела ум математический». Ее учитель, выдающийся британский логик Август де Морган (1806 — 1871), так высоко отзывался о способностях своей ученицы, что даже сравнивал ее с Марией Аньези, знаменитым итальянским математиком.

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

Чарльз Бэббидж искренне привязался к своей новой знакомой. Он находил в ней главное, что ценил в людях, – остроту ума. Быть может, сыграло роль и то, что она была почти ровесницей его рано умершей дочери. Бэббидж следил за научными занятиями девушки, посылал ей статьи и книги. Известный ученый Мэри Соммервил (1780–1872) вспоминала, как они вместе с Адой «часто посещали мистера Бэббиджа, работавшего над вычислительными машинами» и он всегда «приветливо встречал их, терпеливо объяснял устройство его машины и разъяснял практическую пользу автоматических вычислений».

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

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

Перевод статьи Менабреа, снабженный «Примечаниями» переводчика и подписанный инициалами А. А. L., был опубликован в серьезном научном журнале «Ученые записки» (Scientific Memoirs). Он появился в книжных лавках Лондона в конце августа 1843 г. и вызвал немалый интерес у читающей публики. По воспоминаниям современника, Л. Ф. Менабреа «был очень удивлен, когда узнал, что его «Очерк» не только точно переведен, но и снабжен интересными научными примечаниями и что все это сделано автором, чьи инициалы не могли быть связаны ни с одним из современных математиков».

Объем журнальной статьи не позволяет мне подробно рассказать о замечательной работе леди Лавлейс, поэтому я остановлюсь на том, что считаю наиболее примечательным (курсивы в приводимых ниже цитатах принадлежат автору «Примечаний»)[2].

Прежде всего, процитирую довольно обширный отрывок, свидетельствующий о глубоком понимании автором сущности вычислительного процесса:

«Изучая работу аналитической машины, мы обнаруживаем, что необходимо строго различать операции, объекты, над которыми операции совершаются, и результаты операций. Мы обращаем на это внимание не только потому, что это совершенно необходимо для понимания работы аналитической машины и оценки ее возможностей, но также и потому, что это обычно мало принимается во внимание при изучении математики вообще… Под словом операция мы понимаем любой процесс, который изменяет взаимное отношение двух или более вещей, какого бы рода эти отношения ни были. Это наиболее общее определение, охватывающее все предметы во Вселенной… Наука об операциях, как происходящая от математики, но более специальная, есть самостоятельная отрасль знания, имеющая абстрактные истины и значения, независимые от объекта, к которому мы применяем свои рассуждения… Те, кто знаком с этим, знают, что если верны некоторые основные положения, то из них обязательно следует справедливость некоторых других комбинаций и соотношений; эти комбинации не ограничены в своем разнообразии и масштабах… То обстоятельство, что самостоятельный характер науки об операциях слабо ощущается многими, заключается в двойственном смысле многих символов, используемых в математических обозначениях. Во-первых, символы операций часто являются также символами результатов операции[3]. Во-вторых, цифры – символы числовых величин – служат также символами операций (например, при возведении в степень)… Операционный механизм может быть приведен в действие независимо от объекта, над которым должна производиться операция. Этот механизм может совершать действия не только над числами, но и над другими объектами, основные соотношения между которыми могут быть выражены с помощью абстрактной науки об операциях и которые могут быть приспособлены к операционным обозначениям и механизму машины. Предположим, например, что соотношения между высотами звуков в гармонии и музыкальной композиции поддаются такой обработке; тогда машина сможет сочинять искусно составленные музыкальные произведения любой сложности или длительности. Аналитическая машина есть воплощение науки об операциях; она сконструирована специально для действий над абстрактными числами как объектами этих операций».

Еще одна важная цитата:

«Многие люди, недостаточно знакомые с математическими исследованиями, полагают, что, поскольку цель машины – выдать результаты в числовой форме, характер ее процессов должен быть соответственно арифметическим или числовым, а не алгебраическим и аналитическим. Это ошибка. Машина может упорядочивать и комбинировать числовые величины точно так же, как если бы они были буквами или другими символами более общей природы».

И далее:

«Можно сказать, что аналитическая машина ткет алгебраические узоры, подобно тому, как станок Жаккара ткет цветы и листья».

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

«Она [машина] может создать три типа результатов: …символические … численные (главная и основная цель) и алгебраические в буквенных обозначениях. Последнее вряд ли следует считать желательным дополнением к возможностям машины, в частности потому, что устройства, необходимые для реализации этих возможностей, грозят увеличить сложность и размеры механизма до такой степени, что полностью обесценят преимущества машин…. Главная цель изобретения заключается в переводе на числовой язык общих формул анализа, … законы образования которых мы уже знаем. Однако было бы ошибкой предположить, что поскольку результат … получается в обозначениях наиболее ограниченной науки[4], то и процессы, следовательно, также ограничены этой наукой. Назначение машины состоит по существу в том, чтобы придать наибольшую практическую эффективность средствам цифровой интерпретации более высокой науки анализа, поскольку она [машина] использует ее процессы и комбинации».

Весьма интересно мнение Ады Лавлейс о возможностях вычислительных машин, столь характерное для уровня знаний ее времени ее времени.

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

Конечно, для XIX века эти высказывания не были актуальными. Современный же специалист по машинному интеллекту совершенно справедливо назовет их ошибочными (еще в 1949 г. леди Лавлейс возражал Алан Тьюринг в своей знаменитой статье «Может ли машина мыслить?»). Но могла ли Ада предвидеть создание и развитие кибернетики, теорий алгоритмов и информации и многого другого, что изменило бы ее точку зрения?

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

Комментируя другую свою программу (вычисление слагаемых в некоторой тригонометрической функции), Ада показывает, что при вычислении коэффициентов некоторая последовательность операций должна выполняться многократно. Для обозначения такой повторяющейся последовательности вводится понятие цикла:

«Если имеется выражение общего члена, то существует рекуррентная группа[5] операций… Ради определенности и краткости рекуррентную группу назовем циклом. Цикл операций, таким образом, может рассматриваться как обозначение любой группы операций, которая повторяется более чем один раз… хотя бы только дважды… Сущность цикла составляет повторяемость операций».

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

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

После беглого ознакомления с избранными местами из «Примечаний» возникает естественное желание выяснить, насколько самостоятельна была Августа Ада Лавлейс в своей работе. Являются ли «Примечания» простым пересказом ее бесед с Бэббиджем или же они были результатом самостоятельного глубокого осмысливания и интерпретации идей ученого? Можно ли назвать леди Лавлейс «первой программисткой»? Эти вопросы являются в последнее время предметом острой дискуссии межу историками ВТ. Некоторые из них отрицают ее участие в творческом процессе и полагают, что она лишь выполняла техническую работу, записывая мысли и высказывания Бэббиджа. А. Бромли, например, считает (на мой взгляд, бездоказательно), что программа вычисления чисел Бернулли написана Бэббиджем за несколько лет до публикации «Примечаний». Более того, утверждается, что она ничего самостоятельно сделать и не могла, так как якобы страдала маниакально-депрессивным психозом, унаследованным ею от деда по отцовской линии. Другие авторы, напротив, высоко оценивают творческие достижения Ады и считают, что титул «первой программистки» присвоен ей совершенно справедливо (такого мнения придерживается, например, Бетти Тул – автор одной из наиболее полных биографий Ады Лавлейс).

Признаюсь: мне очень хотелось бы принять точку зрения последних (вспомним Михаила Светлова: «Я сам лучше кинусь под паровоз, чем брошу на рельсы героя»). Но по прошествии стольких лет дать абсолютно точные ответы на упомянутые вопросы не представляется возможным.

Ада блестяще обобщила и дополнила «некоторые сведения», сообщенные Бэббиджем, выполнив, таким образом, свою основную задачу – популяризацию идеи автоматических вычислений. Ее изложение принципов действия разностной и аналитической машин, их вычислительных возможностей и некоторых структурных особенностей дает законченное и четкое представление об этих машинах. Недаром сам Бэббидж неоднократно повторял, что представления леди Лавлейс о его работе были яснее, чем его собственные. К несомненным достижениям Ады следует также отнести введение и весьма подробное рассмотрение таких принципиально важных для программирования вопросов, как организация циклов, связь рекуррентных формул с циклическими процессами вычислений, использование рабочих ячеек. Даже если эти вопросы предварительно обсуждались с Бэббиджем, это не умаляет заслуг Ады хотя бы уже потому, что и сами термины, и их содержание впервые стали достоянием гласности благодаря ее работе. Автор проектов вычислительных машин не мог не понимать важности упомянутых вопросов, но в его трудах отсутствует терминология, введенная Адой. По-видимому, Бэббидж, будучи человеком крайне щепетильным, решил написать в своих книгах, вышедших уже после смерти леди Лавлейс, лишь о том, что принадлежало только ему. И, кроме того, думается, что гордый и независимый характер Ады не допускал откровенного плагиата и, если бы автором приведенных ею программ был Бэббидж, она обязательно сообщила бы об этом «граду и миру».

Стефан Цвейг писал когда-то о «звездных часах человечества»: песня, написанная за одну ночь скромным армейским капитаном Руже де Лиллем, сделала его имя бессмертным; несколько десятков страничек, исписанных накануне дуэли Эваристом Галуа, открыли миру великого математика. Программы, приведенные в работе леди Лавлейс, никогда не отлаживались и не работали. Но несмотря на это, они, как и «Примечания» в целом, навсегда останутся в истории computer science как первая опубликованная работа в области программирования. Слова «цикл» и »рабочие ячейки» относятся к наиболее употребительным программистским терминам и вряд ли станут менее употребительными в обозримом будущем. Будем же помнить, кто произнес их впервые[6].

Статья опубликована в PC Week/RE №4 от 14.02.2006 г., стр. 29.
Помещена в музей с разрешения автора.

1. См. предыдущую статью цикла (PC Week/RE, № 1/2006, c. 36; №2/2006, c. 37).

2. См. подробнее о “Примечаниях”: Р. С. Гутер, Ю. Л. Полунов. Ада Августа Лавлейс и возникновение программирования. В кн.: Кибернетика и логика. М.: Наука, 1978, с. 57–102.

3. Аналогичное высказывание принадлежит проф. С. А. Яновской: “Диалектическое единство результата и пути, к нему ведущего, широко используется в современной математике”.

4. Под “ограниченной наукой” автор, очевидно, имеет в виду арифметику.

5. Разумеется, термин “группа” у леди Лавлейс не несет современного алгебраического смысла.

6. В конце 1970-х годов по заданию Министерства обороны США был разработан язык программирования, который в память о леди Лавлейс был назван АДА.

Что на самом деле делала программа Ады Лавлейс?

Эпизод с основанием Microsoft – один из наиболее известных в компьютерной истории. В 1975 году Пол Аллен вылетел в Альбукерк, чтобы продемонстрировать интерпретатор BASIC, которые они с Биллом Гейтсом написали для микрокомпьютера Altair. Поскольку у них не было работающего компьютера Altair, они проверили свой интерпретатор при помощи написанного ими эмулятора, выполнявшегося на компьютерной системе Гарварда. Эмулятор был основан только на опубликованных спецификациях процессора Intel 8080. Когда Аллен, наконец, запустил интерпретатор на реальном компьютере Altair – перед человеком, который, как они надеялись, купит их ПО – он даже не знал, заработает ли программа. Она заработала. В следующем месяце Аллен и Гейтс официально основали новую компанию.

За более чем сто лет до интерпретатора BASIC Аллена и Гейтса, Ада Лавлейс написала и опубликовала компьютерную программу. Она тоже написала программу для компьютера, о котором знала только по описанию. Но её программа, в отличие от интерпретатора BASIC, никогда не выполнялась, потому что компьютер, для которого она была написана, так и не был построен.

Программу Лавлейс часто называют первой в мире компьютерной программой. Но не все согласны с тем, что её следует так называть. Наследие Лавлейс оказывается одной из самых горячо обсуждаемых тем компьютерной истории. Уолтер Айзексон писал, что диспут по поводу степени и достоинств её вкладов представляет «небольшую академическую важность». С неизбежностью диспут подогревает тот факт, что Лавлейс была женщиной. Историки цитировали всякого рода свидетельства, чтобы доказать, что оказываемые ей почести соответствуют случаю, или, наоборот, незаслуженны. Но они тратят гораздо меньше времени на объяснение технических деталей её опубликованной работы, что обидно, поскольку именно технические детали представляют самую интересную часть этой истории. Кому же неинтересно было бы узнать, как должна была работать программа, написанная в 1843 году?

Честно говоря, программу Лавлейс тяжело объяснить обывателям. Но именно запутанность её программы делает её такой примечательной. Достойна она зваться первым программистом, или нет, её программа была записана с такой точностью, которая превзошла всё, что было до этого. Она тщательно продумала, какие операции можно объединить в группы, которые можно будет повторять – изобретя, таким образом, цикл. Она поняла, как важно отслеживать состояние изменяющихся переменных, и придумала запись, отражающую эти изменения. Я, как программист, поражён тем, насколько работа Лавлейс напоминает опыт написания софта сегодня.

Так давайте же поближе познакомимся с программой Лавлейс. Она разработала её для подсчёта чисел Бернулли. Чтобы понять, что это такое, необходимо вернуться на пару тысячелетий в прошлое, к началу одной из наиболее старых задач математики.

Суммы степеней

Пифагорейцы жили на берегах Средиземного моря и поклонялись числам. Одним из их хобби было составление треугольников из гальки.

Один камень, за которым идёт ряд из двух камней, вместе составляют треугольник из трёх камней. Добавьте ещё один ряд из трёх камней, и получится треугольник из шести камней. Эту процедуру можно продолжать, каждый раз добавляя ряд с количеством камней, увеличивающимся на единицу. Треугольник из шести рядов содержит 21 камень. А сколько камней будет в треугольнике из 423 рядов?

Пифагорейцы искали способ подсчитать сумму следующего ряда, не проводя суммирование:

1+2+3+⋯+n

В итоге они поняли, что если расположить два треугольника одинакового размера рядом друг с другом так, чтобы они образовали прямоугольник, можно найти площадь прямоугольника и разделить её на два, чтобы получить количество камней в каждом из треугольников:

1+2+3+⋯+n = n(n+1)/2

Архимед изучал схожую проблему. Его интересовала следующая последовательность:

12+22+32+⋯+n2

Её можно представить себе, как столбик из квадратов всё большего размера (состоящих из крохотных кубиков), стоящих один на другом в виде пирамиды. Архимед хотел узнать, есть ли лёгкий способ сказать, сколько кубиков потребуется для создания пирамиды с, допустим, 423 уровнями. Он записал решение задачи, которое тоже допускает геометрическую интерпретацию.

Три пирамидки можно составить вместе, чтобы они сформировали прямоугольную призму, с одного конца которого есть небольшой выступ в один кубик высотой. Этот выступ представляет собой треугольник, подчиняющийся тем же правилам, что и каменные треугольники пифагорейцев. Поэтому объём всей фигуры задаётся следующим уравнением:

3(12+22+32+⋯+n2) = (n+1)n2+(1+2+3+⋯+n)

Подставляя уравнение пифагорейцев для суммы первых n целых чисел, и проведя некоторые алгебраические операции, получим:

12+22+32+⋯+n2=n(n+1)(2n+1)/6

В 499 году индийский математик и астроном Ариабхата опубликовал свою работу, известную, как Ариабхатия, в которой была приведена формула для вычисления суммы кубов:

13+23+33+⋯+n3=(1+2+3+⋯+n)2

Формулу для суммы первых n положительных целых чисел в четвёртой степени опубликовали только 500 лет спустя.

К этому времени у вас мог появиться вопрос – а нет ли какого-нибудь универсального метода для вычисления суммы первых n целых чисел, возведённых в степень k? Математики тоже этим интересовались. Йохан Фаульхабер, немецкий математик, слегка подвинутый на нумерологии, смог вывести формулы для суммы целых вплоть до 17-й степени, опубликовав их в 1631 году. Но это заняло у него много лет, и общего решения он не дал. Блез Паскаль, наконец, придумал обобщённый метод в 1665 году, который, правда, зависел от подсчёта суммы целых чисел, возведённых в предыдущие степени. К примеру, для подсчёта суммы первых n положительных целых чисел, возведённых в 6-ю степень, вам нужно было сначала узнать, как подсчитать сумму первых n положительных целых чисел, возведённых в 5-ю степень

Более практичное обобщённое решение было приведено в посмертно опубликованной работе швейцарского математика Якоба Бернулли, умершего в 1705. Бернулли начал с того, что вывел формулы для подсчёта сумм первых n положительных целых чисел, возведённых в первую, вторую, третью и четвёртую степени. Он записал их в виде многочленов:

1+2+3+⋯+n = 1/2n2+1/2n

12+22+32+⋯+n2=1/3n3+1/2n2+1/6n

13+23+33+⋯+n3=1/4n4+1/2n3+1/4n2

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

Открытие Бернулли не означало, что сумму первых n положительных целых чисел, возведённых в любую степень, теперь можно было вычислить тривиально. Чтобы подсчитать сумму первых n положительных целых чисел, возведённых в степень k, необходимо было узнать все числа Бернулли вплоть до k-того. А каждое число Бернулли можно было подсчитать, только зная все предыдущие. Но высчитывать длинную последовательность чисел Бернулли было несравненно легче, чем подсчитывать каждую сумму возведённых в степень чисел, поэтому открытие Бернулли стало большим прорывом для математики.

Бэббидж

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

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

Разностная машина была не компьютером, потому что она умела только складывать и вычитать. Она пользовалась методом, придуманным французским математиком Гаспаром де Прони, разбившим процесс построения таблицы на мелкие шаги. Эти шаги требовали только сложения и вычитания, что означало, что для построения таблицы можно задействовать небольшую армию людей, не обладавших способностями к математике. Метод де Прони, известный, как метод разделённых разностей, можно было использовать для составления таблицы по любому многочлену. А многочлены уже можно было использовать для приближённого вычисления логарифмических и тригонометрических функций.

Чтобы представить себе, как работал этот процесс, рассмотрим следующую простую полиномиальную функцию:

y = x2+1

Метод разделённых разностей находит разницу между последовательными значениями y для разных значений x. Затем находятся разницы между этими разностями, и затем, возможно, ещё разницы между последними разностями, до тех пор, пока не появляется постоянная разность. Эту разность затем можно использовать для получения следующего значения полинома через сложение.

Поскольку указанный многочлен имеет лишь вторую степень, мы можем найти постоянную разность после всего лишь двух столбцов разностей:

x y Diff 1 Diff 2
1 2
2 5 3
3 10 5 2
4 17 7 2
5 ? ? 2

Теперь, зная, что постоянная разность равна 2, мы можем найти значение y, когда x равно 5, при помощи одного сложения. Сложив 2 и 7, последнее значение в столбце Diff 1, мы получим 9. Сложив 9 и 17, последнее значение в столбце y, мы получим 26 – наш ответ.

У разностной машины Бэббиджа для каждого разностного столбца таблицы был свой физический столбец с шестерёнками. Каждая шестерёнка представляла десятичную позицию, а весь столбец – десятичное число. У разностной машины было восемь колонок с шестернями, поэтому она могла составлять таблицы полиномов вплоть до седьмой степени. Колонки изначально ставили на значения, совпадающие с ранним рядом таблицы разностей, просчитанным заранее. Оператор затем должен был поворачивать коленчатый вал, что заставляло постоянную разность перемещаться по машине, когда значения, хранившиеся в каждой из колонок, добавлялись к следующим.

Бэббидж сумел построить небольшую часть разностной машины и использовать её для демонстрации своих идей на вечеринках. Но, даже потратив столько денег, что их хватило бы на постройку двух крупных боевых кораблей, он так и не смог завершить свою машину. В начале XVIII века Бэббидж не нашёл никого, кто смог бы изготовить нужное ему количество шестерней с нужной точностью. Рабочую версию разностной машины построили лишь в 1990-х годах, после появления высокоточных станков.

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

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

Примечания переводчицы

В Турине Бэббидж познакомился с итальянским инженером и будущим премьер-министром Луиджи Федерико Менабреа. Он убедил Менабреа написать обзор возможностей аналитической машины. В 1842 Менабреа опубликовал работу по этой теме на французском языке. В следующем году Лавлейс опубликовала перевод работы Менабреа на английский.

Лавлейс, известная тогда, как Ада Байрон, познакомилась с Бэббиджем на вечеринке в 1833 году, когда ей было 17, а ему 41. Лавлейс была поражена разностной машиной Бэббиджа. Но она смогла разобраться, как та работает, поскольку в детстве её активно обучали математике. Её мать, Анабелла Милбанк, решила, что твёрдая математическая основа образования дочки отвадит от неё дикую и романтическую натуру, которой обладал её отец лорд Байрон, знаменитый поэт. После знакомства в 1833 году Лавлейс и Бэббидж оставались в общем социальном кругу и часто переписывались.

Ада Байрон вышла замуж за Уильяма Кинга в 1835. Кинг позднее стал графом Лавлейсом, вследствие чего Ада стала графиней Лавлейс. И даже родив троих детей, она продолжала обучаться математике, взяв в учителя Огастеса де Моргана, открывшего законы Моргана. Лавлейс сразу распознала потенциал аналитической машины, и с готовностью согласилась работать с ним для продвижения этой идеи. Её друг предложил ей перевести работу Менабреа для английской аудитории.

В работе содержалось краткое описание работы разностной машины, а потом было показано, насколько бы её превзошла аналитическая машина. Аналитическая машина должна была быть настолько мощной, что могла бы «сформировать результат перемножения двух чисел, каждое из которых состоит из двадцати знаков, всего за три минуты». Менабреа дал и другие примеры возможности машины, демонстрируя, как она решала бы простую систему линейных уравнений и раскладывала бы результат перемножения двух биномов. В обоих случаях Менабреа представил то, что Лавлейс назвала «диаграммами развития», описывавшими последовательность операций, необходимых для вычисления правильного ответа. Это были программы, в том же смысле, в каком программа Лавлейс была программой, и они были опубликованы за год до её работы. Но, как мы увидим, программы Менабреа были всего лишь примерами возможного. Все они были тривиальными в том смысле, что не требовали никакого разветвления или циклов.

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

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

Полный её текст, в виде расширенной «диаграммы развития», формат которой Лавлейс описывает в примечании D, можно посмотреть тут. Это, по сути, список операций, обозначенных математическими символами. Не похоже, чтобы Бэббидж или Лавлейс зашли так далеко, чтобы разработать набор операционных кодов для аналитической машины.

Хотя Лавлейс описывала метод вычисления полной последовательности чисел Бернулли до определенного предела, приведённая ею программа показывала только один шаг этого процесса. Она подсчитывала число, которое она назвала B7, известное современным математикам, как восьмое число Бернулли. Поэтому её программа решала следующее уравнение:

B7=−1(A0+B1A1+B3A3+B5A5)

Тут каждый член представляет коэффициент в полиномиальной формуле для суммы целых чисел, возведённых в определённую степень. Тут речь идёт о восьмой степени, поскольку восьмое число Бернулли впервые появляется в формуле для суммы целых положительных чисел, возведённых в восьмую степень. Числа B и A представляют два вида множителей, открытых Бернулли. Числа от B1 до B7 – различные числа Бернулли, пронумерованные согласно Лавлейс. Числа от A0 до A5 представляют собой множители коэффициентов, которые Бернулли мог вычислить при помощи треугольника Паскаля. Значения A0, A1 и A3 приведены ниже. Здесь n обозначает индекс чесла Бернулли в последовательности нечётных чисел Бернулли, начинающихся с первого. В программе Лавлейс n = 4.

A0=−1/2⋅(2n−1)/(2n+1)

A1=2n/2

A3=2n(2n−1)(2n−2)/(2⋅3⋅4)

A5=2n(2n−1)(2n−2)(2n−3)(2n−4)/(2⋅3⋅4⋅5⋅6)

Я перевёл программу Лавлейс на язык C, и так, наверное, её будет проще читать. Сначала её программа вычисляет A0 и результат умножения B1A1. Затем начинается цикл, повторяющийся дважды, для вычисления B3A3 и B5A5, поскольку они считаются по одной схеме. После подсчёта каждого перемножения, результат добавляется к предыдущим, поэтому к концу программы получается полная сумма.

Очевидно, что перевод на C не может быть точным воспроизведением программы Лавлейс. Он объявляет переменные в стеке, а переменные Лавлейс больше были похожи на регистры. Но он делает более очевидной наиболее пророческую часть программы Лавлейс. В программе на C есть два цикла while, один внутри другого. У программы Лавлейс не было циклов while, но она сгруппировала операции, и описала в примечании, почему они должны повторяться. Переменная v10 из оригинальной программы и в переводе на C, работает счётчиком, уменьшающимся с каждым проходом цикла – подобная конструкция знакома каждому программисту. В общем, кроме изобилия переменных с непонятными именами, программа на C не выглядит чем-то незнакомым.

Стоит также отметить, что перевод программы Лавлейс на C был не очень сложным, благодаря одной детали в её диаграмме. В отличие от таблиц Менабреа, в её таблице есть столбец «признак изменения значения переменной», благодаря которому гораздо проще отслеживать изменение состояния. Она добавляет каждой переменной надстрочный индекс, чтобы обозначить хранящиеся в них последовательные значения. Индекс 2, к примеру, означает, что используемое значение – это второе значение, присвоенное переменной с начала программы.

Первый программист?

После того, как я перевёл программу Лавлейс на язык C, я смог запустить её на компьютере. К моему разочарованию, результат получался неверный. После поиска ошибок я, наконец, понял, что проблема была не с моим кодом – баг содержался в изначальной программе!

В «диаграмме развития» Лавлейс пишет в четвёртой операции v5 / v4. Но правильно будет v4 / v5. Эта ошибка могла появиться при печати, а не у Лавлейс. Так или иначе, это самый старый компьютерный баг. Я удивился тому, что порядка десяти минут потратил на поиск самого первого бага в истории.

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

В одной из статей Википедии написано, что Лавлейс первая опубликовала «сложную программу». Возможно, именно так и стоит воспринимать её достижение. Менабреа в своей работе опубликовал «диаграммы развития» за год до публикации перевода Лавлейс. Бэббидж также написал более двадцати программ, так и не опубликованных. Поэтому не совсем верно писать, что Лавлейс написала или опубликовала первую программу, хотя всегда можно поспорить о том, что считать программой. И всё равно, программа Лавлейс намного опередила всё, что было опубликовано до неё. В самой длинной программе Менабреа было 11 операций и не было циклов и ветвлений. В программе Лавлейс было 25 операций и вложенный цикл (а, следовательно, и ветвление). Менабреа в конце своей работы написал следующее:

После постройки машины трудности сведутся к изготовлению карточек; но поскольку это всего лишь перевод алгебраических формул, посредством некоей простой записи будет довольно просто перепоручить их выполнение какому-нибудь рабочему.

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

Автор: SLY_G

Источник

Элеонора Мандалян: Ада Лавлейс, лорд Байрон и первый компьютер (Номер 6 (233) от 15 марта 2013 г.)

Цифровая вычислительная машина Чарльза Бэббиджа

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

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

Главную, ключевую, можно сказать, роль в жизни Ады сыграл Чарльз Бэббидж, английский математик и изобретатель, придумавший малую и большую «разностные машины» (Difference Engine) — громадные и очень сложные автоматические арифмометры для построения математических таблиц. А затем и универсальную цифровую вычислительную машину (ЦВМ), добавив к своему «арифмометру» счётное и запоминающее устройства, иными словами, сделав его программно управляемым.

Малую разностную Бэббиджу удалось сконструировать, а на создание большой он потратил 12 лет и кучу денег — своих, спонсорских и государственных, но так и не завершил задуманное — не хватило средств.

Третья, «аналитическая машина», как он ее называл (Analytical Engine), так и осталась в проекте. Она должна была заменить огромное количество людей, составляющих вручную различные таблицы — астрономические, навигационные, математические, что к тому же помогло бы исключить неминуемость ошибок как атрибут человеческого фактора.

В 1833 году Чарльз Бэббидж подробно описал ее конструкцию и принципы работы, но реализовать свою идею на практике ему, увы, не удалось — в первую очередь из-за отсутствия материальной поддержки проекта и недостаточности технологического уровня того времени. (ЦВМ Бэббиджа все же была построена по его чертежам, — сыном изобретателя Генри Бэббиджем, став прообразом современного компьютера.)

С этим выдающимся человеком Ада познакомилась не в кулуарах светских тусовок, а на очередной промышленной выставке, где любила разглядывать новинки науки и техники. Объединила их общая страсть — не друг к другу, а к математике. Он — 42-летний ученый, профессор кафедры математики Кембриджского университета, член Королевского научного общества, один из крупнейших математиков того времени, она — 17-летняя юная дева.

 

Симбиоз Бэббидж-Лавлейс

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

Бэббидж прекрасно понимал, что своим изобретением опережает время. Позднее, в 1864-м, он напишет: «Пройдёт, вероятно, полстолетия, прежде чем люди убедятся, что без тех средств, которые я оставляю после себя, нельзя будет обойтись». Прошло не 50, а 80 лет, прежде чем Говард Айкен, на основании наследия Бэббиджа и Ады Лавлейс, создал первый полноценный компьютер — машину Марк-I (Automatic Sequence Controlled Calculator — ASCC), назвав ее «Осуществлённой мечтой Бэббиджа».

Как состоялся симбиоз Бэббидж-Лавлейс? Недооцененный в Англии ученый ездил по другим европейским странам с лекциями, рассказывая о своем детище. В 1840 году по приглашению итальянских математиков он выступил перед студентами Туринской артиллерийской академии. Совсем еще молодой в ту пору Луиджи Менабреа (в будущем премьер-министр Италии), преподававший баллистику в академии, записал лекции английского изобретателя на французском языке и опубликовал их под названием «Элементы аналитической машины Бэббиджа».

По просьбе своего ученого друга Ада взялась перевести очерк Менабреа на английский, но подошла к работе творчески. Провозившись с ним почти год и корректируя свои дополнения с Бэббиджем по почте или при встречах, она добавила к переводу многочисленные комментарии, что увеличило объем монографии более чем вдвое. На 52 страницах собственного текста она не только дала подробное описание ЦВМ, но и добавила от себя четкие и прозорливые инструкции — как ею можно будет пользоваться, и на что она способна.

В одном из писем к Бэббиджу, обсуждая с ним свои дополнения, она предложила ввести в примечания последовательность рациональных чисел Якоба Бернулли (швейцарского математика XVII века) в качестве примера вычисления машиной «неявной функции без предварительного решения с помощью головы и рук человека». Этим она предвосхитила возможность создания искусственного разума. Так в 40-х годах XIX века, задолго до самого компьютера, на свет появилось то, что принято считать первой в истории человечества компьютерной программой. И создал ее не маститый ученый-изобретатель, а хрупкая английская леди.

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

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

Отдавая должное Аде Лавлейс, кажется несколько несправедливым — с точки зрения истории — умаление роли Чарльза Бэббиджа, положившего всю свою долгую жизнь на разработку и строительство первой вычислительной машины, описанной и прокомментированной женщиной-математиком. Бэббидж с благодарностью величал своего умного и очаровательного друга: «мой дорогой Интерпретатор». Именно интерпретатор того, что уже было придумано и продумано им. Не будь изобретения Бэббиджа, и Ада Лавлейс, возможно, запомнилась бы лишь как дочь поэта Байрона. Хотя… как знать. Для самовыражения ее блистательный ум вполне мог выбрать себе в партнеры другого гения. К чему теперь гадать. В историю, намного опережая свое время, они вошли не порознь, а рука об руку.

И когда узнаешь, что первая полноценная программа, запечатленная в памяти компьютера, появилась лишь 100 лет спустя, когда в 1946 году американские физики и инженеры Джон Преспер Экерт и Джон Уильям Мокли создали электронный числовой интегратор и вычислитель ENIAC (Electronic Numerical Integrator And Computer), ставший прототипом большинства современных компьютеров, невольно проникаешься к Аде Лавлейс особым уважением и восхищением. Думаю, стоит познакомиться с этой незаурядной, чтобы не сказать гениальной, женщиной поближе.

 

Дочь лорда Байрона

Августа Ада Кинг-Байрон, графиня Лавлейс, или, как ее позже называли, просто Ада Лавлейс, родилась в 1815 году, в Лондоне. Ее родители, лорд Джордж Байрон и Анна Иза­белла Милбэнк (Аннабелла), были женаты всего год. Мать, женщина строгих правил и голубых кровей, имела редкое для светской дамы пристрастие к математике, за что муж прозвал ее «Королевой параллелограммов».

Джорджу Байрону довелось увидеть новорожденную дочь всего один раз. Аннабелла сама бросила его (а не он ее, как считают многие). Расстались они скорее всего из-за того, что она не смогла простить мужу его непреодолимого влечения к собственной кузине Августе, роман с которой начался задолго до их брака. Аннабелла сбежала с трехмесячной девочкой к родителям и только оттуда написала, что больше не вернется. Гордая и независимая, она никому не стала объяснять причины разрыва, что и породило многочисленные толки, в чем именно провинился перед ней супруг. Из-за обрушившихся на него пересудов и обвинений во всех смертных грехах (именно «смертных», поскольку в Англии они карались смертной казнью), Байрон навсегда покинул Родину.

Судя по стихотворению «Прощание с леди Байрон», поэт любил жену. Кстати, в многочисленных письменных пересказах биографии их дочери неизменно упоминается, что отец посвятил крошке Аде всего одно четверостишье в поэме «Паломничество Чайльд-Гарольда». Это не так. Вот отрывок из «Прощания с леди Байрон» (перевод И. Козлова):

 

И в час, как нашу дочь ласкаешь,

Любуясь лепетом речей,

Как об отце ей намекаешь?

Ее отец в разлуке с ней.

Когда ж твой взор малютка ловит, —

Ее целуя, вспомяни

О том, тебе кто счастья молит,

Кто рай нашел в твоей любви.

И если сходство в ней найдется

С отцом, покинутым тобой,

Твое вдруг сердце встрепенется,

И трепет сердца — будет мой.

 

Живя вдалеке от Англии, он постоянно интересовался дочерью и очень переживал, когда она болела. А в письме к кузине Августе написал: «Надеюсь, Бог наградит ее чем угодно, только не поэтическим даром…». На то же надеялась и Аннабелла, изъяв из дома все творения бывшего мужа, а заодно и всю поэзию.

Байрон умер в возрасте 36 лет (в 1824 году), в Греции, за которую сражался (Греческая война за независимость, греческая революция — вооружённая борьба греческого народа за независимость от Османской империи, 1821-1832 гг.), отдав ей всего себя — свои силы, талант и средства. Его останки перевезли в Англию — в родовой склеп в церкви Ханкелл-Торкард, у Ньюстедского аббатства. Аде в ту пору было всего 9 лет, и она только-только начала поправляться, поднявшись с постели.

А болела девочка долгих три года. Ее натура, унаследовавшая гены обоих родителей, развивалась противоречиво и органично одновременно. Отец наградил ее пылким и романтичным нравом, а мать — любовью к точным наукам. Длительный период болезни сделал девочку затворницей, но и стал поводом  для ее углубленного и всестороннего домашнего образования.

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

Непререкаемым авторитетом для нее стала супруга де Моргана, знаменитая Мэри Соммервиль, за выдающиеся достижения в математике и переводные труды с комментариями (в частности — «Трактат о небесной механике» Пьера Лапласа) названная «королевой науки XIX века».

В 12 лет Ада мечтала не о сказочном принце, а о механических крыльях, которые смогли бы оторвать ее от земли и поднять в небо. И не просто мечтала, а мысленно конструировала, делая чертежи оригинального летательного аппарата.

В 17 лет дочь лорда Байрона впервые вышла в свет и была представлена королю и королеве. Утонченная, изысканная, с безупречными манерами, она была, как пишут биографы, «красива, изящна и таинственно бледна». Она прекрасно танцевала, играла на нескольких инструментах, красиво, со вкусом одевалась, знала несколько языков, сочиняла (несмотря на запреты матери) стихи. Но это были далеко не единственные ее достоинства.

 

Ада Байрон-Кинг, она же леди Лавлейс

В очаровательную оболочку хруп­кой юной девы был заключен могучий аналитический ум, ставивший в тупик и вызывавший ступор у молодых людей, острых на язык, самоуверенных выпускников престижных университетов. Вести с нею беседу на равных было не по плечу не только жеманным барышням, но и иным взрослым ученым мужам. Заинтригованные столь необычным явлением юноши добивались права пообщаться с ней, завоевать ее благосклонность — даже не в качестве ухажеров, а в качестве достойных ее собеседников.

Аде было 19, когда она сделала свой выбор и вышла замуж за 29-летнего барона Уильяма Кинга, став Августой Адой Байрон-Кинг. А после того как он унаследовал титул лорда Лавлейса, стала леди Лавлейс, и с этим именем вошла в историю. Их брак был удачным, если не считать преждевременной смерти Ады и полного разорения Кинга по вине неуемной супруги.

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

Ее «главный друг» Чарльз Бэббидж, одержимый созданием ЦВМ, заразил своими идеями и пылкую Аду. Загоревшись, она стремилась всячески помогать ему, не только умом, но и деньгами — не задумываясь тратила свои и мужа, обращалась за помощью ко всем, кого знала, включая своих великих современников: Майкла Фарадея, Дэвида Брюстера, Чарльза Уитстона, Чарльза Диккенса. .. увы, в основном получая отказ. Правительство поначалу поддерживало Бэббиджа, но и его вера в проект, и соответственно финансы иссякли. Ада и бегами-то увлеклась ради того, чтобы раздобыть деньги на строительство его машины.

В их доме регулярно собирались сливки лондонского общества. Один из гостей оставил свои впечатления о хозяйке: «Она была ни на кого не похожа и обладала талантом не поэтическим, но математическим и метафизическим».

 

Мистический уклон

Не знаю, как насчет метафизики, а вот мистический уклон интересам Ады был явно присущ, о чем в открытую поговаривали те, кто ее знал. Более того, не понимая истоков уникального дара и парадоксального ума этой молодой леди, ее подозревали даже в сговоре с дьяволом. Чарльз Диккенс (он был на 3 года старше Ады) вполне серьезно заявлял, что «после её посещений в доме остаётся шлейф из нечистой силы».

И, надо признать, она сама давала пищу для подобных домыслов, поминутно поминая Сатану в разных контекстах и прозрачно намекая на свою исключительность: «Мой мозг — нечто большее, чем просто смертная субстанция, я надеюсь, время покажет это». «Клянусь дьяволом, не пройдет и десяти лет, и я высосу достаточно жизненного сока из тайн мироздания. Так, как этого не могут сделать обычные смертные умы и уста. Никто не знает, какая чудовищная сила лежит еще неиспользованной в моем маленьком гибком существе». Оригинальное заявление, не правда ли. Или: «Для Вселенной хорошо, что мои устремления и честолюбие навсегда связаны с духовным миром, и что я не собираюсь иметь дела с саблями, ядом и интригами вместо X, Y и Z». А то бы что? Она разнесла бы полмира?

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

Кто наделил это хрупкое болезненное создание «чудовищной силой» и недоступными еще ее времени прозрениями — Бог, Дьявол или Вселенная, нам знать не дано. Ясно одно — Ада Лавлейс опередила свое время этак лет на сто.

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

 

«Ада» — язык программирования

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

В 1975 году министерством обороны США было одобрено решение в честь гениальной леди Лавлейс назвать универсальный язык программирования, единый для американских вооруженных сил, а затем и для НАТО в целом — «Ада».

Российские программисты-остряки не преминули обыграть двусмысленность такого названия (в русском звучании, разумеется) и в противовес «языку Ада» создали свой алгоритмический «язык Рая». Широко известен и выпад советского журналиста-международника, Мэлора Стуруа, ярого антиамериканиста: «Язык Пентагона — враг мира. Язык «Ады» — голос термоядерного ада… В языке «Ады» слышится проклятие роду людскому».

Ну это «Маркс-Энгельс-Ленин-Октябрьская-Революция» (именно так расшифровывается имя Мэлор), что называется, перегнул. Без компьютера и его программной системы не обходится сегодня не только Пентагон, но и ни один человек в цивилизованном мире. И то, над чем так самозабвенно работали Чарльз Бэббидж и Ада Лавлейс, — безусловный дар всему человечеству.

Не зря ведь благодарные компьютерщики разных стран с недавних пор начали отмечать День программиста, который они неофициально празднуют дважды в году: 10 декабря, в день рождения Ады Лавлейс, и 19 июля, когда ею была написана первая программа. Во всех ВУЗах мира на факультетах компьютерного программирования студенты изучают универсальный язык «Ада» и пользуются, в числе прочих, терминами, введенными в оборот этой удивительной женщиной аж 170 лет назад. 

Нейронная соната: как искусственный интеллект генерирует музыку

Можно ли автоматизировать творчество и оцифровать музу? Разбираемся, действительно ли нейросети претендуют на создание музыкальных шедевров

Об эксперте: Ольга Перепелкина, эксперт в области машинного обучения и нейросетей, преподаватель и автор курса Affective Computing в ВШЭ.

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

Первая музыка, созданная с использованием компьютера, появилась в 1957 году в Bell Laboratories. Это была композиция длиной 17 секунд, которую ее автор Ньюман Гутман назвал The Silver Scale («Серебряная чешуя»):

В том же году The Illiac Suite стала первой партитурой, написанной компьютером. Она был названа в честь компьютера ILLIAC I университета штата Иллинойс в США. Это ранний пример алгоритмической композиции, основанной на вероятностном моделировании (цепях Маркова). В области синтеза звука знаменательным событием стал выпуск синтезатора DX 7 компанией Yamaha в 1983 году, использующего модель синтеза на основе частотной модуляции (FM).

Генерация музыки

Когда мы говорим о создании музыки при помощи компьютера, речь может идти как об ассистивной системе или компьютерной среде, помогающей музыкантам (композиторам, аранжировщикам, продюсерам), так и об автономной системе, нацеленной на создание оригинальной музыки. В обоих типах систем могут участвовать нейросетевые алгоритмы и глубокое обучение.

Мы также можем говорить о разных этапах создания музыки, где искусственный интеллект встраивается в процесс и помогает нам: сочинение, аранжировка, оркестровка и т. д. Когда человек сочиняет музыку, он редко создает новое произведение с нуля. Он повторно использует или адаптирует (сознательно или бессознательно) музыкальные элементы, которые слышал ранее, а также руководствуется принципами и рекомендациями из теории музыки. Так и компьютерный помощник может включаться на различных этапах создания произведения, чтобы инициировать, предлагать или дополнять композитора-человека.

Генерация нот

Традиционным подходом является создание музыки в символической форме. Результатом процесса генерации может быть музыкальная партитура, последовательность событий MIDI (распространенный стандарт цифровой звукозаписи), простая мелодия, последовательность аккордов, текстовое представление или какое-либо другое представление более высокого уровня. То есть искусственный интеллект создает символическую форму, по которой затем можно сыграть произведение.

Иными словами, физический процесс, посредством которого создается звук, упраздняется — вместо создания всего многообразия аудиосигнала, алгоритм выдает «инструкцию». Это резко сокращает объем информации, которую алгоритмы должны производить, что сводит проблему синтезирования к более решаемой и позволяет эффективно использовать простые модели машинного обучения.

Такой подход, например, позволил создать музыку в стиле Баха. Другой пример — нейросеть от OpenAI Musenet, которая появилась в апреле 2019 года. MuseNet может сочинять четырехминутные композиции на десяти инструментах и комбинировать стили «от Моцарта до Beatles». Эта нейросеть была обучена на огромном массиве MIDI-записей.

Генерация аудио

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

В апреле 2020 года, компания OpenAI выпустила Jukebox, — нейросеть, которая генерирует музыку в различных жанрах. Она может сгенерировать даже элементарный голос, а также различные музыкальные инструменты. Jukebox создает аудиосигнал напрямую, минуя символьное представление. Такие музыкальные модели имеют гораздо большую емкость и сложность, чем их символьные аналоги, что подразумевает более высокие вычислительные требования для обучения модели.

Как творят нейросети?

Как же именно нейросети создают музыку? Общий принцип заключается в том, что нейросеть «смотрит» на огромное количество примеров и учится генерировать что-то похожее. В основе таких алгоритмов обычно лежат автокодировщики и генеративно-состязательные нейросети (Generative Adversarial Network, GAN).

Автокодировщик — это нейросеть, которая учится представлять сложный и многомерный набор данных в «упрощенном» виде, а затем из этого упрощенного представления снова воссоздать исходные данные. То есть модель генерации музыки на основе автокодировщика сначала сжимает необработанный звук в пространство меньшей размерности, отбрасывая некоторые из несущественных для восприятия битов информации. Затем мы обучаем модель генерировать звук из этого сжатого пространства и повышать качество до исходного звукового пространства.

Генеративно-состязательную нейросеть метафорично можно представить как работу «фальшивомонетчика» и «следователя». Задача «фальшивомонетчика», или генеративой модели нейронной сети (generator, G), — создать из шума реалистичный экземпляр данных, например, изображение лица или, в нашем случае, музыкальную последовательность. «Следователь», или дискриминативная модель (discriminator, D) пытается отличить реальный экземпляр данных (настоящую фотографию лица или настоящую музыкальную мелодию) от «фальшивой», созданной генератором. И так, соревнуясь друг с другом, обе модели совершенствуют свои «навыки», в результате чего генеративная модель обучается создавать очень правдоподобные примеры данных.

Для обучения модели Jukebox использовал базу данных из 1,2 млн песен (600 тыс. из которых на английском языке), которая включала как сами композиции, так и тексты песен и метаданные — исполнителя, жанр и ключевые слова.

Музыкальный тест Тьюринга

Как понять, что музыкальное произведение, созданное машиной, действительно достойно нашего внимания? Для проверки работы систем искусственного интеллекта был придуман тест Тьюринга. Его идея заключается в том, что человек взаимодействует с компьютерной программой и с другим человеком. Мы задаем вопросы программе и человеку и пытаемся определить, с кем же мы разговариваем. Тест считается пройден программой, если мы не можем отличить программу от человека.

В области генерации музыки иногда используют «музыкальный тест Тьюринга». Так, например, был протестирован алгоритм DeepBach, который генерирует ноты в стиле Баха. Были опрошены более 1,2 тыс. людей (как эксперты, так и обычные люди), которые должны были отличить реального Баха от искусственного. И оказалось, что сделать это очень сложно — люди с трудом могут различать хоралы, сочиненные Бахом, и созданные DeepBach.

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

А как же лирика?

Хорошо, с музыкальными композициями разобрались, а как же тексты для песен? Может ли искусственный интеллект сочинять стихи? Да, и эта задача даже проще, чем написание мелодий, хотя и сложностей здесь тоже хватает — алгоритму нужно не только «придумать» осмысленный текст, но и учесть его ритмическую структуру.

В 2016 году разработчики «Яндекса» выпустили альбом «Нейронной обороны». В него вошли 13 песен в стиле «Гражданской обороны», тексты для которых сочинил искусственный интеллект. А годом позже вышел альбом «Neurona» с четырьмя песнями в стиле Nirvana, стихи для которых также были сгенерированы нейросетями.

Сейчас спою

Музыку мы создавать научились, стихи для нее писать — тоже, а как же быть с человеческим голосом? Могут ли нейросети петь вместо нас?

Генерация реалистичного человеческого голоса нужна не только для пения, но и во многих системах — от call-центров до личных голосовых помощников. Еще в 2016 году компания DeepMind выпустила алгоритм WaveNet, который создает очень реалистичный голос по заданному тексту (Text-To-Speech). Технология доступна для двух языков — английского и китайского.

В апреле 2020 года в ByteDance AI Lab (лаборатории компании, создавшей знаменитый TikTok) создали алгоритм ByteSing. Эта система на основе нейросетевых автокодировщиков позволяет генерировать очень реалистичное пение на китайском языке.

Большинство разработчиков современных алгоритмов генерации музыки, стихов и пения отмечают, что их системы являются ассистивными. Они не претендуют на полноценную замену человеческого творчества, а, напротив, призваны помочь человеческой музе. Человек не перестанет творить по мере развития алгоритмов и программ, но будет использовать их в своей деятельности. Очень вероятно, что в будущем великие шедевры будут созданы людьми и искусственным интеллектом совместно.

В 1842 году Ада Лавлейс написала первую в мире компьютерную программу

Сегодня я узнал, что Ада Лавлейс была первым в мире программистом еще в середине 1800-х годов, написав первую в мире компьютерную программу в 1842 году. опытным математиком, что, очевидно, было редкостью для женщин того времени, когда она жила.

Лавлейс была единственной законной дочерью лорда Байрона, хотя она никогда не знала его, так как он навсегда покинул Англию в ее ранние годы и умер, когда ей было 9 лет.Первоначально Лавлейс обучали математике, что было нетипично для женщин того возраста, поскольку ее мать пыталась изгнать любое безумие, которое могло исходить от лорда Байрона (очевидно, ее мать не слишком высоко ценила знаменитый лорд). Ада проявила способности к математике и естественным наукам, и один из ее более поздних наставников, знаменитый математик и логик Август де Морган, заметил, что ее исключительные способности в математике могут когда-нибудь привести ее к тому, чтобы стать «оригинальным математическим исследователем, возможно, первоклассного уровня.Как он был прав.

Так как же Ада Лавлейс стала первым в мире программистом, когда в 1800-х годах не было компьютеров? Что ж, существует множество различных способов сделать компьютер, работающий «под капотом», так сказать, очень похожий на современные компьютеры, которые являются «Turing Complete». Если вы не знакомы, то класс машин, известный как «Turing Complete», более или менее — это просто машины, которые могут производить результат любого вычисления. Или, более точно, что машину можно использовать для имитации простейшего компьютера, чтобы он мог делать все, что может делать этот простейший компьютер.Поскольку этот теоретически простейший компьютер, «машина Тьюринга», может делать все, что может делать самый сложный компьютер, то любая машина, которая может делать все, что может, может также выполнять любые вычисления, которые может делать современный компьютер, если мы игнорируем объемы памяти. и тому подобное (при условии бесконечной памяти).

Оказывается, был один такой компьютер, разработанный Чарльзом Бэббиджем в 1800-х годах. Бэббидж задался целью построить машину, которая была бы способна каждый раз правильно выполнять различные математические вычисления, избавляясь от ошибок, присущих людям, выполняющим расчеты вручную.Однако самые ранние «компьютеры» Бэббиджа, которые он разработал, не были завершены по Тьюрингу. Вдобавок к этому его компьютеры не работали от электричества, а были полностью механическими. Некоторые из его конструкций работали на паре, в то время как другие нужно было проворачивать вручную, чтобы вращать тысячи шестеренок и деталей.

Первая «Разностная машина» Бэббиджа, как он ее назвал, состояла из более чем 25 000 деталей и весила примерно пятнадцать тонн. Однако, как ни странно, сконструированная им машина так и не была завершена; он был построен только наполовину.Затем он придумал вторую разностную машину, которая была усовершенствованием незавершенной первой разностной машины, способной возвращать математические результаты до 31 цифры. Он так и не закончил строительство этого; хотя он действительно завершил проекты этих машин, которые с тех пор доказали свою эффективность. В частности, в 1991 году была построена его вторая модель разностной машины, работа которой была продемонстрирована путем выполнения серии расчетов. В 2000 году был построен принтер, который он спроектировал и который был подключен к разностному двигателю, и также была показана его работа.

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

Эта машина также могла автоматически использовать результаты предыдущих вычислений в будущих вычислениях. Таким образом, вы можете просто ввести программу, включить шестеренки и позволить машине работать, выдавая все результаты выполнения вашей программы. Этот и другие аспекты базовой архитектуры сделали эту машину удивительно похожей по архитектуре на то, как работают современные компьютеры.Таким образом, Чарльз Бэббидж известен как «отец компьютера».

Как и его ранние машины, намного опередившие свое время, эта была просто спроектирована, а не построена. Если бы он построил ее, это была бы первая машина, полностью завершенная по Тьюрингу. Таким образом, с точки зрения возможностей, опять же при условии бесконечной памяти, его машина была бы в состоянии выполнить любые вычисления, которые может сделать современный компьютер.

Ада Лавлейс, которую Бэббидж прозвал «Чародейкой чисел», была впечатлена конструкцией аналитической машины Бэббиджа и между 1842 и 1843 годами перевела статью итальянского математика Луиджи Менабреа, посвященную двигателю.Затем она дополнила статью собственными заметками о двигателе, причем заметки были длиннее, чем сами мемуары. В эти добавленные примечания она включила первую в мире компьютерную программу, которая использовала бы машину для вычисления последовательности чисел Бернулли, и с тех пор было показано, что это действительный алгоритм, который работал бы правильно, если бы аналитическая машина когда-либо была построена.

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

Ада умерла примерно через 9 лет после написания этой программы, в очень молодом возрасте 36 лет, 27 ноября 1852 года, от рака матки и кровопускания, сделанного ее врачами.

Если вам понравилась эта статья, вам также может понравиться наш новый популярный подкаст The BrainFood Show (iTunes, Spotify, Google Play Music, Feed), а также:

Бонусные факты:

  • Половина мозга Чарльза Бэббиджа хранится в Хантерианском музее в Лондоне. О том, что случилось с другой половиной, не сообщается.🙂
  • Язык программирования «Ада», который является «официальным» языком программирования вооруженных сил Соединенных Штатов, был назван в честь Ады Лавлейс; военному стандарту языка «MIL-STD-1815» был присвоен номер года ее рождения.
  • Раздраженный «неточностью» в поэме «Видение греха», Чарльз Бэббидж написал знаменитому поэту Альфреду Теннисону письмо с просьбой изменить строки «Каждый миг человек умирает, Каждый миг человек рождается» на «Каждый миг умирает человек». человек, Каждое мгновение рождается 1 1/16».
  • Изображение Ады Лавлейс можно увидеть на наклейках с голограммой подлинности продукта Microsoft.
Развернуть для ссылок:

Ада Лавлейс: Что делала первая компьютерная программа?

Британский поэт-романтик лорд Байрон — герой среди греков, добровольно принявший участие в войне страны за независимость против Османской империи в 1820-х годах. Два десятилетия спустя дочь Байрона станет героем среди гиков, написав то, что сегодня считается самой первой компьютерной программой.

Ее подвиг тем более впечатляет, если учесть, что в 1840-х не было компьютеров. В то время слово «компьютер», впервые появившееся в английском языке в начале 1600-х годов, означало человека, чья работа заключалась в выполнении вычислений.

Вместо этого Лавлейс, которой сегодня на главной странице Google исполняется 197 лет, написала свою программу на гипотетическом компьютере, разработанном британским математиком и инженером Чарльзом Бэббиджем.

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

Он убедил собственное правительство финансировать его «Разностную машину», как он ее называл. Но спустя десять лет и около 17 000 фунтов стерлингов из государственных денег машина Бэббиджа, предназначенная для табулирования логарифмов и тригонометрических функций, осталась построенной лишь наполовину. Поэтому он сделал то, что сделал бы любой хороший провидец: он отказался от планов в пользу чего-то более амбициозного.

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

Конечно, средний ноутбук в миллионы раз мощнее. По словам Джона Грэма-Камминга, британского программиста и писателя, который хочет создать реальную аналитическую машину, машина будет иметь 675 байт памяти и тактовую частоту 7 Гц. Грэм-Камминг сказал Би-би-си, что, если машина Бэббиджа будет завершена, она будет «размером с небольшой паровоз».

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

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

Ада проявила замечательные способности к математике, и к семнадцати годам ее представили Чарльзу Бэббиджу, который назвал ее «Чародейкой чисел».

Ада, ставшая в 1838 году графиней Лавлейс , переписывалась с Бэббиджем по поводу его разностных и аналитических машин, а в 1842 и 1843 годах она переводила эссе об аналитической машине итальянского государственного деятеля и математика Луиджи Менабреа.

Ежедневно получайте истории, которые
расширяют возможности и поднимают настроение .

Заметки Лавлейс к эссе Менабреи, которые пытаются объяснить, что такое аналитическая машина и почему она важна, длиннее самого эссе.Примечание G очень подробно описывает, как можно использовать перфокарты, чтобы заставить машину Бэббиджа вычислить последовательность чисел Бернулли. Историки науки считают Note G самой первой компьютерной программой, что делает Лавлейс первым программистом.

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

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

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

Родившаяся Ада Байрон 10 декабря 1815 года, Ада была еще подростком, когда познакомилась с кембриджским профессором математики Чарльзом Бэббиджем, который изобрел разностную машину, механический компьютер, предназначенный для автоматического и безошибочного создания математических таблиц.Бэббидж так и не построил настоящую машину из-за личных неудач и финансовых трудностей. К 1834 году он перешел к разработке своей аналитической машины, первого компьютера общего назначения, который использовал перфокарты для ввода и вывода. Эта машина также не имела финансирования и так и не была построена. (Разностная машина Бэббиджа была окончательно построена между 1985 и 2002 годами — и она заработала.)

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

Из заметок Лавлейс стало ясно, что она разбирается в аналитической машине не хуже самого Бэббиджа.Более того, она поняла, как заставить его делать то, что делают компьютеры. Она предложила ввод данных, который запрограммировал бы машину на вычисление чисел Бернулли, что сейчас считается первой компьютерной программой. Но более того, Лавлейс была дальновидной: она понимала, что числа могут использоваться для представления большего, чем просто количества, и что машину, которая может манипулировать числами, можно заставить манипулировать любыми данными, представленными числами. Она предсказала, что такие машины, как аналитическая машина, можно будет использовать для сочинения музыки, создания графики и быть полезными для науки. Конечно, все это сбылось… еще через 100 лет.

Бэббидж был настолько впечатлен вкладом Лавлейс, что назвал ее «Чародейкой чисел».

Как молодая женщина получила возможность показать миру свои таланты в 19 веке? Математический интеллект был не единственным преимуществом Ады Лавлейс. Она была дочерью поэта лорда Байрона и его первой жены Анны Изабеллы Ноэль Байрон. Оба были привилегированными членами аристократии, оба были одаренными и хорошо образованными.Их брак распался вскоре после рождения Ады.

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

Лавлейс умерла от рака в 1852 году, когда ей было всего 36 лет. Почти 170 лет спустя мы вспоминаем ее вклад в науку и инженерию в праздновании Дня Ады Лавлейс 13 октября. Этот день, впервые отмечаемый в 2009 году (в марте), предназначен для того, чтобы узнать о женщинах в науке, технологиях, инженерии, и математика.

Версия этой истории вышла в 2015 году; он был обновлен на 2021 год.

Компьютерное программирование — История компьютерного программирования

Компьютерное программирование

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

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

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

  • Ада Лавлейс была дочерью английского поэта Джорджа Лорда Байрона, хотя он покинул страну менее чем через год после ее рождения и больше не вернулся.Ее мать, Энн Милбэнк, поддерживала любовь Ады к математике и естественным наукам.

  • Ада родилась в 1815 году как «Достопочтенная Августа Ада Байрон» и вышла замуж за Уильяма, 8 -го -го барона Кинга в 1835 году. В 1838 году Уильям стал графом Лавлейс, что сделало ее графиней Лавлейс. У них было трое детей.

  • Первые электронные компьютеры не были созданы до 1940-х годов, но ранняя работа Ады Лавлейс была важным моментом в истории компьютеров.

Компьютерное программирование

Ада Лавлейс написала первую компьютерную программу

Была ли Ада Лавлейс первым программистом? Кто написал первую компьютерную программу?

Британский математик Ада Лавлейс может считаться матерью компьютерного программирования, так как она написала первый сложный алгоритм, который должен был выполняться машиной. Однако то, что Ада Лавлейс написала «первую компьютерную программу» или была «первым компьютерным программистом», является мифом, этот титул принадлежит «отцу компьютера» Чарльзу Бэббиджу (который сам построил работы Паскаля, Лейбница, и Мюллера, точно так же, как позже Тьюринг использовал всю их работу, чтобы помочь создать первые цифровые компьютеры). [1] [2] [3]

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

ФАКТ : Древнегреческое устройство, антикиферский механизм (около 200–100 годов до н.  э.), обычно считается старейшим в мире известным механическим аналоговым компьютером. История нецифровых вычислений уходит корнями далеко за пределы Лавлейса и Бэббиджа, но современные вычисления начинаются с них… по крайней мере, на бумаге.

Реальная история первой компьютерной программы

Друг и наставник Ады Чарльз Бэббидж, отец компьютера, написал первую компьютерную программу и первый компьютерный код в 1836 году (24 рудиментарных, а иногда и подверженных ошибкам, программы, написанных как заметки для его теоретических машин). [4]

Тем временем Ада написала свой код в 1842 году в переписке с Бэббиджем в качестве заметок к заметкам Луиджи Менебреа о самой известной машине Бэббиджа, теоретической аналитической машине. Прочтите эссе Ады и Менебреи здесь: Эскиз аналитической машины, изобретенной Чарльзом Бэббиджем . [5] [6] [7]

Все трое также работали с другими, включая помощников Бэббиджа и группу итальянцев, имена которых история не всегда называет.

«Я подтверждаю, что рукописные свидетельства ясно показывают, что Бэббидж написал «программы» для своей аналитической машины в 1836–1837 годах, т.е. за 6–7 лет до публикации статьи Лавлейса в 1843 году. Таких «программ» около 24, и они имеют те же черты, что и знаменитая «программа» ловеласа». — Компьютерный историк Дорон Суэйд размышляет о своем изучении кода Бэббиджа, как цитируется в статье Ада Лавлейс: оригинальная и дальновидная, но не программист .

Мыслить масштабно — Ада Лавлейс: математик и провидец.Это видео представляет собой подробный современный взгляд на Бэббиджа и Лавлейс. См. также: Научная жизнь Ады Лавлейс — профессора Урсулы Мартин и Чарльза Бэббиджа и Ады Лавлейс — профессора Рэймонда Флада для получения более подробных сведений о леди Лавлейс.

СОВЕТ : Пройдут годы, прежде чем кто-либо создаст работающую машину Бэббиджа или сможет протестировать код, но сегодня мы можем подтвердить, что сложный код Ады был безупречен и может точно вычислять числа Бернулли, и точно так же машины Бэббиджа работают на практике (хотя мы можем не всегда говорите то же самое о своем коде).

Разоблачение мифа об Аде Лавлейс

Сегодня принято утверждать, что Ада была «первым программистом» или «Ада написала первую строку кода» из-за сложности ее кода, доступности ее кода по сравнению с собственным кодом Бэббиджа (ее код известен и на изображении ниже его «подтверждено рукописными свидетельствами»), и, что почти важнее всего, ее видение Двигателя как нечто большее, чем просто причудливый калькулятор.

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

В этом видео от SciShow обсуждается вклад Ады Лавлейс в вычислительную технику.

СОВЕТ : Подобные статьи: Краудсорсинг «Гендерное равенство» День Ады Лавлейс и связанный с ним веб-сайт, направленные на повышение роли женщин в науке и технологиях, являются отпором старым временам, когда большая часть заслуг принадлежала Бэббиджу (поскольку он был мужчиной)… Тем не менее, мы можем только представить, что сама Ада была бы раздражена тем, что мы неверно охарактеризовали ее партнерство с Бэббиджем.Она заслуживает похвалы за Note. G (несмотря на то, что все остальные работали над проектом), но ее работу 1842 года нельзя разумно ставить выше работы Бэббиджа 1836-1837 годов).

ФАКТ : Ада Лавлейс была дочерью известного поэта лорда Байрона (почему ее иногда называют «Леди Лавлейс», например, Аланом Тьюрингом). Ада и лорд Байрон были аристократами, как и Бэббидж.

ФАКТ : Чарльза Бэббиджа можно считать «отцом компьютера» благодаря его работе над ранними теоретическими и реальными компьютерами.Бэббиджу, иногда с помощью протеже Лавлейс, приписывают изобретение первого механического компьютера (Разностная машина 1822 г.), первого универсального компьютера (Аналитическая машина 1837 г.) и создание концепции программируемого компьютера. Мы можем понять, почему история, в которой преуменьшается значение Чарльза, столь же неприятна, как и история, в которой преуменьшается роль Ады, если внимательно посмотреть на достижения динамичного дуэта.

ФАКТ : между 1842 и 1843 годами Ада перевела статью итальянского военного инженера Луиджи Менабреа (который также заслуживает похвалы) о двигателе Бэббиджа, которую она дополнила подробным набором заметок, названных просто Notes . Эти заметки содержат то, что многие считают первой компьютерной программой, алгоритмом, предназначенным для выполнения машиной. Затем Лавлейс сделала то, что никто другой не сделал бы в течение многих лет: она предположила, что «компьютеры» можно использовать не только для расчетов, изучая, как люди и общество относятся к технологиям как инструменту совместной работы (то, что она называла «поэтической наукой»). В то время как ее титул «первого компьютерного программиста» обсуждается, ее титул «компьютерного провидца», «поэтического ученого» и раннего программиста нет. [13]

 Первая сложная компьютерная программа: заметка Ады G. Программа

Ада Лавлейс написала одну из первых исполняемых компьютерных программ для машины Чарльза Бэббиджа (см. примеры более ранних работ Бэббиджа здесь). Программа Ады на Note G., заявленная как «первая компьютерная программа», выглядит так:

Записки Ады Лавлейс. Некоторые считают, что это первая когда-либо написанная компьютерная программа. Вычислительный движок для чисел Бернулли. Примечание Г.

ФАКТ : Первый аналоговый компьютер появился примерно в 200 г. до н.э., он называется Антикиферским механизмом.Подобные факты полезно помнить, когда вы пытаетесь придираться к истории появления первых компьютеров в 1800-х годах. Механические калькуляторы также существовали задолго до машин Бэббиджа. Паскаль сделал один в 1642 году, и теперь мы знаем, что он был даже в древности.

История Ады и Бэббиджа: история первой компьютерной программы

Ада Байрон была давней подругой кембриджского профессора математики Чарльза Бэббиджа.

Бэббидж изобрел разностную машину в 1822 году (на основе идеи Дж.Г. Мюллер записано в 1786 г.). Разностная машина была теоретическим механическим компьютером, предназначенным для автоматического создания безошибочных таблиц чисел (что исторически было трудно сделать). [14]

Хотя Разностная машина должна была быть построена в 1985 году, Бэббидж так и не построил ее в свое время.

К 1834 году Бэббидж переключил свое внимание на новый проект — аналитическую машину.

Аналитическая машина сегодня считается «первым компьютером общего назначения».Аналитическая машина была разработана для использования перфокарт для ввода и вывода (точно так же, как компьютеры 100 лет спустя). [15]

Как сказано выше, Бэббидж так и не смог построить свою аналитическую машину. Однако он смог произнести речи о том, как это будет работать в теории.

В 1842 году Ада комментировала речь своего давнего друга Чарльза Бэббиджа об аналитической машине.

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

Почти 100 лет спустя было доказано, что ее безошибочные заметки работали на практике, а не только в теории, и, таким образом, содержали то, что позже будет описано (несколько ошибочно) как первая в мире компьютерная программа. [1]

Компьютерные пионеры: компьютеры Pioneer, часть 1.

ФАКТ : Рабочая версия разностной машины Бэббиджа была построена в 1985–2002 годах [16] , что доказывает, что его машины работали. Это делает Бэббиджа создателем первого компьютера общего назначения.

Ада Лавлейс, компьютерный провидец

Еще раз коснемся вышеизложенного. Одним из наиболее важных аспектов Лавлейс является ее видение того, что могут делать компьютеры (а не ее программа).

Лавлейс положил начало мысли, которая показала, что компьютеры могут делать больше, чем просто вычислять числа.Лавлейс предположил , что Двигатель «может воздействовать на другие вещи, помимо чисел… Двигатель может сочинять сложные и научные музыкальные произведения любой степени сложности и объема». Идея машины, которая могла бы манипулировать символами в соответствии с правилами, и что число могло бы представлять объекты, отличные от количества, знаменует фундаментальный переход от вычислений к вычислениям в компьютерной истории. Позже Алан Тернинг процитирует Лавлейса в своей знаменитой статье «Могут ли машины думать?».

Несмотря на то, что правильная история немного сложнее и чуть менее романтична, чем та, в которой Ада считается «буквально первым компьютерным программистом», а Бэббидж — аналитическим и склонным к ошибкам старым Кодером, вокруг которого Лавлейс танцевала творческие круги, реальная история такова. одинаково важен и подчеркивает важность командной работы, а не индивидуального величия.

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

ФАКТ : Ни Чарльз, ни Ада не могли исполнить свою программу более 100 лет спустя (поскольку настоящих компьютеров еще не существовало). Машины Бэббиджа не были построены до конца 1900-х годов (аналитическая машина так и не была построена, но проект находится в разработке). Сегодня мы доказали, что теоретические компьютеры Бэббиджа работали (это означает, что он изобрел компьютер общего назначения) и что программы Лавлейс работали (это означает, что она была одной из первых, если не первой, кто написал полностью исполняемую компьютерную программу).При этом оба важны для истории вычислений не только потому, что они «первые» в чем-то.

ФАКТ : Сегодня мы празднуем День Ады Лавлейс, чтобы вспомнить ее вклад в информатику, и, что важно, мы помним Чарльза Бэббиджа (и теоретические компьютеры в целом) вместе с ней. [17]

Лавлейс, Бэббидж, множественные открытия и первая компьютерная программа — кто заслуживает признания?

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

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

Следует учитывать, что Бэббидж подробно описывал свои теоретические машины в своих записных книжках еще до того, как встретил Лавлейса, а это означает, что он действительно не мог не написать первые фрагменты кода (слишком простого и полного ошибок) за несколько лет до того, как Лавлейс Заметки .

Как правило, с большинством изобретений редко что-то изобретает один человек. Скорее вещи, как правило, изобретаются одновременно и независимо, причем самые известные изобретатели получают признание за изобретение.

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

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

Вполне вероятно, что сегодня мы будем рассматривать Бэббиджа и Лавлейс как команду, такую ​​же, как Джобс и Воз, каждый из которых обладает разными навыками, которые привели к важным технологическим достижениям.

Кроме того, важно признать других незарегистрированных людей, которые, вероятно, написали код примерно в то же время (помните, что Бэббидж и Лавлейс были своего рода полуизвестными аристократами в свое время, больше похожими на Тьюринга или Эйнштейна).

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

TED – Ада Лавлейс – YouTube. В этом видео рассказывается об истории Бэббиджа, аналитической машины и кода Ады. Это выступление парня, возглавляющего проект по созданию аналитической машины, поэтому его стоит посмотреть.

ФАКТ : и у Бэббиджа, и у Лавлейс есть более ранние работы, относящиеся к аналитической машине и разностной машине 1 и 2.Они оба провели свою карьеру, размышляя об этих теоретических компьютерах, как Паскаль до них. [2]

ФАКТ : Аналитическая машина — это теоретический компьютер, ENIAC — первый работающий электронный компьютер общего назначения.

Интересные факты о первом в мире программисте

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

Ада Лавлейс оказалась первый в мире программист .

Леди Лавлейс написала первую компьютерную программу для аналитической машины. Эта программа была написана для вычисления седьмого числа Бернулли, используемого в математике.


Ее вклад в мир вычислительной техники оставался незамеченным чуть более века. Только в 1953 году ее работа получила широкую огласку в журнале Б.Книга В. Боудена «Быстрее, чем мысль: симпозиум по цифровым вычислительным машинам».

Более интересная информация о ее наследии содержится в недавно вышедшей книге журналистки и музыканта Клэр Л. Эван под названием «Broad Band: невыразимая история женщин, создавших Интернет».


Ее ключевым вкладом в мир вычислительной техники стал набор заметок, которые она сделала во время перевода статьи, написанной об аналитической машине Чарльза Бэббиджа. В этих заметках раскрывается ее дальновидность в точной оценке вычислительной мощности почти за столетие до начала компьютерной эры.

Вычислительные машины могут выходить за рамки простого вычисления чисел и могут использоваться для создания произведений искусства/музыки и даже для понимания символов, заметила она в одной из своих заметок, написанных в 1843 году.

Леди Лавлейс даже намекнула на появление искусственного интеллекта (ИИ) задолго до того, как мир был придуман и мир был представлен ИИ. Она говорила о том, что машины обладают способностями к самостоятельному мышлению, и поэтому подчеркивала роль человека, программирующего машины, как очень важную в управлении компьютерными результатами.

«Аналитическая машина не претендует на то, чтобы что-то создать», — написала она в одной из своих заметок. «Он может делать все, что мы знаем, как приказать ему выполнять».

Еще одна замечательная вещь заключается в том, что Ада Лавлейс предсказала, как компьютеры смогут работать быстрее и выполнять более мощный анализ, чем когда-либо могли люди.

«Новый, обширный и мощный язык разработан для будущего использования анализа, — писала она, — чтобы использовать его истины, чтобы они могли найти более быстрое и точное практическое применение для целей человечества.”

Как сообщает UK’s Express, редкий экземпляр книги с подписью «Леди Лавлейс» будет продан с аукциона Moore Allen & Innocent в Сайренчестере, Глос, в пятницу, 20 июля. Ожидается, что она будет продана по цене 3000 фунтов стерлингов. до 5000 фунтов стерлингов. Мы уверены, что любой, кто получит в свои руки эту редкую копию, станет только богаче, когда дело доходит до получения знаний.

По иронии судьбы, Ада Лавлейс умерла от рака в возрасте 36 лет, в том же возрасте, в котором умер ее отец лорд Байрон.

Кто был первым программистом?

Вы пользовались сегодня компьютером? Для большинства людей ответом будет громкое «Да!» От смартфонов до планшетов, ноутбуков и настольных компьютеров — мы живем в технологическом мире. Если вы пользуетесь компьютером каждый день, вам есть за что поблагодарить Аду Лавлейс.

Кем была Ада Лавлейс? Только первый в мире программист! Однако она прожила более 100 лет до того, как компьютеры стали обычным явлением. Лавлейс родилась 10 декабря 1815 года. Ее имя при рождении было Ада Байрон. Ее отцом был знаменитый поэт лорд Байрон, а матерью — его первая жена Аннабелла Милбэнк.

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

В детстве Лавлейс часто болела. Фактически, она провела годы, не в силах покинуть свой дом. Это давало ей много времени для занятий со своими наставниками. С раннего возраста она проявляла интерес к математике. Лавлейс продолжала учиться всю свою жизнь. Она стала одним из самых блестящих математиков своего времени.

Подростком Лавлейс познакомилась с математиком по имени Чарльз Бэббидж.Он был впечатлен способностями молодой женщины к математике. У Бэббиджа были планы построить первый калькулятор. Он назвал это разностной машиной. Он поделился своими планами с Лавлейс, который глубоко заинтересовался этой идеей.

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

Лавлейс очень хотел помочь Бэббиджу с его проектами. В 1843 году она перевела статью о двигателе. Она была написана на французском языке итальянским математиком Луиджи Менабреа. Лавлейс переписал его по-английски.

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

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

В 1852 году Ада Лавлейс умерла от рака. Ей было всего 36 лет. Она стала графиней Лавлейс в 1938 году, когда ее муж, Уильям Кинг, стал первым графом Лавлейс.Когда Ада умерла, она оставила после себя мужа, троих детей и прочное наследство. Сегодня компьютерное программирование является одной из самых быстрорастущих областей карьеры.

Однако после смерти Ады Лавлейс программирование не стало профессией. В конце 1940-х шесть женщин стали первыми профессиональными программистами. Их звали Джин Дженнингс Бартик, Фрэнсис Элизабет Холбертон, Франс Билас Спенс, Марлин Вескофф Мельцер, Кэтлин МакНалти Мокли Антонелли и Рут Лихтерман Тейтельбаум.

Добавить комментарий

Ваш адрес email не будет опубликован.