Первую часть статьи вы можете найти по этой ссылке.
Идея разностной машины посетила Чарльза Бэббиджа то ли 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-м году правительство заказывает у английского инженера создание копии шведской разностной машины. Эта копия впоследствии широко использовалась для вычисления таблиц смертности, по которым страховые компании делали свои начисления.
Несмотря на смерть Чарльза Бэббиджа в 1871-м году, его идеи продолжали жить и воплощались в разностных машинах различных инженерах на разных континентах планеты.
Работая над разностной машиной, Бэббидж пришёл к идее универсальной машины, которая смогла бы решать целый круг математических и инженерных задач. Его идея оказалась настолько оригинальной и опережающей своё время, что её реализация в задуманном виде воплотилась намного позже жизни её автора. Об этой машине, а также о первой программистке, в честь которой был назван язык Ада, и пойдёт речь в следующей части статьи.
Продолжение статьи вы можете найти здесь.