Ада Лъвлейс: първата програмистка
Как дъщерята на поета Байрон написва първата публикувана компютърна програма около 100 години преди първия компютър.
Здравей, аз съм Мечо Добрин. Какво ще кажеш, ако ти разкажа за момиче, което пише програма за компютър около 100 години преди да бъде построен първият истински компютър? Звучи невъзможно, нали?
История от живота
На 5 юни 1833 г. 17-годишната Ада Байрън отива на светско парти в Лондон и там се запознава с изобретателя Чарлз Бабидж. Скоро след това той ѝ показва у дома си част от своята „Диференчна машина“, огромен механичен калкулатор от зъбни колела. Повечето гости само се дивят на лъскавия механизъм, но Ада веднага иска да разбере как работи. Двамата си пишат години наред. През 1843 г. тя превежда от френски статия на италианския инженер Луиджи Менабреа за новата машина на Бабидж, „Аналитичната машина“, и добавя свои бележки, около три пъти по-дълги от самата статия. В последната бележка, бележка G, тя описва стъпка по стъпка как машината да изчисли така наречените числа на Бернули. Днес мнозина наричат това първата публикувана компютърна програма.
Разбери го стъпка по стъпка
- Дъщерята на поета
Ада е родена на 10 декември 1815 г. в Лондон. Баща ѝ е прочутият поет лорд Байрон, но родителите ѝ се разделят, когато тя е на около месец, и тя никога повече не вижда баща си. Майка ѝ Анабела, която обича математиката, я кара да учи математика и природни науки от малка, отчасти за да не стане „непредсказуема“ като баща си.
- Малката изобретателка
Около 12-годишна Ада решава да построи летяща машина. Изучава птиците, сравнява материали за криле и пише книжка с рисунки, която нарича „Летенето“. Тук се вижда нейната смес от въображение и точност, която по-късно сама нарича „поетична наука“.
- Машината на Бабидж
Аналитичната машина е проект за механичен компютър: има „склад“ за числа (днес бихме казали памет) и „мелница“ за изчисления (днес процесор). Инструкциите се подават с перфокарти, картони с дупки, идея, взета от тъкачния стан на Жакар. Машината никога не е довършена, най-вече заради липса на пари и много сложни части.
- Голямата идея на Ада
Ада пише, че машината може да работи не само с числа, а с всякакви символи, стига да има правила за тях. Тя дава пример, че някой ден такава машина би могла да съчинява музика. Точно това правят днешните компютри: превръщат в числа текст, картини, звук и игри.
- Наследството
Ада умира на 27 ноември 1852 г., само на 36 години. Повече от век по-късно Министерството на отбраната на САЩ кръщава на нея новия език за програмиране Ada, чийто официален стандарт излиза през 1980 г. А всяка година през октомври (втория вторник) по света се отбелязва Денят на Ада Лъвлейс в чест на жените в науката и технологиите.
Представи си така: Програмата на Ада е като рецепта за сладкиш: машината е кухнята, перфокартите са листчетата с рецептата, а стъпките са точно подредени: „вземи това число, умножи го по онова, запиши резултата, повтори“. Ада написва рецептата, преди кухнята изобщо да е построена.
- 1815ражда се в Лондон, дъщеря на лорд Байрон
- 1828около 12-годишна проектира летяща машина
- 1833запознава се с Чарлз Бабидж
- 1835омъжва се за Уилям Кинг, по-късно става графиня Лъвлейс
- 1843публикува превода и бележките си с първата програма
- 1852умира на 36 години
- 1980излиза стандартът на езика Ada, кръстен на нея
Решени примери
Защо Ада използва повторение (цикъл) в програмата си?
Числата на Бернули се смятат с много сходни стъпки. Вместо да ги пише стотици пъти, тя описва група операции, която машината да повтаря. Цикълът и днес е една от основните идеи във всяко програмиране.
Защо перфокартите са удобни за машината?
Дупка или липса на дупка е като „да“ или „не“, 1 или 0. Механизмът може лесно да усети разликата. Това е предшественик на днешния двоичен код.
Може ли да се каже, че Ада е програмирала компютър?
Нейната машина никога не е построена, затова програмата не е пусната тогава. Но алгоритъмът е правилно замислен за конкретна машина и е публикуван, затова тя се смята за една от първите програмистки в историята.
Внимавай с тези грешки
- Ада Лъвлейс е изобретила компютъра.Машината е изобретение на Чарлз Бабидж. Приносът на Ада е, че описва как да се програмира и вижда, че машината може много повече от сметки.
- Машината на Бабидж е била построена и е работила.Аналитичната машина така и не е довършена. Програмата на Ада остава на хартия.
- Ада е единствената, която е писала програми за машината.Бабидж също е скицирал примерни изчисления, но не ги публикува. Програмата на Ада е най-подробната и първата публикувана, затова е толкова известна.
Задачи
Лесни
На колко години е Ада, когато се запознава с Бабидж (1833), и на колко, когато публикува бележките си (1843)?
Подсказка
Извади годината на раждане и помисли дали рождената ѝ дата (10 декември) вече е минала.
Отговор
На 17 години и на 27 години (рождена 1815, в края на годината, затова през юни 1833 тя е на 17).
Напиши „рецепта“ от 5 точни стъпки как да си измиеш ръцете. Дай я на съученик да я изпълни буквално.
Подсказка
Робот прави само това, което пише. Пропусна ли нещо (например да спреш водата)?
Отговор
Пример: 1. Пусни водата. 2. Намокри ръцете. 3. Сложи сапун. 4. Търкай 20 секунди. 5. Изплакни и спри водата.
Средни
Опиши като алгоритъм с повторение как да съберем числата от 1 до 10. Какъв е резултатът?
Подсказка
Започни със сума 0 и добавяй числата едно по едно.
Отговор
Сума = 0; за всяко число от 1 до 10: сума = сума + число. Резултат: 55.
Перфокарта има ред от 4 места, на всяко може да има дупка или не. Колко различни реда могат да се направят?
Подсказка
Всяко място има 2 възможности.
Отговор
16 (2 x 2 x 2 x 2).
Трудни
Ада предсказва, че машина би могла да съчинява музика. Дай 3 примера какво правят днешните компютри с „нечислови“ символи.
Подсказка
Помисли какво правиш с телефона или компютъра, освен да смяташ.
Отговор
Например: проверка на правопис, превод между езици, музика и звук, обработка на снимки, игри.
Числата на Фибоначи се смятат с повторение: всяко следващо е сбор от двете преди него (1, 1, 2, 3, 5...). Напиши първите 10 и опиши стъпките като алгоритъм.
Подсказка
Пази винаги последните две числа.
Отговор
1, 1, 2, 3, 5, 8, 13, 21, 34, 55. Алгоритъм: a = 1, b = 1; повтаряй: запиши a; ново = a + b; a = b; b = ново.
Програмирай човек-робот
Цел: Да разбереш колко точни трябва да са инструкциите за машина.
- Разделете се по двойки: единият е програмист, другият е робот.
- Програмистът пише на лист с команди само от вида: „напред N крачки“, „завий наляво“, „завий надясно“, „вдигни“, „остави“.
- Задачата: роботът да стигне до бутилка в другия край на стаята, да я вземе и да я сложи на определено място.
- Роботът изпълнява само написаното, буквално, без да мисли.
- Ако нещо се обърка, търсите „бъга“ и поправяте програмата.
Накрая: Всяка двойка показва първата и поправената си програма и разказва какъв бъг са открили.
Тест с точки
10 въпроса, 18 точки, оценка накрая и разбор какво да преговориш.