14
26.10.2019, 17:40Lektura na 9 minut

[Retrohistorie Smugglera] Jej ekscelencja, programistka. Jak powstał pierwszy program komputerowy

Co było pierwsze – jajko czy kura? Tego nie wiem. Ale gdy zapytacie mnie, co było pierwsze: komputer czy program komputerowy, odpowiedź jest oczywista. Program. Choć brzmi to paradoksalnie, pierwszy program komputerowy napisano jakieś 100 lat przed tym, jak skonstruowano maszynę, którą możemy nazwać komputerem.


Smuggler

Napisała go Ada Lovelace (a raczej Augusta Ada King, hrabina Lovelace – patrz: ramka na końcu). Jej ojcem był słynny poeta romantyczny, lord Byron, co ma pewne znaczenie w tej opowieści.


Matematyka jest dobra na wszystko!

Byron wprawdzie „wielkim poetą był”, ale poza tym był też wielkim kobieciarzem, acz i panami nie pogardzał w pewnych okolicznościach przyrody, ekscentrykiem, skandalistą i hulaką. (Na usta ciśnie się też kilka mocniejszych i zupełnie nieromantycznych określeń). Gdy popadł w długi, a w owych czasach za to szło się do więzienia, zrobił to, co każdy romantyk w jego czasach – poszukał sobie żony mającej odpowiednio duże pieniądze, tzn. posag. Trzy lata później, w roku 1815, przyszło na świat ich jedyne dziecko – Augusta Ada. Imię Augusta dziewczynka otrzymała po przyrodniej siostrze Byrona. Wszelako, gdy niedługo po narodzinach córki okazało się, że poeta utrzymuje z ową siostrą kontakty znacznie bliższe niż powszechnie akceptowane relacje pomiędzy rodzeństwem(*), żona porzuciła go, zabierając z sobą Adę. (Bo od tej pory już nigdy nie zwróciła się do niej imieniem Augusta).

Matka Ady po owej małżeńskiej traumie uznała, że z dziecka należy od maleńkości wykorzeniać „poetyckie talenta”, które mogła odziedziczyć po ojcu, uznając je za przyczynę wszelkiego zła i wiodące do obłędu. Wymyśliła, że najlepszą metodą będzie aplikowanie córce, od wczesnego dzieciństwa, dużych dawek matematyki, która jej zdaniem była czymś zupełnie przeciwnym poezji. Wszelkie inne zainteresowania miały być tłumione w zarodku – więc gdy pięcioletnia Ada zafascynowała się geografią, natychmiastową reakcją matki było zastąpienie jej dodatkowymi lekcjami „matmy”.

(*) No, może poza dworem faraonów Egiptu parę tysięcy lat wcześniej i ewentualnie niektórymi zapyziałymi okolicami w Arkansas współcześnie. 


...ale geny swoje robią

Powiedzmy, że odniosła połowiczny sukces. Ada w wieku nastoletnim opanowała większość podstawowych zagadnień rachunku różniczkowego i całkowego.


Jedna z zachowanych notatek nastoletniej Ady – rozwiązuje w niej problem matematyczny, na którym połamałby sobie zęby niejeden dzisiejszy student politechniki.

Ale też odziedziczyła po wybitnie przystojnym tatusiu urodę, temperament... i parę „ciekawych” cech charakteru. Pomińmy tu nawet swobodę obyczajową (wywołała skandal, romansując w wieku 17 lat ze swym nauczycielem). Ada potrafiła patrzeć na matematykę w sposób... poetycki. Była odwrotnością Neo z Matriksa – widziała piękno tam, gdzie inni dostrzegali tylko cyfry, wykresy i szeregi niezrozumiałych symboli. Matematyka była dla niej „najskuteczniejszym z narzędzi pozwalających mizernemu ludzkiemu umysłowi pojąć sens dzieła Stwórcy”, a także „jedynym językiem zdolnym wyrazić najważniejsze prawa natury”.

