Разностная машина год создания
Паровой компьютер или разностная машина Бэббиджа 1840 года
Где-то в 1800-х годах Чарльз Бэббидж изобрел первый компьютер, тогда слово «компьютер» имело иное значение, и он назвал свое изобретение Разностной машиной или Аналитической машиной. Гениальный изобретатель опережал свое время, но, к сожалению, не завершил свое изобретение, и лишь спустя сто лет был изобретен первый настоящий компьютер, но это уже другая история. А сегодняшняя статья об Аналитической Машине Бэббиджа.
Согласно чертежам Бэббиджа машина должна была состоять из следующих частей:
1. Склад — жесткий диск, память; 2. Мельница — процессор; 3. Паровой двигатель — блок питания; 4. Принтер — принтер; 5. Карты операций — программы; 6. Карты переменных — система адресации; 7. Числовые карты — для ввода чисел; 8. Управляющие барабаны — микропрограммы.
Самовычисляющая машина
В этой статье мы попробуем выяснить устройство Аналитической Машины, но для начала следует отметить, что она принадлежала к распространенному с 1740-х годов семейству «автоматических» (само-) механизмов.
И хотя Бэббидж избегал использования этого понятия, в новостях и изданиях ее описывали именно так:
За завтраком я имела удовольствие сидеть рядом с мистером Бэббиджем, известным в наших кругах изобретателем самовычисляющей машины. Взгляд его кажется столь проницательным, будто он видит науку — или любой другой предмет, ставший объектом его внимания, — насквозь.
Эди Седжвик, 1841 г.
Центробежный регулятор — первый из «самодействующих» механизмов индустриальной эпохи. Кстати, именно он является одной из самых узнаваемых частей парового двигателя.
При разгоне двигателя шары отклоняются от оси под воздействием центробежной силы, из-за этого муфта сдвигается и ограничивает приток пара, а машина замедляет ход. Замедление машины опускает шары и этим открывает клапан — открывается приток пара, цикл замкнулся.
Сама же конструкция Разностной машины была схожа с арифмометрами, и, как арифмометры, Машина состояла из длинной череды зубчатых колес, которые складывают числа, а потом выдают сумму.
Где-то в 1834 году Бэббидж усовершенствовал конструкцию, и благодаря возврату суммы обратно в машину стали доступны более сложные вычисления.
Работа Аналитической машины основывалась именно на «пожирании своего хвоста», и работала система благодаря сложной цепи шестерней, которые управлялись перфокартами и барабанами, вычисляя суммы и отправляя результаты на склад, который состоял из ряда зубчатых колес.
Примерно все взаимодействовало так:
Память: склад
Любому компьютеру, паровому или электронному, необходима возможность хранения данных. В изобретении Бэббиджа он назывался складом, и, как практически вся машина, он состоял из зубчатых колес, расположенных в высоких столбцах. На каждом из столбцов хранилось только одно число не длиннее пятидесяти цифр, а верхнее колесо определяло положительно число или отрицательно.
Согласно моим оценкам, пройдет немало времени, прежде чем эти ограничения перестанут удовлетворять нуждам науки.
Чарльз Бэббидж
На чертежах Бэббиджа склад состоял из двух параллельных рядов высоких числовых столбцов, и в каждом из них хранилось одно число. Одна из сторон склада сообщалась с мельницей.
Кроме зубчатых колес числа могли храниться на числовых картах в виде комбинаций отверстий:
На своих схемах Чарльз изображал ряд столбцов уходящим за край листа и не указывал конечное количество чисел, которые могла бы запоминать заключительная версия Машины.
Рейки и карты переменных для передачи данных
Для передачи чисел со склада в Машину Бэббидж использовал опять зубчатые колеса рейки с длинными зубцами. Каждое из числовых колес склада с помощью шестеренок были связаны с рейками и при их помощи значения передавались на специальный столбец колец, находящийся между мельницей и складом, и таким же образом числа передавались обратно на склад.
Колеса склада А подключено к рейке В с помощью шестеренки. Обнуляясь, колесо слада поворачивает ось ввода до позиции переданного числа.
Для передачи числа с дальнего конца склада требовалась зубчатая рейка длинной в несколько метров.
На картах переменных нанесены адреса на складе, с которых производится выборка чисел. Эти же карты могут быть запрограммированы на получение значений с числовых карт.
Каждый адрес нанесен на карты переменных в виде отверстий, и их сочетание переключает определенные рычаги:
При отсутствии отверстия на перфокарте рычаг не задействован, но как только отверстие появлялось, рычаг соединял шестеренку со скобой. И шестеренка, поднимаясь вместе со скобой, соединяла колесо ввода с зубчатой рейкой.
Мельница вычислений
После попадания чисел в мельницу начинается главная часть работы Машины — арифметические действия, выполняемые снова и снова.
Бэббиджем были разработаны отдельные узлы сложения, вычитания, умножения и деления, а также один из любимых его механизмов — перенос с предварением.
В своих публикациях Бэббидж очеловечивал Машину и про «сквозной перенос» писал:
В случае сквозного переноса Машина способна предвидеть и действовать в соответствии с предвидением.
Чарльз Бэббидж
Конечно, до переноса числа необходимо было сложить, и происходило это примерно так:
Колесо А обнуляется и на нем задается первое число. Второе число задается на колесе В, которое в сцепке с колесом А. Обнуление первого колеса прибавляет число, которое там содержалось, к значению на колесе В.
Возьмем для примера:
Вспомним школьную арифметику, а именно сложение в столбик и перенос единиц. Если расположить цифры обоих чисел по столбцам, как это сделано в Машине, и складывать их по разрядам, то в первом случае не будет переноса, во втором будет перенесена единица, а в третьем сумма будет равна 9, но перенесенная ранее единица инициирует перенос.
Когда Разностная машина работает, можно наблюдать волнообразные движения рычажков переноса в задней части Машины. Волны происходят из-за последовательных переносов единиц снизу вверх с проверкой инициации новых переносов.
Эта штука переносит единицу снизу вверх по одной!
Программы
В то время программ не существовало, ну точнее они уже были придуманы, но тогда они назывались картами операций и выглядели примерно так:
Карта операций
Программами занималась Ада Лавлейс, и, как истинные аристократы, они отдавали приказы барабанам и картам переменных не контактируя с рабочими механизмами. Даже простое сложение задействовало множество деталей, и при помощи большого барабана один рычаг мог задавать любое значение для восьмидесяти других рычагов.
Согласно отверстиям на картах барабан поворачивается к рычагам разными секциями, которые содержат определенный шифр и задействуют разные наборы рычагов.
И хотя барабаны напоминают валики шарманок, действуют они иначе. Вместо непрерывного вращения барабан поворачивается до определенной позиции и затем двигается вперед, толкая и активируя набор необходимых рычагов.
Карты операций управляют и барабанами, и картами переменных, и выглядят примерно так:
Перфокарты
Первой системой, построенной на перфокартах, был жаккардов станок, и именно им вдохновлялся Бэббидж.
Карта Жаккара, 1850 г.
Принцип их работы прост и гениален одновременно: удерживающий перфокарты рычаг опускается, прижимая карту к набору подпружиненных горизонтальных штырьков. Если под штырьком отсутствует отверстие, то карта сдвигает штырек и наклоняет стержень с крючком так, что он цепляется за штифт. Затем штифты движутся вверх вместе с зацепившимися за них крючками.
Логика и циклы
Перфокарты и шестеренки — это великолепно, но не они делают Разностную машину компьютером. Из устройства для обсчета десятичной арифметики Машина превращается в компьютер благодаря небольшой детали — условному рычагу.
Этот рычаг автоматически опускается, если результат вычислений требует дальнейших действий со стороны программы. И если на определенной позиции барабана стоит штифт, а затем рычаг опускается — запускается новый цикл вычислений.
Таким образом, условный рычаг замыкает цикл, и Машина «поедает собственный хвост»: перфокарты управляют барабанами, барабаны Машиной, Машина барабанами, а барабаны перфокартами.
На этом я закончу сегодняшнюю статью. Если у вас есть какие-то дополнения, то я буду рад обсуждениям в комментариях.
Всем хорошего дня и точных вычислений!
Литература:
«Невероятные приключения Лавлейс и Бэббиджа. Почти правдивая история первого компьютера»
Автор: Сидни Падуа
Издательство: Манн, Иванов и Фербер, 2017 г.
ISBN: 978-5-00100-943-6
Аналитическая машина Бэббиджа. Часть вторая — трагическая судьба вычислительной техники XIX века
Первую часть статьи вы можете найти по этой ссылке.
Идея разностной машины посетила Чарльза Бэббиджа то ли 1812, то ли 1813 году. Более точную дату история от нас скрывает. Что же должна была делать задуманная машина?
Для того что бы понять это — придётся вспомнить немного математики.
Как мы помним из предыдущей статьи, машина была задумана для табулирования, то есть вычисления математических таблиц.
Немного теории
Предположим, необходимо табулировать функцию N=n^4 (n=1,2. ).
Рассмотрим нижеприведённую таблицу:
Аргумент (n) | Значение (R1) | Разность №1 (R2) | Разность №2 (R3) | Разность №3 (R4) | Разность №4 (R5) |
1 | 1 | 15 | 50 | 60 | 24 |
2 | 16 | 65 | 110 | 84 | 24 |
3 | 81 | 175 | 194 | 108 | 24 |
4 | 256 | 369 | 302 | 132 | 24 |
5 | 625 | 571 | 434 | 156 | 24 |
6 | 1296 | 1105 | 590 | 180 | |
7 | 2401 | 1695 | 770 | ||
8 | 4096 | 2465 | |||
9 | 6561 |
Первый столбец — это аргумент функции, второй — это значение функции для данного аргумента. Третий столбец — это разность последующих значений функции и предыдущих. То есть строка №1 = 16 – 1, строка №2 = 81-16 и так далее. Проделаем то же самое несколько раз (столбцы «Разность №2», «Разность №3»). Нетрудно заметить, что четвёртые разницы у нас полностью совпали. И это неспроста — если функция является многочленом n-ой степени, то в таблице с постоянным шагом (в нашем примере шаг равен единице) её n-е разности постоянны. Эта маленькая хитрость даёт нам одно преимущество — чтобы найти последующие значение функции, необходимо сложить все разности до четвёртой с текущим значением функции.
Например, 9^4 = 4096+1695+590+156+24 = 6561 (кто не верит, может воспользоваться калькулятором).
Бэббидж предполагал вычислять функции с постоянными шестыми разностями. Для этого машина должна была иметь семь регистров — по регистру для каждой разности и один для результата, и результат должен был получаться в результате семи сложений. Весьма затратный по времени вариант, и Бэббидж придумал способ как его оптимизировать. Он предложил записывать разности нечетного порядка из предыдущей строки, тогда вычислить следующее значение функции можно в два приёма, вычисляя сначала параллельно нечётные разницы, а затем уже чётные и значение функции.
Например, рассчитываем для N=8 на первом этапе R2 = 1105 + 590 = 1695, R4 = 132 + 24 = 156, на втором этапе R1 = 2401 + 1695 = 4096, R3 = 434 + 156 = 590. (Если вы запутались, советую заполнить электронную таблицу и выделить попарно соответствующие ячейки, разглядывая их сумму). Уже в 19 веке люди старались оптимизировать вычисления — и в наши дни стоит брать с них пример!
(Механизм передачи десятков в машине Паскаля, источник — Вокруг Света)
Каждый регистр представлял собой набор из восемнадцати десятичных счетных колёс, аналогичных колёсам машины Паскаля. Вычисление происходило в два этапа — первый этапа сложение без учёта переноса, второй этап — сложение с переносом от младшего разряда к старшему (последовательный перенос). Такая схема переноса требует последовательного сложения всех разрядов с учётом переноса, который мог возникнуть на предыдущей ячейке. Это наиболее простая, но самая неэффективная схема переноса, и Бэббиджа она не устроила. В дальнейшем, работая над аналитической машиной, он разработал схему сквозного переноса.
Для табулирования логарифмической, тригонометрической и прочих функций, таблицу предполагалось разбивать на участки, каждый из которых приближался своим многочленом. Переходя от одного участка к другому, оператор должен был вручную изменить значения разностей. Машина была снабжена звонком, который звонил после выполнения определённого числа шагов. Также разностная машина была снабжена печатающим механизмом, который запечатлевал результат на медной пластине. Такую пластину можно было использовать для неограниченного числа оттисков, при этом исключалась возможность внесения ошибки наборщиком.
Стоит заметить, что идея разностной машины была высказана ещё 1786 году Иоганном Гельфрейхом Мюллером, но он даже не приступал к её постройке, и по всей вероятности Бэббидж ни чего не знал об этой идеи.
Начало работ
К воплощению машины в металле и дереве, Бэббидж приступил в 1820 году. В 1822 году он заканчивает создание малой разностной машины. Она была способна вычислять функции с постоянными вторыми разностями с точностью до восьмого знака.
(Счётные колёса разностной машины Бэббиджа. Источник wikipedia)
Бэббидж начинает всячески популяризировать идею вычисления таблиц с помощью машин. В 1823-м году он получает финансирование от правительства в размере 1500 фунтов и начинает работу над машиной, которая смогла бы табулировать функции с постоянными шестыми разностями с точностью до двадцатого знака. Однако к 1828-му году выделенные средства полностью исчезают, также как и средства, выделенные из собственных доходов. В дальнейшем финансирование и постройка машины продолжаются с переменным успехом, однако к началу 1833 года удаётся закончить и испытать часть машины, которая может табулировать с точностью до пятого знака многочлены с постоянными вторыми разностями.
1833 год был также знаковым, так как в этом году было законченно строительство специального пожарозащищённого здания для машины, как сейчас бы сказали — датацентра. Переезд в новое здание вызвал паузу в создании машины. С одной стороны это создало новые проблемы — главный инженер, работавший над созданием машины, потребовал оплатить простой рабочих. Требование было отклонено, и он немедленно уволил всех рабочих и забрал все инструменты и оборудование, созданные во время работы над машиной, что вполне соответствовало английским законам того времени.
Однако вынужденная пауза привела к тому, что Бэббиджу пришла идея создания машины, которая могла бы вычислять не только таблицы, но и решала бы всё то многообразие задач, с которым сталкиваются инженеры и математики. В 1834-м году Бэббидж разрабатывает основные принципы новой машины, которую он называет аналитической. Однако о ней мы поговорим в следующей части статьи.
Как же обстоят дальнейшие дела с разностной машиной? 1834 год выходит статья доктора Дионисия Ларднера «Вычислительная машина Бэббиджа», в которой весьма подробно описывается принцип и устройство машины. Эта статья побудила двух шведов — Георга и Эдварда Шютца (отца и сына) к созданию своей собственной машины.
Трагический финал
Очередная проблема ждёт нашего героя — 1842-му году правительство отказывается от финансирования постройки разностной машины, т.к. будущие затраты на много превосходят изначально предполагавшийся бюджет.
В сороковых годах Бэббидж безуспешно пытается получить финансирование на достройку машины, которую он к тому времени заметно усовершенствовал, работая над идеями аналитической машины.
В тоже время шведы успешно продолжают работу над своей версией разностной машины, и к 1854 году успешно заканчивают её создание. Демонстрация машины состоялась на всемирной выставке в Париже 1855 году, и Бэббидж всячески приветствовал эту демонстрацию. Его сын Генри подготовил плакаты, поясняющие работу машины.
При жизни Бэббидж так и не смог довести своё детище до конца. Готовая часть машина была отправлена в музей Королевского колледжа, а 1862-м году она неудачно выставлялась на международной выставке в Лондоне, где ей отвели маленькую проходную комнату, откуда она вновь возвращается в музей. На этот раз это был научный музей в Южном Кенсингтоне, так как музей Королевского колледжа отказывался принять машину.
(Рабочая разностная машина в музее компьютерной истории в Маунтейн Вью, Калифорния. Источник wikipedia)
Как не парадоксально, но, не смотря на отказ Бэббиджу, в 1858-м году правительство заказывает у английского инженера создание копии шведской разностной машины. Эта копия впоследствии широко использовалась для вычисления таблиц смертности, по которым страховые компании делали свои начисления.
Работая над разностной машиной, Бэббидж пришёл к идее универсальной машины, которая смогла бы решать целый круг математических и инженерных задач. Его идея оказалась настолько оригинальной и опережающей своё время, что её реализация в задуманном виде воплотилась намного позже жизни её автора. Об этой машине, а также о первой программистке, в честь которой был назван язык Ада, и пойдёт речь в следующей части статьи.
Разностная машина Бэббиджа
Ра́зностная маши́на Чарльза Бэббиджа (альт. перевод Машина различий) — механический аппарат, изобретённый английским математиком Чарльзом Бэббиджем, предназначенный для автоматизации вычислений путём аппроксимации функций многочленами и вычисления конечных разностей. Возможность приближённого представления в многочленах логарифмов и тригонометрических функций позволяет рассматривать эту машину как довольно универсальный вычислительный прибор.
Содержание
История создания
Чарльз Бэббидж, находясь во Франции, познакомился с работами Гаспара де Прони, занимавшего должность руководителя бюро переписи при французском правительстве с 1790 по 1800 гг. Прони, которому было поручено выверить и улучшить логарифмические тригонометрические таблицы для подготовки к введению метрической системы, предложил распределить работу по трём уровням. На верхнем уровне группа крупных математиков занималась выводом математических выражений, пригодных для численных расчётов. Вторая группа вычисляла значения функций для аргументов, отстоящих друг от друга на пять или десять интервалов. Подсчитанные значения входили в таблицу в качестве опорных. После этого формулы отправляли третьей, наиболее многочисленной группе, члены которой проводили рутинные расчёты и именовались «вычислителями». От них требовалось только аккуратно складывать и вычитать в последовательности, определенной формулами, полученными от второй группы. Работы де Прони (так и не законченные ввиду революционного времени) навели Бэббиджа на мысль о возможности создания машины, способной заменить третью группу — вычислителей. В 1822 году Бэббидж опубликовал статью с описанием такой машины, а вскоре приступил к её практическому созданию. Как математику, Бэббиджу был известен метод аппроксимации функций многочленами и вычислением конечных разностей. С целью автоматизации этого процесса он начал проектировать машину, которая так и называлась — разностная. Эта машина должна была уметь вычислять значения многочленов до шестой степени с точностью до 18-го знака.
В том же 1822 году Бэббиджем была построена модель разностной машины, состоящая из валиков и шестерней, вращаемых вручную при помощи специального рычага. Заручившись поддержкой Королевского общества, посчитавшего его работу «в высшей степени достойной общественной поддержки», Бэббидж обратился к правительству Великобритании с просьбой о финансировании полномасштабной разработки. В 1823 году правительство Великобритании предоставило ему субсидию в размере 1500 фунтов стерлингов (общая сумма правительственных субсидий, полученных Бэббиджем на реализацию проекта, составила в конечном счёте 17 000 фунтов стерлингов).
Разрабатывая машину, Бэббидж и не представлял всех трудностей, связанных с её реализацией, и не только не уложился в обещанные три года, но и спустя девять лет вынужден был приостановить свою работу. Однако часть машины все же начала функционировать и производила вычисления даже с большей точностью, чем ожидалось.
Конструкция разностной машины основывалась на использовании десятичной системы счисления. Механизм приводился в действие специальными рукоятками. Когда финансирование создания разностной машины прекратилось, Бэббидж занялся проектированием гораздо более общей Аналитической машины, но затем всё-таки снова вернулся к первоначальной разработке. Улучшенный проект, над которым он работал между 1847 и 1849 годами, носил название Разностная машина номер 2 (англ. Difference Engine No. 2 ).
Основываясь на работах и советах Бэббиджа, шведский издатель, изобретатель и переводчик Пер Георг Шойц (швед. Georg Scheutz ) начиная с 1854 года сумел построить несколько разностных машин и даже сумел продать одну из них канцелярии английского правительства в 1859 году. В 1855 году Разностная машина Шойца получила золотую медаль Всемирной выставки в Париже. Спустя некоторое время другой изобретатель Мартин Виберг (швед. Martin Wiberg ) улучшил конструкцию машины Шойца и использовал её для расчёта и публикации печатных логарифмических таблиц.
В период 1989 по 1991 год к двухсотлетию со дня рождения Чарльза Бэббиджа на основе его оригинальных работ в лондонском Музее Науки была собрана работающая копия разностной машины номер 2. В 2000 году в том же музее заработал принтер, также придуманный Бэббиджем для своей машины. После устранения обнаруженных в старых чертежах небольших конструкционных неточностей, обе конструкции заработали безупречно. Эти эксперименты подвели черту под долгими дебатами о принципиальной работоспособности конструкций Чарльза Бэббиджа (некоторые исследователи полагают, что Бэббидж умышленно вносил неточности в свои чертежи, пытаясь таким образом защитить свои творения от несанкционированного копирования).
Аналитическая машина
Несмотря на то, что разностная машина не была построена её изобретателем, для будущего развития вычислительной техники главным явилось другое: в ходе работы у Бэббиджа возникла идея создания универсальной вычислительной машины, которую он назвал аналитической и которая стала прообразом современного компьютера. В единую логическую схему Бэббидж увязал арифметическое устройство (названное им «мельницей»), регистры памяти, объединенные в единое целое («склад»), и устройство ввода/вывода, реализованное с помощью перфокарт трёх типов. Перфокарты операций переключали машину между режимами сложения, вычитания, деления и умножения. Перфокарты переменных управляли передачей информации со «склада» на «мельницу» и обратно. Числовые перфокарты могли быть использованы как для ввода данных в машину, так и для сохранения результатов вычислений, если место на «складе» было ограничено.
Влияние на культуру
В 1990 году Майклом Флинном был написан фантастический роман «В стране слепых» (англ. In the Country of the Blind ), в котором рассказывается о некой тайной организации, с помощью усовершенствованных аналитических машин Чарльза Бэббиджа математически рассчитывавшую возможное развитие событий и таким образом получившую возможность влиять на ход истории.
В 1992 году Брюсом Стерлингом и Уильямом Гибсоном написан фантастический роман в стилистике стимпанка «Машина различий» (англ. The Difference Engine ), где также описывается разностная машина.