Первая программа была написана кем: Первые программы и программисты | Открытые системы. СУБД

Содержание

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

Эпизод с основанием 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, и не видя, сколько заботы она проявила при её разработке. Но, проделав это, вы можете согласиться с тем, что Лавлейс, даже не будучи самым первым программистом, была первым программистом, заслужившим это название.

Первая женщина-программист — история программирования / Skillbox Media

#статьи

  • 17

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

Vkontakte Twitter Telegram Скопировать ссылку

 vlada_maestro / shutterstock

Мария Ираидина

Пишет про управление в Skillbox Media. Работала координатором проектов в Русском музее, писала для блога агентства CRM-маркетинга Out of Cloud.

Ада Лавлейс (в девичестве — Августа Ада Байрон) родилась 10 декабря 1815 года в Лондоне. Она — дочь известного британского поэта XIX века лорда Байрона (он же Джордж Гордон Байрон). А еще Аду часто называют первой женщиной-программистом. Но так считают не все.

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

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

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

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

Вот материалы, где об этом говорится подробнее:

  • Википедия о числах Бернулли;
  • статья из научно-математического журнала «Квант»;
  • статья о Якобе Бернулли и его работах.

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

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

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

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

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

Не только попытались, а даже сделали. Лондонский Музей науки построил две точных копии «Разностной машины №2» по оригинальному проекту Чарльза Бэббиджа. Машина получилась более трёх метров в длину и более двух — в высоту, а её создание заняло у команды инженеров 17 лет.

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

Современные программисты пытались перевести программу на разные языки, например, языки C и Python, чтобы проверить, как она работает. В результате они обнаружили ошибку в расчётах, поэтому Аду Лавлейс смело можно считать создательницей первого бага.

Да, всё верно. Язык программирования «Ада» был создан в 1980-х годах в рамках проекта Министерства обороны США и назван в честь Ады Лавлейс.

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

  • статья о жизни и научной работе Ады Лавлейс;
  • статья о программе Ады Лавлейс;
  • лекция об Аде Лавлейс и её научных достижениях;
  • лекция TED о разностной машине Бэббиджа.

Читайте также:

Vkontakte Twitter Telegram Скопировать ссылку

Учись бесплатно:
вебинары по&nbspпрограммированию, маркетингу и&nbspдизайну.

Участвовать

Российские учёные создали систему распознавания речи, которая превосходит мировые аналоги 04 ноя 2022

Учёные создали систему, которая точно прогнозирует реакции людей на новые лекарства 03 ноя 2022

Компания Zoom отключила российским вузам доступ к платным аккаунтам 01 ноя 2022

Понравилась статья?

Да

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

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

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

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

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

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

Нападение на Пола Пелоси подчеркивает растущую угрозу политического насилия

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

Конструкция Analytical Engine не похожа на конструкцию современного MacBook, но у него есть вся базовая архитектура. Он различал память программ и память данных. У него был отдельный блок ввода/вывода. Он принимает условные выражения «если/то».

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

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

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

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

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

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

Регистрируясь, вы соглашаетесь с нашей Политикой конфиденциальности.

Уже являетесь подписчиком? Войдите, чтобы скрыть рекламу.

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

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

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

Исследовал Томас ДеМишель Опубликовано — 13 октября 2015 г.
Последнее обновление — 7 сентября 2018 г.

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

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

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

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

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

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

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

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

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

Чарльз Бэббидж и Ада Лавлейс – профессор Рэймонд Флуд.

СОВЕТ : Сто лет спустя, когда Алан Тьюринг спросил: «Могут ли машины думать?» он не цитировал Бэббиджа (хотя и обсуждает его в статье), а вместо этого процитировал «Возражение леди Лавлейс». Ее возражение представляет собой мост между представлением Бэббиджа о своих машинах как о «мощных вычислителях» и представлением Тьюринга о них как о способных «думать», поскольку она постулировала, что их можно использовать для гораздо большего, чем просто математика, но это ограничено. делать «все, что мы знаем, как приказать ему выполнить». [8]

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

Сравнение программ Лавлейс и Бэббиджа

Как отмечалось выше, Ада Лавлейс написала одну из первых компьютерных программ в 1842 году, а ее наставник Чарльз Бэббидж написал первую программу в 1836 году. Давайте сравним эти программы.

  • Программа Ады представляет собой набор заметок к «Наброску аналитической машины, изобретенной Чарльзом Бэббиджем, эсквайром» Луиджи Федерико Менабреа, показывающий, как теоретическая аналитическая машина Чарльза Бэббиджа может вычислять числа Бернулли с помощью перфокарт (см. изображение ниже).
  • Между тем, заметки Бэббиджа (содержащие около 24 программ) представляют собой похожие, но более простые и иногда подверженные ошибкам алгоритмы (см. подробную разбивку и сравнение работы Бэббиджа и Лавлейса; обратите внимание, что у нас нет изображения, подтверждающего его код, мы полагаются на компьютерных историков, изучавших Бэббиджа и Лавлейса). [9]

Из-за предполагаемой простоты заметок Бэббиджа (созданных между 1836 и 1837 годами) и подтверждаемой сложности программы чисел Бернулли Лавлейса, содержащейся в Note G из ее Notes  (выпущенных между 1842 и 1843 годами) Лавлейс часто считают первым программистом, и поэтому Интернет заполнен заголовками вроде: «В 1842 году Ада Лавлейс написала первую в мире компьютерную программу». .

Проблема, конечно, в том, что в этой версии истории отсутствуют программы Бэббиджа, написанные за годы до аналогичной, но более сложной программы Ады. [10] [11] [12]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. «Ада Лавлейс». Википедия.org. Проверено 13 октября 2015 г.
  2. Вулли, Бенджамин (199 февраля9), The Bride of Science: Romance, Reason, and Byron’s Daughter, AU: Pan Macmillan, ISBN 0-333-72436-4, получено 7 апреля 2013 г.
Оставить комментарий

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *