Bogdan Miś: „Ojciec komputerów”?

2012-08-01.

Ludzie. liczby, maszyny

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. Jak 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? A no – 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 wsadzać setki wtyczek we właściwe kontakty…

 Programistki przy ENIAC-u

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ć odpowiednia potrzebę…

Wpadnięcie na ten pomysł stanowiło intelektualny przełom w podejściu do procesów obliczeniowych. Wdrożenie zaś tego pomysłu 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. Wedle tego aktualnego do dziś schematu komputer – to pięć jakoś tam 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, jakieś czytniki i czujniki, napęd dyskietek, port USB, do którego wtykamy „flaszkę” czyli pendrive, 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 Presper 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. 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.

 John von Neumann

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 mając 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 z rok starszym (też potem sławnym) Eugene 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 publikując 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 – niesamowicie 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ą swego imienia (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.

Bogdan Miś

Print Friendly, PDF & Email

3 komentarze

  1. JMP 2012-08-01
  2. eternal 2012-08-02
  3. Incitatus 2012-08-03
WP Twitter Auto Publish Powered By : XYZScripts.com