maszyna babbage

15
O maszynie Babbage’a Streszczenie W pracy tej przedstawię ogólny schemat Silnika analitycznego, jego możliwości i wady, oraz język w którym bylby on oprogramowywany. W pracy zamieścilem też dwa przykladowe programy które silnik móglby wykonać. Uwaga Praca ta nie jest objęta otwartą licencją. Proszę nie robić lokalnych kopii, ani nie modyfikować jej bez mojej zgody. Jak zostanie oceniona to pewnie przejdę na moje standardowe CC. i

Upload: jbzdak

Post on 07-Jun-2015

495 views

Category:

Documents


3 download

DESCRIPTION

Praca opisująca maszynę Babagea

TRANSCRIPT

Page 1: Maszyna babbage

O maszynie Babbage’a

Streszczenie

W pracy tej przedstawię ogólny schemat Silnika analitycznego, jego możliwościi wady, oraz język w którym byłby on oprogramowywany. W pracy zamieściłem teżdwa przykładowe programy które silnik mógłby wykonać.

Uwaga

Praca ta nie jest objęta otwartą licencją. Proszę nie robić lokalnych kopii, ani niemodyfikować jej bez mojej zgody.

Jak zostanie oceniona to pewnie przejdę na moje standardowe CC.

i

Page 2: Maszyna babbage

SPIS TREŚCI ii

Spis treści

1 Wstęp 1

2 Zastosowania 12.1 Tworzenie tablic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

3 Maszyna 33.1 System liczbowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.2 Młyn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.3 Wady systemu liczbowego . . . . . . . . . . . . . . . . . . . . . . . . . . . 43.4 Pamięć . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.5 Karty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.5.1 Karty operacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.6 Karty zmiennych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.6.1 Karty numerów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.6.2 Karty wchodzenia i schodzenia . . . . . . . . . . . . . . . . . . . . 63.6.3 Karty stałych matematycznych . . . . . . . . . . . . . . . . . . . . 63.6.4 Maszyny do odczytu kart . . . . . . . . . . . . . . . . . . . . . . . 7

3.7 Problemy techniczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.8 Zabezpieczenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4 Komputer 84.1 Przykłady programów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4.1.1 Układ dwóch równań liniowych . . . . . . . . . . . . . . . . . . . . 84.1.2 Wyrażenie an . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4.2 Rozwinięcie języka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5 Zakończenie 12

Page 3: Maszyna babbage

1 WSTĘP 1

1 Wstęp

Na maszynę Babbage’a można spojrzeć z dwóch perspektyw. Pierwszą z nich jestspojrzenie na nią jak na maszynę, tj. rozpatrzenie pomysłu który za nią stał, jej projektui metody działania. Podejście to napotyka na dwie bariery, które obie wynikają z tego żenie była ona skonstruowana: Pierwszą jest to że nie wiemy czy da się ją skonstruować,ani czy dałoby się ją skonstruować w XIX wieku. Możliwe że projekt jest po prostuzbyt skomplikowany1. Drugą jest to że nie wiadomo w zasadzie o czym mówić, bowiemplan tej maszyny podlegał znacznym zmianom w trakcie, trwającej trzydzieści lat, fazyprojektowania i implementacji. W pierwszej części pracy rozważymy techniczne szczegółymaszyny.

Drugim spojrzeniem jest spojrzenie na maszynę Babbage’a jako na układ elektro-niczny, tym ona z resztą jest w istocie. Silnik analityczny jest równoważny maszynieTuringa i to równoważny w sensie ścisłym, bowiem jego projekt zakładał dowolnie wiel-kie repozytorium danych przechowywanych poza maszyną na kartach perforowanych.Maszyna ta ma konstrukcję zadziwiająco podobną do nowoczesnych komputerów (cojest dowodem nie tyle na to że komputery były na niej bazowane, a na powtarzalnośćracjonalnego rozumowania). W drugiej części tej pracy, korzystając z emulatora, pokażędziałanie maszyny na dwóch przykładowych programach2.

Uwaga dotycząca cytatów

Wszystkie cytaty anglojęzyczne, są w tłumaczeniu własnym.

