Ада Лъвлейс (1815-1852 г.) е първият програмист в света. Още през XIX век тя създава идеи за програми, които днес използваме в компютрите. Тя съчетава логиката на математиката с въображението на поезията и вярва, че машините могат да правят много повече от просто сметки. Нейните идеи поставят началото на компютърната епоха.
Ада Лъвлейс, родена като Августа Ада Байрон на 10 декември 1815 г. в Лондон, Англия, е дъщеря на известния поет лорд Джордж Гордън Байрон и Ан Изабела Милбанк Байрон. Баща ѝ напуска Англия малко след раждането ѝ и тя никога не го среща; той умира в Гърция, когато Ада е на осем години.
Майка ѝ, Ан Изабела, която има интерес към математиката и е наричана "принцесата на паралелограмите", насърчава Ада да се обучава в науката и математиката, за да предотврати наследяването на поетичния и нестабилен характер на баща ѝ.
На 17-годишна възраст Ада среща известния математик и изобретател Чарлз Бабидж на социално събитие. Тя е впечатлена от неговата "Аналитична машина" – наподобяваща компютър. Бабидж става неин ментор и двамата развиват дългогодишно приятелство и сътрудничество.
През 1843 г. Ада превежда статия на италианския инженер Луиджи Менабреа за "Аналитичната машина" на Бабидж. Към този превод тя добавя обширни бележки, които са три пъти по-дълги от самата статия. В тези бележки тя включва алгоритъм за изчисляване на числата на Бернули, който се счита за първата компютърна програма, което я прави първия програмист в историята. Освен това, Ада предвижда, че компютрите могат да се използват не само за числови изчисления, но и за работа с текст и музика, което демонстрира нейното визионерско мислене.
Ада Лъвлейс умира на 27 ноември 1852 г. на 36-годишна възраст.
Днес Ада Лъвлейс е призната за пионер в компютърните науки и вдъхновение за жените в технологиите. В нейна чест е създаден езикът за програмиране "Ada", а вторият вторник на октомври се отбелязва като "Ден на Ада Лъвлейс", посветен на постиженията на жените в STEM областите.
"Аналитичната машина може да направи всичко, което знаем как да й наредим да направи. Тя може да следва анализите, но няма способността да предвижда аналитичните отношения или истини. В нейната компетентност е да ни съдейства само за това, което вече знаем."
"Съвсем на място може да се каже, че Аналитичната машина тъче алгебрични модели също както жакардовият стан тъче цветя и листа."
"Аналитичната машина е въплащение на науката на операциите, конструирана със специално отношение към абстрактното число като обект на тези операции."
Ада Лъвлейс публикува първия сложен компютърен алгоритъм през 1843 г. Тя прави това много преди да съществува компютър, който да изпълнява нейния алгоритъм, тъй като той е разработен за Аналитичната машина , която никога не е построена. Алгоритъмът описва как Аналитичната машина може да изчисли числата на Бернули, използвайки рекурсивен алгоритъм. Програмата й всъщност се оказва, че е абсолютно правилна и би работила по предназначение, ако Аналитичната машина някога е била изградена.
Числата на Бернули \(B_n\) се дефинират чрез следната рекурсия (използвана и от Ада): $$ B_0=1, B_n=-\sum_{k=0}^{n-1} \binom{n}{k} {B_k\over {n+1-k}}, n \geq 1 $$ където $$ \binom{n}{k}={n!\over {k!(n-k)!}} $$ Това означава, че за всяко \(n \geq 1\), може да се намери \(B_n\), като се използват вече изчислените стойности.
1. Въведи N – броя на числата на Бернули, които искаш да изчислиш
2. Създай списък B с размер N+1
3. Задай B[0] = 1
4. За n от 1 до N:
5. Задай B[n] = 0
6. За k от 0 до n-1:
7. B[n] = B[n] - (C(n+1, k) * B[k]) / (n + 1)
8. Върни B[0] до B[N]
Където \(C(n+1, k)\) е биномиалният коефициент – може да се изчисли като:
$$
C(n, k) = \frac{n!}{k!(n-k)!}
$$
1, -\(1\over2\), \(1\over6\), 0, -\(1\over30\), 0, \(1\over42\), 0, -\(1\over30\), 0, \(5\over66\)
В бележките си, Ада дори прави подробна таблица как всяка операция ще бъде извършена от Аналитичната машина, включително променливите, междинните стъпки и местата за съхранение в паметта (нещо като ранна версия на машинен код!).
1. Преместете плъзгача (слайдера) на дъската, за да изберете колко числа на Бернули да се изчислят и покажат.
2. Наблюдавайте точките върху координатната система – всяка точка съответства на едно число \(B_n\).
Хоризонталната ос показва индекса \(n\).
Вертикалната ос показва стойността на числото \(B_n\).
3. Червената линия свързва точките, за да се вижда по-лесно тяхното изменение.
4. Под дъската ще намерите списък със стойностите на изчислените числа на Бернули.
5. Етикетите върху точките показват само индекса \(B_n\), за да бъде графиката по-ясна и подредена.
Числата на Бернули са важни математически константи, които се появяват при изчисляване на суми на степени в теорията на числата и в много формули от анализа. Те имат интересни свойства – например почти всички с нечетен индекс (след първите) са нули, а другите имат положителни или отрицателни дробни стойности.
Ада Лъвлейс не е била само първата компютърна програмистка – тя е била и истински визионер. Освен математиката, тя обичала музиката и науката и често използвала въображението си, за да мисли как машините могат да правят повече от сметки. Ада е първата, която разбира, че компютрите могат да обработват символи и информация, не само числа – идея, която стои в основата на днешния софтуер.