Kto po Leibnizu?

Idea sterowania maszyną za pomocą komend zapisanych binarnie inspirowała wielu konstruktorów i inżynierów. Leibniz zapisał binarnie liczby, Boole logikę, Goedel zapisał liczbami dane, Shanonn pokazał jak można realizować binarne operacje za pomocą obwodów elektrycznych, von Neumann wszystko to połączył w jedno.

Idea sterowania maszyną za pomocą komend zapisanych binarnie inspirowała wielu konstruktorów i inżynierów. Leibniz zapisał binarnie liczby, Boole logikę, Goedel zapisał liczbami dane, Shanonn pokazał jak można realizować binarne operacje za pomocą obwodów elektrycznych, von Neumann wszystko to połączył w jedno.

W 1725 r. Basile Bouchon z Lyonu wpadł na pomysł wybierania za pomocą specjalnych igieł i dziurkowanej papierowej taśmy pętlic nicielnicy, które winny być podniesione przy każdym przelocie przędzalniczego czółenka. Papierowe karty mogły być wymieniane. W ten sposób powstał pierwowzór wymiennego programu dla maszyny. Być może Bouchon został zainspirowany przez kurant - obracający się bęben z metalowymi dziurkami do sterowania kościelnymi dzwonami.

Zamiar Bouchona po raz pierwszy skutecznie zrealizowali M. Falcon, który w 1728 r. zastosował drewnianą płytę z systemem wywierconych otworów oraz Jaques de Vaucanson (1745-1782). Krosno tego ostatniego było w pełni automatyczne. Tkanie stało się tańsze, szybsze, łatwiejsze, a wyroby były praktycznie pozbawione błędów. Czeladnicy tkaccy w obawie o miejsca pracy niszczyli nowe krosna. Z kolei mistrzowie, aby zachować monopol, wykupywali je. Arystokracja i duchowieństwo, które w innowacjach dostrzegało zagrożenia ich pozycji, zakazywało ich używania. Po pewnym czasie o pomyśle zapomniano i nowe krosno gromadziło tylko kurz w paryskim muzeum sztuki i rzemiosła. Dopiero w 1800 r. Joseph-Marie Jacquard (1752-1834) zainteresował się nim i w pięć lat później skonstruował tzw. krosna żakardowe.

Maszyna analityczna Babbage'a

Kodowanie binarne z pomysłu Jacquarda wykorzystał Charles Babbage (1791-1871) w pomyśle maszyny analitycznej. Była to koncepcja maszyny o ogólnym przeznaczeniu. Na wymiennych kartach perforowanych zapisywany był nie wzór tkaniny, lecz program sterujący obliczeniami. Urządzenie Babbage'a miało 50 tys. części ruchomych i było napędzane maszyną parową wielkości lokomotywy. Sterowanie było w pełni automatyczne, nawet drukowane były wyniki obliczeń. Sama maszyna nie została ostatecznie wykonana. Pozostała natomiast idea ogólnego przeznaczenia.

Maszyna analityczna antycypowała uniwersalny komputer. W rozważaniach teoretycznych ideę tę podejmował Turing, zaś inspiracje praktyczne czerpał Aiken, konstruktor komputera uniwersalnego Mark I. Stąd też tytuł "ojciec komputerów" niektórzy odnoszą przede wszystkim do Babbage'a. Znaczący udział w pracach Babagge'a miała Augusta Ada Byron (1815-1852), znana również jako lady Lovelace, córka poety Lorda Byrona, a żona lorda Lovelace. Nie tylko wspomagała prace Babagge'a finansowo, lecz również miała swój wkład teoretyczny. Pisała m.in. artykuły o technikach programowania, porównując m.in. warsztat tkacki Jacquarda z maszyną analityczną Babbage'a.

Maszyna Holleritha