2 Zastosowania

W czasach, gdy komputery nie były jeszcze bardzo rozwinięte, dużym problemem wobliczeniach numerycznych było zdobycie wartości funkcji podstawowych w dowolnychzadanych punktach. Korzystano w tym celu z tablic wartości funkcji.

W czasach Babbagea dodatkowym problemem było to że tablice, które były dostępnebyły pełne błędów (czy to obliczeniowych czy to drukarskich). Nie było wtedy niczymniezwykłym, dla matematyka, posiadanie setek tomów dobrych tablic matematycznych.

Jednym z rozwiązań tego problemu, było wydawanie serii errat do tablic (potem erratdo errat itd). Problemem było to że czasem erraty zawierały więcej błędów niż oryginały.

Silnik analityczny miał rozwiązać kompleksowo problem tablic funkcji. Po pierwszemaszyna miała działać bezbłędnie, po drugie w planach miała też moduł drukujący.

1Szacując po ilości cylindrów do przechowywania jednej cyfry (było ich 50 000), cała maszyna miałaponad kilkaset tysięcy części mechanicznych wykonanych z dużą precyzją.

2taka ich ilość starczy mi do pokazania wszystkich cech języka maszyny.

Page 4: Maszyna babbage

2 ZASTOSOWANIA 2

2.1 Tworzenie tablic

Każdą funkcję analityczną da się przedstawić w postaci:

f(x) =∞∑

n=0

f (n)(a)n!

(x− a)n

gdzie wyrażenie f (n)(a) oznacza wartość funkcji ∂nf(x)∂xn w punkcie a.

Przykładowo:

sin(x) =∞∑

n=0

x2n+1

(2n + 1)!(−1)n+1

Jeśli górną granicą sumowania jest nieskończoność wynik jest dokładny, jeśli nie towynik jest przybliżony. Wybierając sensownie duże n otrzymujemy sensownie dobre przy-bliżenie funkcji. W podobny sposób tworzono niegdyś tablice matematyczne.

Rząd Francuski (. . .) nakazał stworzenie tablic logarytmów i funkcji try-gonometrycznych bezprecedensowych rozmiarów. M. de Prony, któremu po-wierzono dowodzenie tym przedsięwzięcie, podzielił je na trzy części do każdejwyznaczył specjalną klasę ludzi. W pierwszej formuły były tak układane bystały się podatne dalszym obliczeniom numerycznym; w drugiej wartości tychformuł były wyznaczane w pewnych punktach; a w trzeciej, składającej się80 osób sekcji, z których większość była zaznajomiona tylko z podstawowymiprawami arytmetyki, wyznaczano wartości pomiędzy wartościami wyznaczo-nymi w drugiej sekcji używając prostych sumowań i różnic.

Gdy podjęto się podobnego przedsięwzięcia w Anglii, Pan Babbage stwier-dził że operacje wykonywane w trzeciej sekcji mogły zostać wykonane przezmaszynę. [1]

Pierwszym etapem było zapewne wyznaczanie postaci szeregu Taylora. Drugą anali-tyczne wyznaczenie funkcji i odpowiednich jej pochodnych w pewnych punktach3. Trze-cim wyznaczenie wartości pośrednich kożystając z dotychczasowych wyników.

Opis ten jest nie do końca adekwatny, ale wystarczający. Trzeci krok został przezBabbagea jeszcze uproszczony — do tego stopnia że nadawał się do wykonania przezjego maszynę różnicującą, co jednak wymagało ciągłej obsługi przez wykształconegomatematycznie operatora. Silnik analityczny był bardziej bezobsługowy, a jego osobaobsługująca owszem musiała być dokładna i staranna, ale nie musiała znać się na mate-matyce.

3Dla funkcji trygonometrycznych i logarytmów nie jest to trudne.

Page 5: Maszyna babbage

3 MASZYNA 3

3 Maszyna

Silnik analityczny składał się z trzech zasadniczych części: procesora arytmetycz-nego — zwanego młynem; maszyny interpretującej komendy (która częściowo wchodzizapewne w obręb młyna, ale zasadniczo jest od niego niezależna) i RAM-u, zwanegoskładem, zawierającego 1000 miejsc na liczby zapisane z pięćdziesięciocyfrową dokład-nością.

