Ojciec komputerów

Ojciec komputerów
e-suplement
Znana to prawda, że dziennikarze lubią przesadę. Przesada, zwłaszcza użyta w tytule, przyciąga uwagę czytelników i skłania ich do wysupłania bezcennych dla wydawcy paru groszy na egzemplarz gazety. W swoim czasie żurnaliści nazwali więc pierwsze komputery ? obrazowo, ale najzupełniej bez sensu ? ?mózgami elektronowymi?; bardzo też chętnie różnym ludziom nadawali tytuł ?ojca komputerów?.

Dziś - o jednym z takich ludzi. Rzeczywiście, bardzo zasłużonym i ważnym dla historii informatyki, zresztą ? nie tylko dla informatyki, dla matematyki również.

Zanim jednak opowiemy o nim ? trochę szczegółów technicznych. Z pewnością niemal wszyscy wiedzą jak wygląda ?na samym dnie?, na najniższym poziomie ?obróbki? informacja, którą przetwarza maszyna matematyczna. To oczywiście liczby dwójkowe ? czyli, mówiąc po ludzku, ciągi jedynek i zer, fizycznie zaś ? impulsów i braków impulsów elektrycznych, interpretowanych właśnie jako cyfry binarne. Te liczby dwójkowe ? każdy to pewnie rozumie ? to ?zwykłe?, dobrze nam znane liczby, tylko nieco różnie od ludzkich przyzwyczajeń zapisane. Jeśli maszyna ma wykonać ? powiedzmy ? działanie 6 + 3, to liczbę dziesiętną 6 zapisuje sobie jako 110 (jedna czwórka i jedna dwójka), liczbę 3 ? jako 11 (dwójka i jedynka), potem wykonuje dodawanie w systemie binarnym: 110 + 11 = 1001 i wynik tłumaczy użytkownikowi na powrót ? jako dziesiętne 9. Każdy rozumie, że w systemie dwójkowym dodaje się łatwiej niż w dziesiętnym ? bo to i ?tabliczka dodawania? prostsza, i realizacja fizyczna ? czyli operowanie impulsami i ich brakami ? łatwiejsza.

A jak maszyna zapisuje sobie polecenia, na przykład użyte kilka wierszy wyżej polecenie dodawania? Tak samo ? też jako ciąg zer i jedynek. Dwa takie dowolne ciągi mogą być zatem interpretowane i jako rozkaz, i jako liczba. Wszystko zależy od naszej ?umowy? z maszyną; możemy się na przykład umówić, że pierwsze 6 znaków binarnych danego ciągu zer i jedynek będzie mówiło, co robić (czyli kodowało polecenie), a następne znaki ? będą zapisem liczby, której to polecenie będzie dotyczyło.

Na samym początku, gdy powstawały komputery, było inaczej. Rozkazy od danych różniły się w sposób zasadniczy, także sposobem realizacji technicznej i miejscem ich przechowywania ? co prowadziło na przykład do takich kłopotów, jak konieczność ręcznego ustawiania połączeń dla każdego algorytmu obliczeń oddzielnie. Tak było na przykład w wypadku słynnego ENIAC-a. Ustawianie ? dajmy na to ? algorytmu obliczeń tablic strzelań artyleryjskich (głównie do takich obliczeń tę maszynę zaprojektowano) było prawdziwym koszmarem, śniącym się zapewne po nocach ślicznym pannom-programistkom, które musiały pieczołowicie wkładać setki wtyczek we właściwe kontakty?

[caption id="attachment_4352" align="aligncenter" width="465" caption="Programistki przy ENIAC-u."][/caption]

Tymczasem identyczne zapisywanie rozkazów i danych nie tylko umożliwia programowanie ?na papierze?, ale na dodatek ? przy przyjęciu dodatkowych konwencji ? wykonywanie na zapisach poleceń? zwykłych działań arytmetycznych. Może się zatem zdarzyć, że operacja [?zapis dodawania? plus ?zapis mnożenia?] da w efekcie ?zapis dzielenia? albo ?polecenie skoku?. Maszyna, rachując na poleceniach jak na zwykłych liczbach, uzyskuje niesamowitą dla laika zdolność wewnętrznego automatycznego modyfikowania swoich zestawów poleceń ? bez żadnego udziału człowieka, który musi tylko przewidzieć odpowiednią potrzebę?

Wpadnięcie na ten pomysł stanowiło intelektualny przełom w podejściu do procesów obliczeniowych. Wdrożenie zaś go w życie oznaczało prawdziwe narodziny współczesnych maszyn liczących.