Po ojcu miała też mocno przerośnięte ego. (Byron, jak każdy utalentowany artysta, miał nader wysokie mniemanie o sobie). „Jestem niczym wielka soczewka skupiająca promienie światła ze wszystkich zakątków wszechświata” – pisała w liście do matki. „Uważam, że posiadam niepowtarzalny zestaw talentów, idealnie dopasowanych, by zostać (...) odkrywcą ukrytych praw natury” – podsumowała, dodając retoryczne pytanie „czy to nie jest w pewnym stopniu zasługą wrodzonego geniuszu?”. 


Co ma krosno do wiatra... komputera?

W czasie jednej z podróży po Anglii Ada miała okazję zobaczyć ówczesny cud technologii – mechaniczne krosna, które potrafiły samodzielnie tkać materiał z zaprogramowanym (za pomocą specjalnych perforowanych kart) wzorem. Zachwyciła się nimi tak bardzo, że aż sporządziła ich szkic. Podobne, ale znacznie silniejsze emocje wzbudziła w niej maszyna różnicowa Charlesa Babbage’a (oraz jej twórca).

Tu kilka słów wyjaśnienia: Babbage stworzył prototyp urządzenia, będącego rozwinięciem już istniejących mechanicznych kalkulatorów. Urządzenie teoretycznie potrafiło wykonywać złożone obliczenia, ale w dość wąskim zakresie, tzn. pozwalało wyliczać wartości funkcji wielomianowych i przybliżone rozwiązania równań różniczkowych. I nic poza tym. A „teoretycznie” to dlatego, że nigdy nie osiągnęło pełnej gotowości operacyjnej, tzn. powstały tylko jego niektóre elementy(**). Maszyna owa (a raczej jej część, mechaniczny kalkulator) była atrakcją przyjęć londyńskiej socjety. W ich trakcie Babbage zabawiał towarzystwo, wykonując nią rozmaite złożone działania znacznie szybciej niż najbieglejsi z zaproszonych gości byli w stanie wykonać w pamięci lub na papierze.

(**) Ówczesna technologia była zbyt prymitywna, by podołać temu zadaniu, tzn. sporządzić odpowiednio dopasowane bardzo skomplikowane części. Tym niemniej pod koniec XX wieku na podstawie zachowanych oryginalnych planów stworzono pełną wersję tej maszyny i przekonano się, że nie tylko działa, ale i robi dokładnie to, co zaplanował Babbage, i to z dokładnością do 31 cyfr po przecinku.

 


Jeden ze szkiców pokazujących maszynę analityczną Babbage’a.


A tu jej działająca rekonstrukcja.

Babbage stał się dla osiemnastoletniej wówczas Ady czymś w rodzaju guru czy idola. On, choć nazywał swą wielbicielkę „Zaklinaczką Liczb” i odnosił się do niej bardzo ciepło, myślami był zupełnie gdzie indziej. Zafascynowała go idea rozwinięcia maszyny różnicowej w maszynę analityczną, czyli maszynę, która byłaby w stanie wykonywać dowolne sekwencje działań i obliczeń matematycznych w zależności od tego, jak zostanie zaprogramowana. Problem w tym, że mało kto pojmował, jakie to może mieć dalekosiężne konsekwencje. (Ada była tym pomysłem zauroczona i chyba nawet bardziej niż sam Babbage rozumiała jego doniosłość). A już zupełnie nikt nie zamierzał tego projektu sfinansować. (Rząd, zainwestowawszy przez lata równowartość dwóch uzbrojonych fregat (!) w wiecznie będącą w fazie konstrukcji maszynę różnicową, nie palił się do wydawania kasy na kolejne wynalazki Babbage’a).

Konstruktor przez kilka lat bezskutecznie stukał więc do rozmaitych drzwi w poszukiwaniu prywatnych sponsorów. W 1841 wystąpił nawet na Kongresie Naukowców Włoskich w Turynie, gdzie przedstawił swoje przemyślenia na jej temat. Jednym ze słuchaczy wykładu był późniejszy premier Włoch, inżynier Luigi Federico Menabrea, który opublikował artykuł z opisem maszyny analitycznej.


