Charles Babbage, 1791-1871. Portrait from the Illustrated London News, Nov. 4, 1871
wydaje się prawdziwym cudem, że pierwszy komputer cyfrowy na świecie, który zawierał w swoich mechanicznych i logicznych szczegółach niemal wszystkie główne zasady współczesnego komputera cyfrowego, został zaprojektowany już w 1830 roku., Zostało to zrobione przez wielkiego Charlesa Babbage' a, a nazwa maszyny to Analytical Engine
w 1834 roku Babbage zaprojektował kilka ulepszeń do swojego pierwszego komputera—specialized Difference Engine. W pierwotnym projekcie, ilekroć potrzebna była nowa stała w zestawie obliczeń, musiała być wprowadzona ręcznie. Babbage wymyślił sposób, aby różnice były wprowadzane mechanicznie, układając osie silnika różnicowego kołowo, tak aby kolumna wynikowa znajdowała się blisko ostatniej różnicy, a tym samym była łatwo dostępna., Określał ten układ jako silnik zjadający własny ogon lub jako lokomotywę, która układa własną kolej. Ale to wkrótce doprowadziło do pomysłu kontrolowania maszyny za pomocą całkowicie niezależnych środków i sprawiając, że wykonuje ona nie tylko dodawanie, ale wszystkie procesy arytmetyczne w dowolnej kolejności i tyle razy, ile może być wymagane.
prace nad pierwszym silnikiem różnicowym zostały wstrzymane 10 kwietnia 1833, a pierwszy rysunek silnika analitycznego datowany jest na wrzesień 1834. Istnieje ponad dwieście rysunków, w pełnej skali, silnika i jego części., Były one pięknie wykonane przez wysoko wykwalifikowanego rysownika i były bardzo kosztowne. Istnieje również ponad czterysta zapisów różnych części, wykorzystujących system notacji mechanicznej Babbage ' a (zobacz prawa notacji mechanicznej).
obiekt maszyny można podać w ten sposób (według Henry 'ego Babbage' a, najmłodszego syna wynalazcy): jest to maszyna do obliczania wartości liczbowych lub wartości dowolnej formuły lub funkcji, której matematyk może wskazać metodę rozwiązania., Jest to wykonywanie zwykłych reguł arytmetyki w dowolnej kolejności ustalonej wcześniej przez matematyka oraz dowolnej ilości razy i na dowolnych ilościach. Ma być całkowicie automatyczny, niewolnik matematyka, wykonujący jego rozkazy i uwalniający go od męki obliczeniowej. Musi wydrukować wyniki lub jakikolwiek wynik pośredni.
Babbage zamierzał zaprojektować maszynę z repertuarem czterech podstawowych funkcji arytmetycznych, w przeciwieństwie do silnika różnicowego, który używa tylko dodawania., Na zasadzie analogii współczesnego komputera cyfrowego zasadę projektowania silnika analitycznego można podzielić na:
1. Wejście. Od 1836 r. karty perforowane (patrz pobliskie zdjęcie) były podstawowym mechanizmem podawania do maszyny zarówno danych liczbowych, jak i instrukcji manipulowania nimi.
2 . Wyjście. Podstawowym mechanizmem Babbage ' a był zawsze aparat drukujący, ale rozważał również graficzne urządzenia wyjściowe, zanim przyjął karty perforowane zarówno dla wyjścia, jak i wejścia.
3. Pamięć., Dla Babbage ' a była to zasadniczo Liczba osi w sklepie, choć opracował również pomysł hierarchicznego systemu pamięci wykorzystującego karty perforowane dla dodatkowych wyników pośrednich, które nie mogły zmieścić się w sklepie.
4. Jednostka Centralna. Babbage nazwał to młynem., Podobnie jak współczesne procesory, przewidywał przechowywanie liczb obsługiwanych w trybie natychmiastowym( rejestry); mechanizmy sprzętowe do poddania tych liczb podstawowym operacjom arytmetycznym; mechanizmy kontrolne do przekładania instrukcji zorientowanych na użytkownika dostarczanych z zewnątrz na szczegółową kontrolę sprzętu wewnętrznego; oraz mechanizmy synchronizacji (zegar)do wykonywania szczegółowych kroków w starannie zaplanowanej kolejności., Mechanizm sterujący silnika analitycznego musi wykonywać operacje automatycznie i składa się z dwóch części: mechanizmu sterującego niższego poziomu, kontrolowanego przez masywne Bębny zwane beczkami, oraz mechanizmu sterującego wyższego poziomu, kontrolowanego przez perforowane karty, opracowanego przez żakardowe do tkania wzorów Krosna i szeroko stosowanego na początku XIX wieku.
Sekwencja mniejszych operacji wymaganych do wykonania operacji arytmetycznej była kontrolowana przez masywne Bębny zwane beczkami (patrz pobliski rysunek)., Beczki miały kolce przymocowane do zewnętrznej powierzchni w taki sam sposób, jak kołki bębna pozytywki lub organów beczkowych. Beczki uporządkowały wewnętrzne ruchy silnika i szczegółowo określiły, w jaki sposób należy wykonywać mnożenie, dzielenie, dodawanie, odejmowanie i inne operacje arytmetyczne. Lufa pokazana na ilustracji ma tylko kilka pozycji kołków w każdym pionowym rzędzie. W rzeczywistej maszynie beczki były znacznie większe, ponieważ kontrolowały i koordynowały interakcję tysięcy części., Każdy rząd może zawierać aż 200 pozycji kołków, a każda lufa może mieć od 50 do 100 oddzielnych rzędów. Ogólna maszyna miała kilka różnych beczek sterujących różnymi sekcjami. Oczywiście beczki musiały być ściśle ze sobą skoordynowane. W miarę obracania się lufy kołki uruchamiały określone ruchy mechanizmu, a położenie i rozmieszczenie kołków określało działanie i względny czas każdego ruchu. Czynność obracania bębna w ten sposób automatycznie wykonywała sekwencję ruchów w celu przeprowadzenia żądanej operacji wyższego poziomu., Proces jest wewnętrzny dla silnika i logicznie niewidoczny dla użytkownika. Technika jest tym, co w obliczeniach nazywa się teraz mikroprogramem (choć Babbage nigdy nie używał tego terminu), który zapewnia, że operacje niższego poziomu wymagane do wykonania funkcji są wykonywane automatycznie.
W przypadku mechanizmu sterowania wyższego poziomu, Babbage początkowo zamierzał użyć dużej centralnej lufy, aby określić etapy obliczeń. Pomysł ten wydaje się jednak niepraktyczny, ponieważ będzie to wymagało wymiany kołków na super lufie, co może być uciążliwą operacją., Zadanie ręcznego resetowania kołków w centralnym bębnie, aby powiedzieć maszynie, co ma robić, było zbyt kłopotliwe i podatne na błędy, aby było niezawodne. Co gorsza, długość dowolnego zestawu instrukcji byłaby ograniczona rozmiarem bębna.
jego walka z problemem kontroli doprowadziła Babbage ' a do prawdziwego przełomu 30 czerwca 1836 roku. Wyobrażał sobie dostarczanie instrukcji i danych do silnika nie poprzez obracanie kół liczbowych i ustawianie kołków, ale za pomocą kart perforowanych, za pomocą kart, podobnych do tych, stosowanych w krosnach żakardowych. Nie sprawiło to, że centralny Bęben stał się przestarzały ani go nie zastąpił., Karty perforowane zapewniły nowy najwyższy poziom hierarchii sterowania, który regulował pozycjonowanie centralnego bębna. Centralny Bęben pozostał, ale teraz ze stałymi sekwencjami instrukcji. Przyjął on funkcję mikroprogramowania, podobnie jak inne beczki. Jeśli do każdej operacji były oddzielne beczki i centralna beczka do sterowania bębnami operacyjnymi, karta perforowana przedstawia sposób instruowania maszyny (bębna centralnego), jakie operacje chcemy wykonać i w jakiej kolejności, tj. programowanie silnika na wysokim poziomie.,
zasada kart została otwarcie zapożyczona z Krosna żakardowego (mechanicznego Krosna, wynalezionego przez Francuza Josepha Marie Jacquarda na początku 1800 roku, na podstawie wcześniejszych wynalazków jego rodaków Basile Bouchon (1725), Jean Falcon (1728) i Jacques Vaucanson (1740)), który używał ciągu dziurkowanych kart do automatycznego sterowania wzorem splotu (1740)). zobacz pobliskie zdjęcie).
w Krosnie łączono pręty z hakami z drutu, z których każdy mógł podnieść jeden z podłużnych nici nawleczonych między ramę., Pręty były zebrane w prostokątny pęczek, a karty były dociskane pojedynczo do końców prętów. Jeśli otwór zbiegł się z prętem, pręt przeszedł przez kartę i nie podjęto żadnych działań. Jeśli nie było dziury, karta wcisnęła pręt do tyłu, aby aktywować hak, który podniósł powiązaną nić, pozwalając wahadłowcowi, który niósł nić krzyżową, przejść pod nią. Karty były nawleczone zawiasami z drutu, wstążki lub taśmy oraz wachlarzem, składanym w duże stosy, tworząc długie sekwencje., Krosna były często masywne, a operator Krosna siedział wewnątrz ramy, sekwencjonując karty po kolei za pomocą pedału nożnego lub dźwigni ręcznej. Układ dziur na kartach determinował wzór splotu.
jak zaprogramować Silnik analityczny?
niewiele wiemy o pomysłach programistycznych Babbage ' a. Nie ma nic w zachowanych dokumentach, w których ten aspekt maszyny jest dokładnie omawiany, np. nic odpowiadającego specyfikacji zestawu instrukcji użytkownika., Jest to tym bardziej niezwykłe, że jest to jedyny aspekt projektowania, który jest szeroko omawiany we współczesnym papierze. W 1840 roku Babbage odwiedził Turyn we Włoszech i wygłosił serię seminariów na temat silnika analitycznego., Relacja z nich, autorstwa włoskiego inżyniera Federico Luigiego Menabrei (1809-1896, zob. pobliski obraz), który później zostanie premierem Włoch, została przetłumaczona na język angielski przez Adę Lovelace (czasami była uznawana za pierwszego programistę na świecie, romantycznie atrakcyjny obraz bez żadnych podstaw), która dołączała obszerne notatki przygotowane pod ścisłym kierownictwem Babbage ' a (Patrz szkic silnika analitycznego). Dotyczą one znanych nowoczesnych koncepcji przepływu sterowania w programach, w szczególności formułowania prostych pętli i zagnieżdżonych pętli sterowanych przez liczniki., Jednak w artykule i notatkach starannie i celowo pomija się wszelkie dyskusje na temat szczegółów środków, za pomocą których mają one być realizowane.
wydaje się, że Babbage nie znał zagadnień poruszanych przez programowanie na poziomie użytkownika silnika analitycznego. Błędem byłoby wnioskowanie, że Babbage nie rozumiał programowania jako takiego. Mikroprogramowanie beczek do mnożenia i dzielenia pokazuje opanowanie podstawowych idei rozgałęzień i pętli, a jego umiejętności w mikroprogramowaniu dodawania i odejmowania pokazują pełną wirtuozerię., To właśnie na tej podstawie Babbage zgłębiał idee programowania na poziomie użytkownika. Kwestie strukturyzacji danych po prostu nie pojawiły się na poziomie mikroprogramowania. Istnieją pewne dowody sugerujące, że pomysły Babbage ' a poruszały się w kierunkach znanych obecnie w związku z mechanizmami kontroli liczenia pętli w programach na poziomie użytkownika. Gdyby Silnik analityczny został przywrócony do pracy, nie ma wątpliwości, że pomysły programistyczne Babbage ' a byłyby znacznie rozwinięte.,
z punktu widzenia sprzętu potrzebne były dwa ciągi kart perforowanych, aby określić obliczenia, które ma wykonać Silnik analityczny. Jeden ciąg znaków, „karty operacji”, określał operacje arytmetyczne do wykonania. Drugi ciąg, „karty zmiennych”, określał osie w sklepie, które zawierały operandy i miały otrzymywać wyniki., Te dwa ciągi nie mogą być traktowane jako oddzielne części pojedynczej instrukcji, podobnie jak pola operacji i operand instrukcji w elektronicznym komputerze cyfrowym, ponieważ operacja i karty zmiennych były przeznaczone do poruszania się i pętli niezależnie od siebie pod kierunkiem oddzielnych mechanizmów sterowania.
właściwie były cztery, ale nie dwie, różne rodzaje kart perforowanych o różnych funkcjach:
1. Karty liczbowe były używane do określania wartości liczb, które mają być wprowadzone do sklepu, lub do otrzymywania numerów z powrotem ze sklepu do zewnętrznego przechowywania.
2 ., Karty zmiennych określały, które osie w Sklepie mają być źródłem danych podawanych do młyna lub odbiorcą danych z niego zwracanych. W języku współczesnym podawano adres pamięci zmiennych, które mają być użyte.
3. Karty operacji określały funkcje matematyczne do wykonania. Logiczna zawartość karty operacji mogła wyglądać tak: „weź liczby z osi zmiennych określonych przez następne dwie karty zmiennych i pomnóż je w młynie; zapisz wynik na osi zmiennej określonej przez trzecią kartę zmiennej.,”To zostało zinterpretowane przez pręty czujnikowe na urządzeniu do odczytu kart operacyjnych i wewnętrznie przetłumaczone w ten sposób:” Przesuń zmienne karty o jedną pozycję i obróć wszystkie beczki do pozycji wyjściowej dla normalnej sekwencji wielokrotnego przechowywania.”
4. Karty kombinatoryczne kontrolowały, jak zmienne karty i karty operacyjne obracały się do tyłu lub do przodu Po zakończeniu określonych operacji., Tak więc, karta operacji może mieć logiczną zawartość w taki sposób: „Przesuń karty zmiennej do przodu o 25 pozycji i ustaw karty operacji na początek zestawu, który mówi, jak wyodrębnić pierwiastek kwadratowy.”
Babbage planował przeplatać karty kombinatoryczne z kartami operacyjnymi, które kontrolowali, więc cztery zestawy kart wymagały tylko trzech czytników kart (plus jeden dziurkacz kart, aby karty liczbowe były wyprowadzane z maszyny).,
wydaje się, że Babbage doprowadził do oddzielenia operacji i zmiennych kart na gruncie filozoficznym, wynikającym z jego wiary w potrzebę odróżnienia symboli operacji od tych dla ilości w notacjach matematycznych. Poglądy te zostały prawdopodobnie wzmocnione, gdy rozważał karty niezbędne do obliczeń, takich jak rozwiązanie równań symultanicznych. Babbage zdał sobie również sprawę, że programy lub podprogramy (na pewno nie terminy, których używał) będą musiały zostać zweryfikowane, co nazwalibyśmy debugged., Wiedział też, że warto byłoby ponownie uruchamiać zweryfikowane programy na nowych zestawach danych, a nawet udostępniać programy w wielu silnikach. W związku z tym określenie danych jako niezależnych od operacji było naturalnym i praktycznym podejściem. Tam schemat operacji wymaganych do przeprowadzenia redukcji wiersza jest bardzo prosty i łatwo można znaleźć prostą pętlę kart operacji. Nie istnieje taka prosta struktura pętli dla kart zmiennych, która może określać tylko pojedyncze osie w sklepie., Struktury pętli, które teraz rozpoznajemy, dotyczą rzędów macierzy współczynników równań i podobnych pojęć związanych z strukturą danych. Ponieważ Babbage nie miał pojęcia o zmiennej adresowej w sklepie, ani Silnik analityczny nie był w stanie obliczyć lokalizacji operandu w sklepie, nie było sposobu, w jaki programy Użytkownika mogłyby wykorzystać tę strukturę wyższego poziomu w danych.
To niesamowite, jak daleko posunął się Babbage w swojej konceptualizacji programowania, pamiętając, że nie miał doświadczenia w programowaniu rzeczywistego komputera., Z obecnego punktu widzenia, seria kart operacyjnych nie była programem, w obecnych warunkach, ale serią podprogramów. Karty kombinatoryczne zapewniały terminologię, program sterujący przepływem, wywołujący podprogramy z wartościami wywołania po odwołaniu dostarczanymi przez karty zmiennych. Koncepcje programowania Babbage ' a wyraźnie zawierały to, co nazywamy pętlami, podprogramami i gałęziami (co późniejsze pokolenia programistów nazywały instrukcjami „if” lub „if-then”)., Ponieważ jednak nie miał doświadczenia w programowaniu rzeczywistego komputera, nie dziwi fakt, że Babbage nie doszedł do współczesnych koncepcji języków wyższego poziomu, tłumaczy czy kompilatorów.
tabela z kartami i działaniami dla Formuły (ab + c) d
weźmy jako ilustrację formułę (ab+c)d (patrz górna tabela)., Pełny szczegół kart wszelkiego rodzaju wymagane, a kolejność, w jakiej będą one wejść do gry jest taka:
cztery karty liczb dla „podanych numerów” a, b, c I d, nawleczone są ręcznie na rolce, te numery muszą być umieszczone na kolumnach przypisanych do nich w części maszyny zwanej „sklep”, gdzie każda ilość jest najpierw odbierana i przechowywana w gotowości do użycia zgodnie z potrzebami.
dysponujemy więc oprócz kart numerycznych trzema kartami operacyjnymi i czternaście kartami Dyrektywnymi., Każdy zestaw kart byłby nawleczony razem i umieszczony na wałku lub pryzmacie własnego; wałek ten byłby zawieszony i przenoszony do i z. Każdy ruch wsteczny powodowałby przesunięcie pryzmatu o jedną twarz, przynosząc do gry następną kartę, tak jak na Krosnie. Oczywiste jest, że rolki muszą pracować w harmonii, a w tym celu dźwignie, które sprawiają, że rolki obracają się same będą kontrolowane za pomocą odpowiednich środków lub ogólnych kart dyrektywy, a uderzenia zawieszonych rolek zostaną zatrzymane w odpowiednich odstępach czasu.,
ogólny plan silnika analitycznego z 1840 roku (Kliknij, aby zobaczyć większy obraz)
w górnym widoku ogólnym silnika analitycznego można zobaczyć podstawowe sekcje: w prawej części znajduje się sekcja sklepu zawierająca 11 zmiennych osi. W praktyce sklep byłby znacznie dłuższy, z o wiele bardziej zmiennymi osiami; Babbage czasami uznawał minimum 100, a nawet 1000. Każda oś zmienna zawierała wiele kół liczbowych obracających się wokół osi centralnej, z których każda posiadała jedną cyfrę swojej zmiennej., Babbage Zwykle planował mieć 40 cyfr na zmienną. Jedno dodatkowe koło na górze rejestrowało, czy wartość była dodatnia, czy ujemna.
biegnące poziomo między zmiennymi osiami były stojaki, długie paski metalu z zębatymi krawędziami, które przenosiły cyfry w tę i z powrotem między sklepem a młynem. Małe ruchome koła zębate ustawiano albo w celu połączenia danej osi zmiennej z regałami, albo w celu pozostawienia jej niezwiązanej. Jeśli liczba trafiała do młyna, stojaki również byłyby połączone z osią wchodzącą w młyn (oznaczoną)., Stamtąd zostanie przekazana do innej odpowiedniej części młyna. Po zakończeniu pracy młyna na numerach, umieszczano go na osi wyjściowej (oznakowanej). Następnie można go było podłączyć do szaf, które przekazywały numer wzdłuż dowolnej osi zmiennej, która została wybrana do przechowywania wyniku.
Młyn jest lewą sekcją, ułożoną wokół dużego centralnego koła, które łączy jego części. Dla jasności, nie wszystkie aspekty silnika są pokazane na tym diagramie. Może to jednak przesłonić złożoność i rozmiar maszyny. Same koła Centralne miały około 70 cm średnicy., Młyn jako całość miał około 150 cm stóp w każdym kierunku. Magazyn o 100 osiach zmiennych miał mieć około 3 m długości. Oś wchodząca miała własny mechanizm przewijania; dodawanie lub odejmowanie można było tam wykonać, a następnie przejść bezpośrednio do osi wychodzącej w celu przechowywania. Jeśli mnożenie pojawiało się, pierwsze dziewięć wielokrotności dodawano by na osi wejściowej i zapisywano na osiach tabeli, pokazanych jako od T1 do T9.
wyniki pełnego mnożenia lub dzielenia tworzyłyby się na dwóch kolumnach oznaczonych po lewej stronie dużego centralnego koła., Dzięki temu możliwe było utrzymywanie wyników pośrednich w formie podwójnej precyzji. Oznacza to, że jeśli dwie 40-cyfrowe liczby zostaną pomnożone razem, 80 cyfr wyniku może być zachowana na osiach . Kolejny podział przez inną 40-cyfrową liczbę nadal pozwalał na 40 cyfr precyzji w wyniku.
jednym z głównych problemów mechanicznych w silniku analitycznym był problem z przenoszeniem. Początkowo Babbage używał metody opóźnionego przenoszenia sekwencyjnego stosowanej w silniku różnicowym. W tym podstawowym cyklu dodawania następował oddzielny cykl przenoszenia., Cykl przenoszenia najpierw wykonał wszelkie niezbędne przenoszenie na najniższej cyfrze, a następnie przeszedł do następnej wyższej cyfry i tak dalej. Metoda ta działała, ale była powolna, ponieważ transporty były wykonywane oddzielnie dla każdej cyfry. Babbage rozważał posiadanie 30 lub 40 cyfr w każdej kolumnie liczb, więc przeniesienie może trwać znacznie dłużej niż samo dodanie. Tak więc pojedyncze mnożenie może wymagać kilkuset odrębnych kroków dodawania. Było jasne, że czas noszenia musiał zostać skrócony.,
Babbage próbował różnych podejść do optymalizacji wozów, i w ciągu kilku miesięcy przyjął to, co nazwał przewóz przewidujący. Dodatkowe wyposażenie pozwoliło mechanizmowi wózka na jednoczesne wykrycie, gdzie potrzebne są nośniki i gdzie jedno lub więcej kół już przy 9 może spowodować rozprzestrzenianie się przenoszenia przez serię cyfr. Wszystkie transporty można wykonać jednocześnie, niezależnie od liczby cyfr na osi. Opracowanie szczegółów przewidywania powozu zajęło Babbage ' owi wiele lat, dłużej niż jakikolwiek inny pojedynczy aspekt maszyny., Ale to może znacznie przyspieszyć operacje, uzasadniając wysiłek. Mechanizm był zbyt skomplikowany, aby umożliwić mechanizm wózka dla każdej osi dodawania. Babbage został zmuszony do przyjęcia konstrukcji, w której pojedynczy mechanizm wózka może być połączony do woli z dowolną kolumną dodawaną przez centralne koła. Do tego czasu mnożenie było zapewniane za pomocą specjalistycznego sprzętu, a funkcja karetki została usunięta z osi dodawania do bardziej wyspecjalizowanego sprzętu centralnego.,
Babbage szybko zorientował się, że samo dodawanie może być usunięte z osi dodawania i wykonywane przez centralne koła. Osie dodawania po prostu przechowywały cyfry na poszczególnych kołach i w razie potrzeby mogły być połączone lub odłączone od centralnych kół. Babbage rozdzielił maszynę na Część osi magazynowych, którą nazwał Magazynem, i inną sekcję, w której wykonywane były operacje, którą nazwał Młyn
w latach Babbage wykonywał różne projekty dla wielu jednostek silnika, najczęściej w kierunku uproszczenia., Nie wszystkie jednak zmierzały w tym kierunku, ponieważ Babbage bardzo chciał przyspieszyć obliczenia. Przykładem dodawania sprzętu w celu osiągnięcia prędkości było mnożenie przez tabele. W początkowej metodzie mnożenia przez wielokrotne dodawanie liczba cykli dodawania byłaby równa sumie cyfr mnożnika. Tak więc, aby pomnożyć 198814 przez 978, na przykład, 198814 zostanie dodany 24 razy (9 + 7 + 8) , wraz z 3 zmianami.
Babbage planował pracować z liczbami mającymi aż 40 cyfr. Mnożenie dwóch 40-cyfrowych liczb razem może zająć 200 cykli dodawania., Babbage zdał sobie sprawę, że poświęcając kilka cykli na początku długiego mnożenia jakiemuś przygotowaniu, może znacznie przyspieszyć samo mnożenie. Nazwał to mnożenie przez tabelę. W 9 cyklach mógł obliczyć i umieścić na specjalnych osiach stołu w młynie pierwsze 9 całkowych wielokrotności wielościanu. Następnie mógł po prostu wybrać jedną z nich dla każdej cyfry mnożnika i dodać ją do akumulującego się produktu. Mnożenie dwóch 40-cyfrowych liczb zajęłoby wtedy tylko 40 cykli dodawania, plus 9, aby utworzyć tabelę, w sumie 49 cykli dodawania, a nie około 200., Podobna metoda podziału według tabeli może również przyspieszyć podział.
uważa się, że podstawowy projekt silnika analitycznego został ukończony do grudnia 1837 roku, kiedy Babbage w końcu napisał rozszerzoną pracę „o matematycznych mocach silnika obliczeniowego”, w której opisał maszynę. Kontynuował prace projektowe jeszcze przez wiele lat, ale wiązało się to z dopracowaniem szczegółów i alternatywami realizacji, a nie zmianami zasad., W 1837 roku Babbage opracował maszynę, której podstawowa organizacja pozostanie niezmieniona przez wszystkie jego późniejsze prace, a nawet przez cały dalszy rozwój projektowania komputerowego.
Babbage uważał, że silnik analityczny jest uniwersalną maszyną obliczeniową w tym sensie, że mając wystarczająco dużo czasu, może przeprowadzić wszelkie możliwe obliczenia arytmetyczne. Argument ten opiera się na trzech uwagach., Po pierwsze, operacje arytmetyczne na liczbach liczniejszych niż czterdzieści cyfr można zawsze przeprowadzić, dzieląc je na 40-Cyfrowe segmenty, więc ograniczona liczba cyfr na dowolnej osi magazynu nie jest podstawową granicą. Po drugie, obliczenia mogą być określone ciągami operacji i kartami zmiennych o nieograniczonym zakresie, więc nie ma ograniczeń co do wielkości lub złożoności programów. Po trzecie, numery ze sklepu mogą być dziurkowane na kartach liczbowych, a następnie odczytywane z powrotem, a to zapewnia zapasowy sklep o nieograniczonym zakresie, aby pokonać ograniczoną liczbę osi w sklepie.,
Babbage był w pełni świadomy ograniczeń prędkości swojej maszyny. Wiedział, że maszyna teoretycznie umożliwi znacznie bardziej rozbudowane i precyzyjne obliczenia, niż kiedykolwiek próbowano wykonać ręcznie, ale w praktyce byłoby to możliwe tylko przy maszynie, która była wysoce niezawodna i dość szybka. Z wcześniejszych prac wiedział, że niezawodność wymaga, aby koła zębate nie obracały się zbyt szybko. Ogólna prędkość musiała zostać osiągnięta dzięki inteligentnemu projektowi, a nie surowej mocy., To właśnie motywowało ogromną pomysłowość, którą Babbage zainwestował w metody oszczędzające czas, takie jak przewidywanie powozu i mnożenie przez tabelę.
w konstrukcji maszyny z końca 1830 roku, pojedyncze dodanie dwóch 40-cyfrowych liczb zajęłoby około 19 sekund. Ale wiele z tego wymagało przenoszenia liczb między różnymi sekcjami przed lub po faktycznym dodaniu. Babbage wymyślił, jak nakładać się na różne części operacji, gdy więcej niż dwa uzupełnienia miały być wykonywane kolejno. Oznaczało to, że każdy dodatkowy 40-cyfrowy dodatek trwał tylko 3,1 sekundy., Mnożenie i dzielenie zostały podobnie przyspieszone przez sprytny projekt logiczny. Czas trwania zależał od liczby cyfr w cyfrach. Weźmy przypadek pomnożenia 20 cyfr przez 40 cyfr (bardzo wysoki stopień precyzji nawet w obecnych standardach). Przy ciągłym dodawaniu po 3,1 sekundy każdy, proste podejście krok i dodanie zajęłoby prawie 8 minut. Babbage był w stanie zredukować to do mniej niż 2 minut. Obecnie, przy prędkości mikroprocesora mierzonej w milionach mnożenia na sekundę, 2 minuty wydają się niewiarygodnie wolne., Ale było to niezwykłe osiągnięcie ponad sto lat przed obliczeniami elektronicznymi.
Po zakończeniu prac nad projektem silnika analitycznego w 1847 roku, Babbage zwrócił się do projektu silnika różnicowego №2, wykorzystując ulepszone i uproszczone mechanizmy arytmetyczne opracowane dla silnika analitycznego. W 1857 roku Babbage powrócił do projektowania silnika analitycznego. W tej nowej fazie pracy Babbage był aktywnie zainteresowany zbudowaniem silnika analitycznego z własnych zasobów., Konstrukcja logiczna była nieco uproszczona, ale co najważniejsze, zaproponowano znacznie prostsze i tańsze metody implementacji podstawowych mechanizmów. Babbage najpierw eksperymentował z tłoczeniem i prasowaniem blach do produkcji kół zębatych i podobnych części. Później przyjął odlewanie ciśnieniowe do produkcji części—nowo wynalezioną technikę, która nie doczekała się szerokiego zastosowania komercyjnego aż do końca XIX wieku., Babbage zbudował wiele eksperymentalnych modeli mechanizmów wykorzystujących te nowe techniki, a w chwili swojej śmierci w 1871 roku model prostego młyna i mechanizmu drukującego był bliski ukończenia (patrz dolne zdjęcie).,
model maszyny analitycznej Mill of Analytical Engine, zbudowany około 1870 roku (© Science Museum, Londyn)
maszyny liczące Babbage ' a, a także wszystkie powiązane materiały odziedziczył jego najmłodszy ocalały syn, Generał Major Henry Prevost Babbage (1824-1918) (patrz pobliski obraz), który wykazywał duże zainteresowanie twórczością swojego ojca. Jeszcze jako nastolatek Henry i jego starszy brat Dugald spędzali czas w biurze rysunkowym Babbage ' a i uczyli się warsztatowych umiejętności., Henry później nabrał silnego zrozumienia różnic w konstrukcjach silników i silników analitycznych i nawiązał bliską więź ze swoim ojcem, którego odwiedził na urlopie z przedłużonej służby wojskowej w Indiach. Babbage pozostawił swoje rysunki, warsztat i ocalałe fizyczne Relikty silników Henry ’emu, który próbował kontynuować pracę ojca i upublicznić silniki po śmierci Babbage' a.
Henry był przy łóżku ojca, gdy Babbage zmarł w październiku 1871 roku, a od 1872 roku kontynuował pilnie pracę ojca, a następnie z przerwami na emeryturę w 1875 roku., Po złożeniu kilku małych elementów demonstracyjnych dla silnika Difference numer 1 (jeden z nich wysłał na Harvard. W latach trzydziestych XX wieku utwór przyciągnął uwagę Howarda Aikena, twórcy Harvard Mark I).
w 1888 roku Henry zademonstrował na spotkaniu British Association for the Advance of Science sekcję silnika analitycznego, działającą do 29 cyfr, w tym urządzenie do przenoszenia antycypacji.
następnie Henry zbudował eksperymentalny czterofunkcyjny kalkulator dla młyna, ukończywszy go w 1910 roku., Henry postanowił nie kontynuować oryginalnego projektu silnika analitycznego, ale zamiast tego opracować ręcznie obsługiwaną maszynę do dodawania, odejmowania, mnożenia i dzielenia (Kalkulator cztero-funkcyjny), zawierającą mechanizmy zaplanowane dla młyna i mechanizm drukujący silnika (patrz dolne zdjęcie). Używając zmontowanego młyna silnika analitycznego, wykonywał proste obliczenia—w tym przypadku produkował wielokrotności π.,
część młyna i mechanizmu drukującego silnika analitycznego, skonstruowana przez Henry 'ego Babbage' a
chociaż ostatecznie ukończona na początku XX wieku, kiedy Henry sam był starym człowiekiem, ta maszyna wydaje się nigdy nie działała niezawodnie. Co więcej, praca Henry 'ego nad silnikami była solidna, ale bez śmiałości i inspiracji jego ojca, wielkiego Charlesa Babbage' a.
Dodaj komentarz