Na 8-go marca piszę o niezwykłej kobiecie.

Grace Murray Hopper w pełni zasłużyla sobie na miejsce w panteonie wielkich wynalazców XX wieku. To właśnie jej koncepcje legły u podstaw rozwoju Informatyki, w kształcie jaki dziś znamy.

Grace Hopper (young)

Przyszła na Świat 9 grudnia 1906 roku w Nowym Jorku. Studiowała nauki ścisłe uzyskując tytuł doktora matematyki w 1934 na uniwersytecie Yale.
W 1943 wstąpiła ochotniczo do marynarku wojennej USA. Przydzielono ją do projektów konstrukcyjnych przy uniwersytecie Harvard. Tam też zetknęła się z pierwszą elektroniczną maszyną liczącą – komputerem Harvard Mark I.
Tu odnalazła swoją drogę …
Wielokrotnie awansowana za swoje zasługi zmarła w roku 1992 w stopniu kontradmirała.
Mało wiemy o jej życiu osobistym, panna Murray wyszła za mąż za Vincenta Hoppera w roku 1930. Owdowiała w roku 1945.
Najkreatywniejszy czas jej pracy przypadł po czterdziestce. Po przejściu na emeryturę wracała, w trybie nagłym, do pracy – jej wiedza i pomysłowość okazywały sie nie do zastąpienia.

Grace Hopper with Regan

Aby uruchomić program na archaicznym komputerze (z lat czerdziestych lub pięćdziesiątych) należało wpisać setki ciągów bitów, stanowiących instrukcje, bezpośrednio do pamięci. Praca żmudna jak cholera i nieefektywna.

Pasją pani Hopper stało się jej uproszczenie – należy pisać do komputerów po angielsku!

Pomysł w tamtych czasach rewolucyjny. Nie mniej został zrealizowany. Powstał pierwszy język programowania wyższego rzędu COBOL(skrót od COmmon Busines Oriented Language).

Polecenia dla komputera już były typu:

ADD netto vat GIVING brutto.

gdzie liczby kryły się w komórkach pamięci o nazwach nadanych przez programistę (tutaj, dla przykładu: netto, vat, brutto). Każde polecenie koniecznie zakończone kropką 🙂
Program, zwany kompilatorem (lub translatorem), przekładał te polecenia na instrukcje binarne w pamięci komputera. Setki a nawet tysiące takich instrukcji składały się na program. Czytelny tekst poleceń nazywamy kodem źródłowym, zagmatwane ciągi bitów (w pamięci maszyny) – kodem wynikowym. Po prostu komputer "rozumie" kod wynikowy i bezpośrednio wykonuje rozkazy.

Nobody believed that I had a running compiler and nobody would touch it. They told me, computers could only do arithmetic.
(Nie chcieli wierzyć, że mam działający kompilator, nikt nie chciał tego tknąć. Powiedzieli, że komputery mogą tylko rachować).

Drugą pasją było przekonanie iż komputery powinny mieć zastosowanie do businnessu oraz promocja tej idei. Warto nadmienić iż pierwsze maszyny liczące były stosowane tylko do obliczeń militarnych. To był strzał w dziesiątkę – pojawiły się pieniądze i popyt cywilnych firm komercyjnych.

I tak zaczął się rozwój oprogramowania – software. A więc współczesnej informatyki.

Grace Hopper with early computer

 

Komputer z lat pięćdziesiątych był olbrzymią szafą wypełnioną tysiącami lamp radiowych i plątaniną kabli. Grzało to niemiłosiernie i często się psuło. Ale jakoś działało.

Pochodzący z tamych lat język programowania COBOL wydawałby się dziś rozwiązaniem archaicznym o znaczeniu muzealnym. Tymczasem tak nie jest. Do tej pory działają programy pochodzące z  ponad 200 miliardów linii kodu źródłowego tego języka. Bankowość, energetyka, giełda … opierają się na sprawdzonych programach w języku COBOL, z ostatnich kilkudziesięciu lat. Ilość tego oprogramowania jest ogromna, tak że ewentualne przerobienie na techniki nowoczesne wymagalo by środków przekraczających możliwości. Poza tym jest to już sprawdzone i przetestowane.

Mało który posiadacz karty płatniczej zdaje sobie sprawę iż transakcje w kasie lub bankomacie nadal przetwarzają (tam gdzieś po drodze) programy (lub procedury) napisane w COBOL’u.

Słynny problem roku 2000 dotyczył głównie oprogramowania właśnie napisanego w tym języku.

COBOL był pierwszy, później powstał FORTRAN, ALGOL, BASIC … Jeszcze później Pascal, PL/1 czy C. Kolejną generacją jest JAVA, RUBY czy PHP. Obecnie znamy setki języków i technologii programowania. Wszystko zaczęło się w latach pięćdzisiątych, właśnie od tego.
 

vacuum tubes in IBM

Trudno przecenić wpływ Grace Hopper na rozwój techniki. To właśnie ona w latach 50-tych wpadła na pomysł pozbierania powtarzalnych fragmentów kodów komputerowych, przydatnych w różnych programach. W ten sposób narodziła się idea bibliotek procedur, bez której współczesna informatyka nie mogła by istnieć.
Jako ciekawostkę podam, że to właśnie od niej pochodzi popularne słowo bug (czyli pluskwa) – oznaczające błąd w programie komputerowym.

W XXI wieku software stało się największym sektorem światowej gospodarki (no może, niestety, nie w Polsce).
Legendarna pani kontradmirał jakoś nie cieszy się zbytnim zainteresowaniem feministek 😉

Turing machine

Co łączy ogromne pudło marki IBM wyprodukowane w latach 50-tych z nowoczesnym laptopem czy tabletem, leżącym na biurku ?
Otóż nie zmieniła się podstawowa zasada działania. Ba, zasadę tą stworzył teoretycznie, jeszcze przed II Wojną światową, brytyjski matematyk Allan Turing.

Na powyższym rysunku widzimy taki abstrakcyjny komputer zwany maszyną Turinga.
Składa się z procesora oraz taśmy będącej odpowiednikiem pamięci. Pamięć ta jest podzielona na widoczne komórki. Dla uproszczenia możemy przyjąć, że są to bajty.
Procesor czyta zawartość komórki i w zależności od jej zawartości wykonuje odpowiednie polecenie, po czym przesuwa taśmę do następnej. Polecenie może dotyczyć przesunięcia taśmy, odczytania jakiejś komórki bądż też jej zapisania (i zmiany zawartości).

Rozwój technologii sprawił, że możemy mieć w torbie (a nawet kieszeni) maszynę o mocy obliczeniowej większej niż komputery strategiczne z okresu Zimnej Wojny.
Zasada działania i pisania programów pozostała praktycznie ta sama. Owszem unowocześniają się języki programowania, systemy operacyjne … komputery zyskały możliwości multimedialne. Natomiast u podstaw leżą idee stworzone w latach 50-tych i 60-tych.  W tym, oczywiście to co wynalazła pani Grace Murray Hopper.