Uwagi od tłumacza

Ada postanowiła udostępnić go w Scientific Memoirs, czyli książkowym kompendium, wydawanym w Anglii w latach 1837-1852 i zawierającym co ciekawsze referaty naukowców spoza Zjednoczonego Królestwa. W tym celu przetłumaczyła go na angielski i posłała Babbage’owi do przejrzenia i poprawienia ewentualnych nieścisłości. Ten był jej inicjatywą mile zdziwiony. Zaproponował, by nie ograniczyła się li tylko do roli tłumacza, ale wzbogaciła ów raport o własne przemyślenia i wnioski.

Adzie nie trzeba było tego dwa razy powtarzać. Jej „Uwagi od tłumacza” (ukrytego skromnie za niezdradzającymi płci inicjałami A. A. L.) były w efekcie dwa razy dłuższe niż tekst, który komentowały. I choć w komentarzach Ada czasem uderzała w nadmiernie jak na dzisiejsze ucho natchnione i poetyckie tony („maszyna analityczna może tkać algebraiczne wzory w ten sam sposób [tzn. dzięki programującym ją kartom – dop. Smg], co krosno automatyczne kwiaty i liście”), to jej uwagi są naprawdę merytoryczne.

Lady Lovelace uwypukliła czytelnikom zasadnicze różnice pomiędzy specjalizowaną w konkretnych obliczeniach maszyną różnicową a w pełni uniwersalną maszyną analityczną. Kładła nacisk na to, że maszyna ta mogłaby przetwarzać praktycznie dowolne dane (nie tylko cyfry – ale też słowa, dźwięki/nuty, obrazy) w każdy ustalony przez człowieka sposób. Tym samym po raz pierwszy przedstawiła ludziom skrystalizowaną ideę tego, co dzisiaj nazywamy komputerem. A w jednym z załączników, pokazując, jak maszyna analityczna mogłaby np. generować tzw. liczby Bernouliego (patrz: ramka na końcu), zamieściła obszerny diagram pokazujący sekwencję ponumerowanych i opatrzonych komentarzami instrukcji, dzięki którym maszyna wykona zlecone zadanie. Można w nim wyróżnić takie elementy jak podprogramy wykonujące powtarzające się ciągi działań, do których można powracać z poziomu programu głównego, oraz zagnieżdżone w nich pętle rekurencyjne. Nie będę tu drążył szczegółów, które i tak zrozumieją tylko programiści – więc powiem, bazując na opiniach fachowców, a wy przyjmijcie to na wiarę, że był to pierwszy na świecie kompletny program komputerowy(***), zajmujący w sumie 75 kart perforowanych, czyli z grubsza jakieś 5-7 kB pamięci RAM.

(***) A raczej „pierwszy na świecie opublikowany program komputerowy”, bo formalnie rzecz biorąc Babbage stworzył wcześniej kilkanaście programików na swą maszynę różnicową. Ale że żadnego z nich nigdy nie opublikował i nie były one nawet w części tak złożone i pięknie rozpisane jak algorytm Ady, a maszyna różnicowa to jednak jeszcze nie komputer, to się nie liczą.

 


Tak wygląda oficjalnie pierwszy na świecie działający komputerowy algorytm (tzn. jego fragment).


Ada(gio) con dolore

We wrześniu 1843 ukazał się tom Scientific Memoirs, zawierający m.in. przekład referatu z jej uwagami. Była to chwila wielkiego triumfu Ady. Niestety, tylko chwila. Pomimo że tekst wzbudził spory rezonans w naukowym światku UK, nie przełożyło się to na żadne wymierne działania. Ani rząd, ani żaden prywatny inwestor nie zdecydował się wyłożyć funduszy na budowę wymarzonej przez oboje maszyny analitycznej. W efekcie pozostała na zawsze tylko zapisaną na papierze ideą, która wyprzedziła swe czasy. Zdruzgotana tym Ada już nigdy niczego nie opublikowała. Ale nie to było najgorsze.