Uwaga: W przykładach w tym rozdziale będziemy posługiwać się liczbami czterocy-frowymi.

3.1 System liczbowy

Silnik używał tylko pięćdziesięciocyfrowych liczb całkowitych, bez wyraźnie zapisa-nego miejsca dziesiętnego. Oczywiście zaimplementowanie go jest nie potrzebne — możeo nim pamiętać programista. Jeśli chce dodać 1.5 i 1.2 wprowadza do maszyny liczby15 i 12, i komendę dodawania a wynik dzieli, już samemu, przez 10.

Jednak przy operacji mnożenia sprawa była już bardziej skomplikowana:

1.5× 1.2 = 1.8

15× 12 = 180

Oto jak działa młyn:

0 0 1 , 5× 0 0 1 , 2

0 1 8 , 0

Młyn znalazł w rejestrach dwie liczby: 15 i 12, je pomnożył je i zapisał wynik: 180.By otrzymać prawidłowy wynik należy podzielić wynik przez 10.

Ponieważ wszystkie liczby w maszynie mają przecinek w tym samym miejscu po każ-dym mnożeniu należy wykonać zawsze ta samą operację — u nas podzielić przez 10.Ponieważ dzielenie było operacją ‘drogą’ Babbage wprowadził dwie dodatkowe opera-cje — wchodzenia i schodzenia4 wykonywały one odpowiednio mnożenie lub dzielenierejestru przez 10 a były dużo szybsze.

3.2 Młyn

Młyn posiadał trzy rejestry — dwa wejściowe (zwane wchodzącymi5) i jeden wyj-ściowy (zwany schodzącym6).

4z ang. step up, step down5z ang. ingress6z ang egress

Page 6: Maszyna babbage

3 MASZYNA 4

Po otrzymaniu odpowiedniej komendy wykonywał działanie na liczbach zawartych wdwóch rejestrach wchodzących a wynik zapisywał w rejestrze schodzącym.

Młyn posiadał też rejestry trzy rejestry primowane (po jednym dla każdego rejestrunie-primowanego), które pozwalały przechowywać mu w pamięci liczby stucyfrowe. Re-jestr główny przechowywał pierwsze pięćdziesiąt, primowany — drugie. Miało to jedenzasadniczy cel: zapobiegać błędom przelewania rejestrów przy mnożeniu i zastąpić jebłędami zaokrąglania.

Przykładowo: Wykonujemy mnożenie 1.020 × 1.020 = 1.040. Pamiętajmy że silniknie rozpoznawał miejsca dziesiętnego i wykonywał podczas mnożenia takie operacje:

i Pobranie wartości z rejestrów wchodzących i zapisanie wyniku działania (a × b) dorejestru schodzącego.

ii Wykonanie operacje zejścia o odpowiednią ilość miejsc po przecinku.

W naszym przypadku:

i Wykonanie działania 102× 102 = 10404 i zapisanie tej wartości do rejestru.

ii Wykonanie operacje zejścia o cztery miejsca po przecinku.

Ale liczba 10404 nie mieści się w rejestrze czterocyfrowym, więc nastąpiłoby przelanierejestru7, co w przypadku silnika zatrzymałoby jego działanie. Babbage zauważył tenproblem i wprowadził rejestry primowane — liczba 10404 mieści się juz w ośmiocyfrowymrejestrze a wynik działania po zejściu o 4 miejsca dziesiętne (odpowiednio zaokrąglony)mieści się już w pamięci silnika.

Przy dzieleniu kolumna schodząca primowana była wykorzystywana do przechowaniareszty z dzielenia, podczas gdy kolumna nie–primowana przechowywała część całkowitądziałania.

Niestety nie natrafiłem na dokładny opis jak były wykonywane działania. Wiadomonatomiast ze o ile dodawanie i odejmowanie wykonywano we w miarę stałym czasie otyle czas mnożenia i dzielenia istotnie zależał od ilości cyfr przechowanych w rejestrach.