Co ciekawe ? człowiek, który wpadł na ten pomysł, wymyślił także schemat, wedle którego zbudowany jest każdy dzisiejszy komputer. Według tego aktualnego do dziś schematu komputer ? to pięć odpowiednio zrealizowanych technicznie układów, zwanych WEJŚCIE, WYJŚCIE, PAMIĘĆ, ARYTMOMETR i STEROWANIE. WEJŚCIE służy do wprowadzania danych i programów (dziś to na przykład klawiatura, różne czytniki i czujniki, napęd dyskietek, port USB, do którego wtykamy ?flaszkę?, czyli pendrive?a, i wiele innych urządzeń. Na WYJŚCIU (monitor, drukarka itp.) pojawiają się wyniki obliczeń, w PAMIĘCI przechowuje się dane i programy, w ARYTMOMETRZE wykonuje się na nich działania, zaś wszystkim zarządza STEROWANIE.

Ten układ pięciu elementów nosi nazwę architektury von Neumanna.

A oto co o niej pisze Wikipedia:

Architektura von Neumanna ? pierwszy rodzaj architektury komputera, opracowanej przez Johna von Neumanna, Johna W. Mauchly'ego oraz Johna Prespera Eckerta w 1945 roku. Cechą charakterystyczną tej architektury jest to, że dane przechowywane są wspólnie z instrukcjami, co sprawia, że są kodowane w ten sam sposób.

W architekturze tej komputer składa się z czterech głównych komponentów:

  • pamięci komputerowej przechowującej dane programu oraz instrukcje programu; każda komórka pamięci ma unikalny identyfikator nazywany jej adresem;
  • jednostki kontrolnej odpowiedzialnej za pobieranie danych i instrukcji z pamięci oraz ich sekwencyjne przetwarzanie;
  • jednostki arytmetyczno-logicznej odpowiedzialnej za wykonywanie podstawowych operacji arytmetycznych;
  • urządzeń wejścia/wyjścia służących do interakcji z operatorem.
Jednostka kontrolna wraz z jednostką arytmetyczno-logiczną tworzą procesor. System komputerowy zbudowany w oparciu o architekturę von Neumanna powinien:
  • mieć skończoną i funkcjonalnie pełną listę rozkazów;
  • mieć możliwość wprowadzenia programu do systemu komputerowego poprzez urządzenia zewnętrzne i jego przechowywanie w pamięci w sposób identyczny jak danych;
  • dane i instrukcje w takim systemie powinny być jednakowo dostępne dla procesora;
  • informacja jest tam przetwarzana dzięki sekwencyjnemu odczytywaniu instrukcji z pamięci komputera i wykonywaniu tych instrukcji w procesorze.
Podane warunki pozwalają przełączać system komputerowy z wykonania jednego zadania (programu) na inne bez fizycznej ingerencji w strukturę systemu, a tym samym gwarantują jego uniwersalność.

System komputerowy von Neumanna nie posiada oddzielnych pamięci do przechowywania danych i instrukcji. Zarówno instrukcje, jak i dane są zakodowane w postaci liczb. Bez analizy programu trudno jest określić, czy dany obszar pamięci zawiera dane czy instrukcje. Wykonywany program może się sam modyfikować, traktując obszar instrukcji jako dane, a po przetworzeniu tych instrukcji ? danych ? zacząć je wykonywać.

Model komputera wykorzystującego architekturę von Neumanna jest często nazywany przykładową maszyną cyfrową (PMC).

 

No i już znamy nazwisko naszego bohatera: to genialny amerykański matematyk John von Neumann. W Wikipedii występują jeszcze nazwiska konstruktorów ENIAC-a, ale nie ulega wątpliwości, że główna idea pochodziła od von Neumanna.

[caption id="attachment_4351" align="aligncenter" width="384" caption="John von Neumann."][/caption]

Właściwie ani on Amerykanin, ani John, ani nawet von. Przyszły ?ojciec komputerów? urodził się 28 grudnia 1903 roku w Budapeszcie jako Neumann János Lajos (po węgiersku nazwisko pisze się na pierwszym miejscu), w czasie późniejszego pobytu w Niemczech nazywał się Johann von Neumann (von ? to przydomek oznaczający po niemiecku szlacheckie pochodzenie), Johnem został dopiero w ostatnich dziesięcioleciach życia.

Pochodził z węgierskiej bankierskiej rodziny żydowskiej, zamożnej ? ale bynajmniej nie szlacheckiej. Był dzieckiem niesamowicie inteligentnym; jego biografowie zwracają na przykład uwagę, że kiedy miał sześć lat, potrafił np. z dużą prędkością dzielić w pamięci ośmiocyfrowe liczby. Ludzie obdarzeni takimi umiejętnościami z reguły nie tylko nie są geniuszami matematycznymi, ale wręcz uważa się ich za upośledzonych umysłowo. W wypadku małego Jánosa tak nie było.

Chłopak miał w dodatku fotograficzną pamięć: wystarczało mu rzucić okiem na stronę książki, by dokładnie zapamiętać jej treść. Uczęszczał wraz ze starszym o rok (też potem sławnym) Eugenem Wignerem do budapeszteńskiego Gimnazjum Ewangelickiego. János był tu wybitnie zdolnym uczniem i bardzo szybko udowodnił ogromny talent matematyczny ? swój pierwszy naukowy artykuł matematyczny opublikował w wieku 17 lat.

Po uzyskaniu matury studiował na kilku bardzo dobrych europejskich uniwersytetach. W 1925 roku uzyskał stopień bakałarza (odpowiednik licencjatu) z? inżynierii chemicznej. Rok później (!) doktoryzował się z matematyki na uniwersytecie w Budapeszcie. W latach 1926?1930 był najmłodszym docentem na Uniwersytecie Humboldta w Berlinie. Udało mu się zupełnie uniknąć prześladowań hitlerowskich, które ? z racji żydowskiego pochodzenia ? z pewnością by go nie ominęły. Jesienią 1929 został zaproszony do USA, do słynnego Princeton, dokąd w 1930 wyjechał i rozpoczął pracę naukową na tamtejszym uniwersytecie. W 1932 roku opublikował w USA książkę Mathematische Grundlagen der Quantenmechanik (Matematyczne podstawy mechaniki kwantowej).

Gdy hitlerowcy doszli w Niemczech do władzy w 1933 roku, von Neumann objął profesurę matematyki w nowo założonym ? niezwykle elitarnym ? Institute for Advanced Study, dziś jednej z najsłynniejszych placówek naukowych świata. Został tu kolegą ? między innymi ? samego Alberta Einsteina. W 1937 roku uzyskał obywatelstwo amerykańskie.

W biografii von Neumanna jest ciekawy akcent polski. Otóż już po zwycięstwie nazizmu w Niemczech, przed samą wojną, odwiedził on nasz kraj i spotkał się tu z największym polskim matematykiem, Stefanem Banachem. Prawdę mówiąc, właśnie to spotkanie było głównym celem pobytu uczonego w Polsce, bowiem ? ściśle poufnie ? przywiózł on Banachowi propozycję natychmiastowej emigracji do USA i objęcia profesury w Princeton. Anegdota głosi, że próbując skłonić Banacha do decyzji, podał mu czek z wpisaną na nim liczbą jeden, mówiąc ? ?proszę dopisać tyle zer, ile pan uważa za stosowne, każda suma jest z góry zaakceptowana??

Podobno niebywale dumna i szalenie błyskotliwa, ale ? moim zdaniem ? niezbyt mądra odpowiedź Banacha brzmiała: ?wybaczy pan, ale to za mało??

John von Neumann nie tylko wymyślił opisaną wyżej architekturę komputerową nazwaną jego imieniem (opisał ją w roku 1945 w książce First Draft of a Report on the EDVAC) i nie tylko wpadł na genialny pomysł z liczbową interpretacją komend komputerowych, ale także wniósł znaczący wkład do szeregu ? bardzo niekiedy ?teoretycznych? ? dziedzin matematyki: logiki, teorii mnogości, analizy matematycznej. W 1944 roku napisał razem z Oskarem Morgensternem słynne dzieło The Theory of Games and Economic Behavior, stając się tym samym również twórcą nowoczesnej teorii gier.

Od 1943 roku von Neumann uczestniczył w projekcie Manhattan, w ramach którego zbudowano efektywnie funkcjonujący reaktor atomowy oraz stworzono pierwszą bombę atomową. W tym czasie wymyślił m.in. pierwszą metodę praktycznego rozwiązywania hiperbolicznych równań różniczkowych cząstkowych.

W 1956 roku von Neumann otrzymał nagrodę? Amerykańskiego Towarzystwa Meteorologicznego za wkład do meteorologii i rozwój szybkich komputerów (które znalazły natychmiast zastosowanie do sporządzania prognoz pogody) i kierownictwo w stworzeniu grupy naukowej, która opracowała pierwszą uzasadnioną matematycznie prognozę pogody.

Był von Neumann także aktywny w polityce. Przed zrzuceniem bomby atomowej na Japonię należał do Target Committee, który współdecydował o wyborze celu bomb. Von Neuman proponował zrzucenie bomby na Kioto ? miasto to jest dla Japończyków ważnym centrum religijnym. Brał też udział w projektach rakiet balistycznych oraz w projekcie budowy bomby wodorowej.

Prywatnie był wesołym i szalenie towarzyskim człowiekiem. Był dwukrotnie żonaty (Mariette Kovesi i Klara Dan), miał jedną córkę (Marina). W jego domu w Princeton odbywały się słynne przyjęcia, szeroko nie tylko w świecie nauki znane z ilości spożywanego na nich alkoholu?

Zmarł na raka 8 lutego 1957 po przewlekłej, pełnej cierpień chorobie.

 

Przeczytaj także
Magazyn