Pomysł Babbage'a z kartami perforowanymi okazał się bardzo trwały - były one wykorzystywane w praktyce aż do 1960 r. Amerykański wynalazca, imigrant z Austrii, Herman Hollerith (1860-1929) w 1889 r. wykorzystał ideę warsztatu tkackiego Jacquarda, konstruując maszynę do obliczenia wyników spisu powszechnego w Stanach Zjednoczonych w 1890 r. Obliczenie wyników spisu powszechnego przeprowadzonego w 1880 r. trwało prawie siedem lat. Spodziewano się, że w wypadku kolejnego spisu - ponieważ przybyło ludności - zajmie to ok. 10 lat.

Babbage użył kart perforowanych do "zapisania" instrukcji. Hollerith zastosował ten pomysł do zapisania danych. Każda karta reprezentowała jednego człowieka. Podzielona była na 240 kwadratów. Otwór w kwadracie miał określone znaczenie, oznaczał np. przedział wieku (co pięć lat). Karty wkładano do tabulatora. Zawarte dane przekazywane były automatycznie na skale tarczowe, które podawały bieżącą sumę dla każdej cechy, np. liczbę osób w poszczególnych grupach wiekowych. Efekty były imponujące - wyniki obliczono w ciągu sześciu tygodni, na dodatek udało się zredukować błędy. Karty zaś - co jest bardzo ważne - służyły do przechowania danych. W 1896 r. Hollerith założył firmę Tabulating Machine Company, która po serii przekształceń od 1924 r. za sprawą T. J. Watsona znana jest jako IBM (International Business Machines).

Maszyna Holleritha miała wiele ograniczeń, ale w kolejnych latach wielu kolejnych konstruktorów poczyniło znaczące postępy. W 1931 r. Vannevar Bush (1890-1974) zbudował kalkulator rozwiązujący równania różniczkowe, które długo stanowiły problem dla matematyków.

Binarny i alfanumeryczny

Kodowanie binarne zyskuje nowy wymiar, jeżeli koduje się za pomocą liczb (na nich bowiem można wykonywać operacje obliczeniowe). Pierwszy binarny kod o charakterze alfanumerycznym jest pomysłem Giuseppe Peano. Zaprojektował on abstrakcyjną maszynę stenograficzną opartą na binarnym kodowaniu wszystkich sylab języka włoskiego. Stosował kodowanie szesnastobitowe (miał więc do dyspozycji 65 536 kombinacji). Oprócz kodowania fonemów zakodował dziesięć cyfr i 25 liter.

W listopadzie 1937 r. Georg Stibitz, wówczas pracownik Bell Labs, zbudował oparty o przekaźniki komputer, który nazwał "Model K" (jak kitchen - kuchnia, gdzie był montowany). Komputer obliczał wykorzystując system binarny. Bell Labs zaakceptowało program badawczy ze Stibitzem w roli kierownika. W styczniu 1940 r. zakończone zostały prace nad Complex Number Computer. Na pokazie dla American Mathematical Society w Dartmouth College we wrześniu 1940 r. obecni byli John von Neumann, John Mauchly i Norbert Wiener.

Przed 1939 r. John Atanasoff, profesor fizyki na Iowa State College, buduje prototyp komputera binarnego ABC (Atansoff-Berry Computer). Była to pierwsza elektroniczna maszyna obliczeniowa. Komputer używał 300 lamp próżniowych, kondensatorów do przechowywania danych cyfrowych i kart perforowanych do komunikacji [wejście-wyjście]. Maszyna nie była programowalna i z powodu wąskiej specjalizacji (równania różniczkowe) można ją określić jako elektroniczny kalkulator. Do jej produkcji nie doszło z powodu wybuchu wojny.

W tym też czasie komputer binarny buduje Konrad Zuse, niemiecki inżynier budownictwa i malarz amator. Jego Z3 z 1943 r. był konstrukcją pracującą wyłącznie na bazie systemu dwójkowego i był w pełni programowalny (za pomocą perforowanych zużytych taśm filmowych).