3.3 Wady systemu liczbowego

Widzę jedną poważną wadę systemu użytego w maszynie — jest to system stałoprze-cinkowy.

Jedną z przyczyn dla których osie musiały przechowywać liczby z tak dużą dokład-nością jest fakt że musiały mieścić liczby z bardzo różnych zakresów liczb.

Różnica pomiędzy tymi systemami polega na tym że w systemie zmiennoprzecinko-wym mogą obok siebie przebywać w pamięci liczby: 1,234 i 123,4, w stałoprzecinkowymnatomiast nie — mniejsza liczba musi zostać zaokrąglona do 001,2.

7z ang. overflow

Page 7: Maszyna babbage

3 MASZYNA 5

Dla operacji matematycznych takich jak dodawanie czy mnożenie, to czy zmienne sązmienno, czy stałoprzecinkowe może mieć spore znaczenie, ale nie musi. To czy dodamyliczby w systemie zmiennoprzecinkowym: 1,234 i 123,4, czy stałoprzecinkowym: 001,2 i12,34 jest bez większego znaczenia. W obu wypadkach otrzymamy wynik 124,5. Przymnożeniu jest już gorzej, części dziesiętne nieuwzględnione w systemie stałoprzecinko-wym zmienią nam wynik — w systemie stałoprzecinkowym wynik pomnożenia naszychliczb wynosi: 148.0 w zmiennoprzecinkowym natomiast — 152.2. Jest to różnica spora,są jednak zastosowania dla których jest system stałoprzecinkowy jest jeszcze gorszy.

Kiedy chcemy policzyć wartości funkcji mocno nieliniowych takich jak 10x, log10(x),natrafiamy na barierę nie do przebicia — trzeba na raz przechować w pamięci wynik iargument funkcji, tj. w systemie o czterech miejscach dokładności nie możemy dokonaćdziałania: 102.345, bo wynik tego działania to 221.3, które nie mieści się w systemie o takustawionym przecinku. Możemy co najwyżej wykonać działanie:10002.3, którego wynikwynosi: 119.5. A to już jest duża różnica.

Z powodu używania systemu stałoprzecinkowego Babbage musiał dodać do swej ma-szyny dwa dodatkowe działania — wchodzenie i schodzenie, oraz używać tak niesamo-wicie dużych liczb.

Podejrzewam że maszyna wykonująca obliczenia stałoprzecinkowe byłaby dużo bar-dziej skomplikowana w projekcie8, ale możliwe że ogólna trudność wykonania projektu(po zmniejszeniu dokładności) spadłaby.

3.4 Pamięć

Pamięć składała się z 1000 pięćdziesięciocyfrowych liczb.Każda komórka pamięci (zwana kolumną) składała się z pięćdziesięciu jeden kół zę-

batych umieszczonych na wspólnej osi. Każde koło zębate było oznaczone liczbami od 0do 9. Na najwyższym kole zamiast liczb pojawiły się naprzemian znaki + i −.

Tysiąc tych komórek (tworzących całą pamięć silnika) zwano składem9.

3.5 Karty

Nie można mówić że młyn był procesorem w ścisłym tego słowa znaczeniu, gdyżprocesory komputerów w pewnym sensie zawiadują same sobą, tj. przetwarzają równieżinstrukcje nimi zawiadujące. Przykładowo mogę kazać procesorowi wykonać operację nawartości przechowywanej pod adresem równym wartości jakiejś konkretnej zmiennej10.Młyn nie był od tego zdolny. Program zawierał się na kartach perforowanych różnychtypów, którymi młyn w zasadzie nie zawiadywał.

8System przechowywania i transmisji danych pozostałby bez zmian, jedynie konstrukcja młynu mu-siałaby się zmienić.

9z ang. rack (nie wpadłem na elegantsze tłumaczenie)10W naszych oznaczeniach kart odpowiadałoby to nielegalnej operacji: L(L001) Załadowania do reje-

stru wartości przechowywanej w kolumnie o numerze równym liczbie przechowywanej w kolumnie 001.

Page 8: Maszyna babbage