Tytułowa strona Scientific Memoirs z 1843

Rozmaite dolegliwości zdrowotne i kłopoty rodzinne (w międzyczasie porzucił ją mąż) sprawiły, że uzależniła się od narkotyków. (A dokładniej od rozmaitych pochodnych morfiny, które to można było wówczas bez recepty kupować w aptekach, gdzie były traktowane jak dzisiaj suplementy diety). Efektem mania prześladowcza, gwałtowne i silne wahania nastrojów, urojenia itd. Do tego miała słabość do gier hazardowych i nieodpowiednich mężczyzn, co zrujnowało jej finanse i reputację. Na domiar złego zachorowała na raka. Zmarła w 1852, mając zaledwie 36 lat. Dokładnie w tym samym wieku, co jej ojciec (z którym nigdy się nie spotkała). Zgodnie ze swym ostatnim życzeniem została pochowana u jego boku.


Non omnis moriar!

Prawie 130 lat później stworzono, na zlecenie Departamentu Obrony USA, niezadowolonego z wszystkich aktualnie istniejących języków programowania (tzn. ich sprawności, czytelności, itd.) nowy. Był on (…wdech) strukturalny, kompilowany, imperatywny, statycznie typowany i obiektowy (wydech!). Jego składnia została zaprojektowana w taki sposób, aby zminimalizować szanse popełnienia trudnych do wykrycia błędów. Uzyskano to poprzez przemyślany i konsekwentny dobór poszczególnych elementów składni, a także ich jednoznaczność. Rozbudowany i aktualizowany, jest w użyciu do dzisiaj, chętnie wykorzystywany tam, gdzie każdy przeoczony „bug” może mieć ogromne znaczenie (np. system sterowania fly-by-wire w Boeingu 777 zaprogramowano właśnie w tym języku). Napisano w nim sporą część programów dla bankowości elektronicznej, wojska i przemysłu kosmicznego. Na cześć pierwszej programistki na świecie nazwano go Ada.

jezyk_c0rhu.gif

Fragment programu napisanego za pomocą Ady.

 


Ada – Król, baronessa i hrabina Augusta Ada Byron poślubiła, mając lat 20 – typowe małżeństwo z rozsądku – niejakiego Williama Kinga, z którym miała trójkę dzieci. Z czasem King, mający zresztą dziedziczny tytuł barona, stał się „earlem [z] Lovelace” (tytuł z grubsza odpowiada europejskiemu hrabiemu), stąd jego żona stała się hrabiną (countesse of) Lovelace i w efekcie została zapamiętana jako Ada Lovelace. How lovely.


 


Liczby Bernoulliego To nieskończony ciąg liczb wymiernych (czyli takich, które można zapisać w postaci ułamka zwykłego) oznaczanych jako Bk, gdzie k jest numerem porządkowym liczby (0, 1, 2... itd.). Zostały nazwane na cześć siedemnastowiecznego szwajcarskiego matematyka, Jakoba Bernoulliego, który zajmował się sumami potęg kolejnych liczb całkowitych.


 


Czytaj dalej

Redaktor
Smuggler

Byt teoretycznie wirtualny. Fan whisky (acz od lat więcej kupuje, niż konsumuje), maniak kotów, psychofan Mass Effecta, miłośnik dobrego jedzenia, fotograf amator z ambicjami. Lubi stare, klasyczne s.f., nie cierpi ludzkiej głupoty i hipokryzji, uwielbia sarkazm i „suchary”. Fan astronomii, a szczególnie ośmiu gwiazd.

Profil
Wpisów253

Obserwujących52

Dyskusja

  • Dodaj komentarz
  • Najlepsze
  • Najnowsze
  • Najstarsze