Komputery pierwszej generacji

Jedną z najważniejszych konstrukcji komputerowych był ukończony w 1946 r. ENIAC (Electronic Numerical Integrator And Calculator). Dał on początek całej serii komputerów pierwszej generacji - olbrzymich maszyn, które zapoczątkowały historię komputerów cyfrowych. Z3 Zusego choć w pełni programowalny, nie był w pełni elektroniczny. Brytyjski Colossus, nad którym pracował Turing, był w całości elektroniczny, ale był wąsko specjalizowany i zaprogramowanie go było bardzo skomplikowane. Dopiero ENIAC był komputerem ogólnego przeznaczenia, w całości elektronicznym, aczkolwiek działał w oparciu o system dziesiętny. Każda z dziesięciu cyfr była reprezentowana przez jedną z dziesięciu lamp w rzędzie: cyfra była wskazywana przez lampę nie świecącą. ENIAC nie był programowalny za pomocą programu. Zmiana jego funkcji była możliwa poprzez dokonanie zmian w zewnętrznych przełącznikach i okablowaniu. Jego konstrukcja była dziełem fizyka Johna W. Mauchly'ego i inżyniera elektronika Johna Eckerta.

W omówionych konstrukcjach liczbowy system binarny był wykorzystany do wykonywania obliczeń matematycznych. Choć przełączniki pracują tak jak to jest opisane w algebrze Boola (co nie znaczy, że twórcy tych komputerów mieli o niej choćby pojęcie), to jednak nie wykorzystano tutaj w pełni istoty tej algebry, czyli logiki. Do tego dochodzi dzięki von Neumannowi. W jego koncepcji wykonywane binarnie są zarówno operacje arytmetyczne, jak i logiczne. Von Neumann połączył je więc w jedno kodowanie binarne, podobnie jak oba systemy binarne: arytmetyczny i logiczny.

Przy okazji dyskusji o mocy ENIAC-a von Neumann żywo zainteresował się tą maszyną i późnym latem 1945 r. przetestował ją w związku z obliczeniami niezbędnymi do konstrukcji bomby wodorowej. Von Neumann szybko został wprowadzony w kwestie struktury logicznej komputera kolejnej generacji EDVAC (Electronic Discrete Variable Automatic Computer), szkicując koncepcję "magazynowanego programu". Instrukcje algorytmu mogły być przechowywane elektronicznie i wykonywane sekwencyjnie. W ten sposób von Neumann stworzył zarys "uniwersalnej maszyny liczącej" w sensie definicji Alana Turinga, czyli maszyny zdolnej wykonać dowolną procedurę algorytmiczną. Ważna dla architektury von Neumanna koncepcja CPU (centralnej jednostki sterującej) była inspirowana dowodem twierdzenia Goedla: tym samym "kodem" zapisane zostały zarówno operacje, jak i argumenty operacji.

W architekturze von Neumanna następuje pełne wykorzystanie liczbowego i logicznego systemu binarnego oraz kodowania binarnego. Najprościej można by wyrazić to tak, że już nie tylko dane operacji są kodowane binarnie, lecz również binarnie kodowane są same operacje. Leibniz zapisał binarnie liczby, Boole logikę, Goedel zapisał liczbami dane, Shanonn pokazał jak można realizować binarne operacje za pomocą obwodów elektrycznych, von Neumann wszystko to połączył w jedno.

Pomysł Leibniza mógłby zostać zrealizowany, gdyby nie okazało się - co pokazał Goedel - że mechanizacja rozumowania ma ograniczenia. Choć język binarny stał się językiem uniwersalnym, za pomocą którego można wszystko wypowiedzieć, to jednak Leibnizowi nie tylko o to chodziło. Dlatego wciąż jest miejsce na realizację wielu jego idei w obszarze sztucznej inteligencji.


TOP 200