3 MASZYNA 6

Należy zauważyć że Babbage chyba nigdy nie zaplanował dokładniej postaci kart, ajeśli tak to w dostępnych źródłach nic o tym nie wspomniano.

Właściwy program zawierał się na kartach perforowanych różnych typów. Typy kartopiszemy w następnej części pracy.

3.5.1 Karty operacji

Zawierały pod typy kart: arytmetyczne i kombinacyjne.Karty arytmetyczne zawierały instrukcję wykonania działania.Kombinacyjne wraz z kartami indeksowymi pozwalały kontrolować wykonanie pro-

gramu - tj. skoczyć w przód lub w tył o określoną ilość kart bez wykonywania ich. Kartykombinacyjne zawierały następujące dane: kierunek skoku i to czy skok jest wykony-wany warunkowo czy zawsze. Karcie kombinacyjnej towarzyszyła karta indeksowa, którawskazywała ile kart należy przeskoczyć.

Silnik posiadał tylko jeden warunek — czy dźwignia pętli jest w położeniu wykonuj,czy nie. Stan dźwigni był determinowany przez ostatnie działanie — jeśli znak wynikuostatniej operacji był inny niż znak jej pierwszego argumentu to dźwignia była ustawianaw położeniu wykonuj; jeśli taki sam — nie–wykonuj.

3.6 Karty zmiennych

Zawierały numer zmiennej i wykonywaną operację. Dostępne były trzy operacje: za-pisanie do rejestru wchodzącego i z wyzerowaniem stanu zmiennej zapisywanej; zapisaniedo rejestru wchodzącego bez zerowania i zapisanie do określonej kolumny stanu rejestruschodzącego.

3.6.1 Karty numerów

Służyły do wprowadzania liczb do silnika.Zawierały dwie informacje — liczbę do zapisania i numer kolumny w którym należy

ją zapisać.

3.6.2 Karty wchodzenia i schodzenia

Służyły do pomnożenia lub podzielenia wartości w rejestrze schodzącym o odpowied-nią potęgę dziesięciu.

3.6.3 Karty stałych matematycznych

Wspomniane przez Babbagea w jednej z jego wizji w pełni zaawansowanej maszyny.Silnik który potrzebował konkretnej stałej matematycznej miał zażądać jej od ope-

ratora — wydać dźwięk, wypluć kartę z opisem stałej i zatrzymać się. Operator podałbymu wtedy kartę z tą stalą, silnik sprawdził by jej poprawność i użył jej do obliczeń.

Page 9: Maszyna babbage

3 MASZYNA 7

Karta miała zawierać argument funkcji i wynik jej działania: przykładowo kartalog(1221) = 3,08 . . . zawierałaby zarówno liczbę 1221 jak i 3.086 . . .. Argument funkcjibyłby użyty do sprawdzenia poprawności karty (maszyna sprawdza czy operator podałkartę o tym argumencie którego zażądała).

3.6.4 Maszyny do odczytu kart

Nie jest pewne czy karty były czytane przez jedną maszynę, czy przez wiele (czybyły trzy kolejki kart czy jedna). Za tym rozwiązaniem przemawiały względy techniczne— karty były bardzo różne — tj karta operacji mogła mieć 7 otworów11, karta zmien-nych trzydzieści12, a karta numerów pięćset. Przeciw kwestie programistyczne — trudniejkontrolować trzy łańcuchy poleceń niż jeden.

Karty stałych pewnie miałyby oddzielną maszynę.

3.7 Problemy techniczne

Problemy techniczne występujące przy budowie tej maszyny były ogromne. By topokazać starczy powiedzieć że jej projekt wymagał wykonania 50 000 cylindrów prze-chowujących konkretną cyfrę, i to w czasach w których jeszcze nie znano pojęcia taśmyprodukcyjnej a w metalurgii jeszcze rządziły manufaktury. Maszyna po prostu składałasię potwornej ilości elementów.

Ale to jest tylko jedna płaszczyzna problemów. Drugą są problemy czysto inżynier-skie. Przykładowo liczby były przechowywane w kolumnach położonych pionowo (a niepoziomo), by zmniejszyć tarcie na łożyskach.

3.8 Zabezpieczenia

Cytat o II maszynie różnicowej:

System ten wyposażono w wiele systemów zabezpieczeń służących ochro-nie przed błędami obliczeniowymi. Jeśli jedno z kół [służących przechowywa-nia cyfr] ustawiło się trochę poza odpowiednią pozycją, było przesuwane doniej przez system automatycznych sprężyn. Jeśli błąd był dostatecznie dużyby zapobiec automatycznej regulacji, maszyna po prostu wyłączała się (. . .)aż do czasu poprawienia błędu. [4]

Co więcej maszyna zatrzymywała się gdy następowało przelanie bufora — tj. gdyzażądano od bufora przechowania wyniku większego niż jego rozmiar. Tutaj ważna dy-gresja: tego zachowania nie implementują nawet nowoczesne komputery13.

11Cztery dla operacji, jeden do zaznaczenia że jest to karta kombinacyjna, jeden do zaznaczenia wktórym kierunku ma przesunąć taśmę i jeden do zaznaczenia czy jest ona warunkowa czy nie.

12po dziesięć na każdą cyfrę numeru zmiennej.13Niektóre kompilatory C++ po prostu to ignorują, tj. pozostawiają bezsensowną wartość w programie.

Page 10: Maszyna babbage

4 KOMPUTER 8

4 Komputer

4.1 Przykłady programów

4.1.1 Przykład z [1] — układ dwóch równań liniowych.

mx + ny = d

m′x + n′y = d′

Jego rozwiązaniem jest: x = n′d−nd′

mn′−m′n

Program rozwiązujący to równanie:Wiersz zaczynający się od spacji to komentarz. Wiersz zaczynający się od A jest

informacją dla obsługującego maszynę (attendant).W programie tym nie uwzględniono wchodzenia i schodzenia po mnożeniu i dzieleniu.

A write in columnsZmienne opisujące równaniemN0 +1nN1 +1dN2 +2m’N3 +1n’N4 -1d’N5 +0Stała liczbowaN10 +0

Wykonanie dzialan*L4L2S6L1L5S7-L6L7S8*

Page 11: Maszyna babbage

4 KOMPUTER 9

L0L4S6L3L1S7-L6L7S7/L8L7

S6’S7

A write annotation x=+L6L10P

A write annotation reszty+L7L10P

Ciekawsze miejsca programuKarta działań arytmetycznych ustala stan maszyny na stałe (tj. do następnej karty dzia-łań). Po wprowadzeniu karty + maszyna będzie dodawać aż nie dostanie innej operacji.

Karta N[numer]␣[wartość] powoduje wpisanie wartości do rejestru o numerzenumer.

Karta S[numer] powoduje zapisanie zawartości rejestru wyjściowego do zmiennejnumer. Karta S[numer]’ spowoduje zapisanie zawartości rejestru wyjściowego primowa-nego do zmiennej numer.

Karta L[numer] powoduje załadowanie zmiennej numer do rejestru wejściowego.Pierwsze wywołanie L (pierwsze w ogóle, lub pierwsze po wykonaniu działania) powo-duje załadowanie liczby do pierwszego rejestru, kolejne załadowanie liczby do drugiegooraz wykonanie bieżącego działania. Tak więc podanie kart:

Page 12: Maszyna babbage

4 KOMPUTER 10

*L4L2S6L1L5S7

Spowoduje wykonanie mnożenia zawartości kolumn 4 i 2 i zapisanie jego wyniku dokolumny 6, oraz wykonanie mnożenia zawartości kolumn 1 i 5 i zapisanie jego wynikudo kolumny 7.

Wynik dzielenia jest zapisywany w następujący sposób: część całkowita jest zapisanado rejestru primowanego, a reszta z dzielenia do nie–primowanego. Tak więc:

/Z8Z7S6’S7

spowoduje zapisanie reszty z dzielenia w kolumnie 7, a części całkowitej w 6.

4.1.2 Wyrażenie an

Przykład podobny do przykładu z [1].

Wykonujemy x^nx = 1.200000N001 +1200000n=8N002 +8stała rowna 1N003 +1stała rowna 0 slozy do kopiowania liczbN004 +0

Kopiujemy x do zmiennej lokalnejdodajemy 12+0 i wynik zapisujemy jako kopie+L001L004S005

Odejmujemy 1 od wykladnika-

Page 13: Maszyna babbage

4 KOMPUTER 11

L002L003S002Wydruk stanu licznikaPMnozenie*L001L005Zejscie o 6 rzedow wielkosci w dol>6S001sprawdzenie warunkujesli znak 003 (licznik) jest rozny od znaku roznicy dzialaniapetla jest kontynuowana-L003L002Jesli petla jest kontynuowana to skacze do gory o 21 linii.(komentazre tez sie licza jako linie)CB?21

wydruk wyniku+L001L004P drukuje wartosc w buforze wyjsciowym procesoraPB

Ciekawsze punkty programu Tutaj już uwzględniłem konieczność wykonania ope-racji schodzenia po mnożeniu.

Karta >[numer] powoduje podzielenie zawartości rejestru wyjściowego przez 102·numer.Karta <[numer] — pomnożenie.

-L001L002S002CB+4

jak i:

Page 14: Maszyna babbage

5 ZAKOŃCZENIE 12

CF?+4*L001L002S003-

przesunie czytnik na kartę -.Warunkiem jest to czy znak pierwszego arguemntu ostatniej operacji jest inny od

znaku jej wyniku14.

4.2 Rozwinięcie języka

Tak, w zasadzie prezentował się język samej maszyny. Babbage planował rozwinąćjęzyk o polecenia dla asystenta. W zasadzie zamierzał zamienić asystenta w inteligentnypreprocesor15 kodu źródłowego. Wykorzystanie asystenta pozwalałoby formatować wy-druki z programu. Wykonywać pętle — programista zaznaczałby początek pętli, jej ko-niec i warunek do spełnienia na końcu pętli, a asystent liczyłby karty i wstawiał od-powiedni numer. Czy wreszcie wykonywać obliczenia mające ustaloną dokładność —asystent wstawiałby odpowiednie komendy wchodzenia i schodzenia.

5 Zakończenie

Nie budzi wątpliwości że maszyna Babbagea, mogła zmienić dziewiętnastowiecznyświat — dostęp do tańszej mocy obliczeniowej dałby skrzydła ówczesnej nauce.

Jednak, mimo tego że nie powstała, maszyna Babbagea i tak miała nie mały wpływna rozwój Anglii. Sam proces jej planowania dał impuls do rozwoju techniki.

Przez kilka następnych lat uważnie projektował każdą część z osobna, anastępnie projektował i budował narzędzia służące do jej wykonania. Ta dwu-stopniowa procedur, a nie raz, sugerowała inne, a często prostsze projekty dlaczęści maszyny jak i dla narzędzi potrzebnych do ich wykonania, i cały procespowtarzał się dla ich nowych wersji. Tą właśnie metodą [projektowania] Bab-bage i jego zespół inżynierów posuwał do przodu sztukę produkcji narzędzitempie szybszym niż kiedykolwiek wcześniej. [4]

14Tyle wyczytałem z opisu maszyny. Twórcy emulatora, logiczniej, ustalili że dotyczy to tylko doda-wania i odejmowania

15Pojęcie z C/C++, program wstępnie obrabiający kod źródłowy programu przed jego kompilacją

Page 15: Maszyna babbage

LITERATURA 13

Literatura

[1] „«Sketch of the Analytical Engine» by L. F. Menabrea, translated and withextensive commentary by Ada Augusta”, ze strony: http://www.fourmilab.ch/babbage/sketch.html.

[2] „Chapter VIII of Charles Babbage’s 1864 autobiography, Passages from the Life ofa Philosopher”. http://www.fourmilab.ch/babbage/lpae.html.

[3] Artykuł o Thomasie Fowlerze na wikipedii po angielsku, http://en.wikipedia.org/wiki/Thomas_Fowler.

[4] „The difference engines” M. R. Williams, The computer Journal 1974 Volume 19strony 82–89.