$30 off During Our Annual Pro Sale. View Details »

История автоматических вычислителей: разностная и аналитическая машины Чарльза Бэббиджа

Anton
November 16, 2023

История автоматических вычислителей: разностная и аналитическая машины Чарльза Бэббиджа

Лекция курса "Языки и методы программирования"
История автоматических вычислителей: разностная и аналитическая машины Чарльза Бэббиджа
- Разностный метод вычисления полинома
- Разностная машина Чарльза Бэббиджа
- Аналитическая машина Чарльза Бэббиджа
- Разностная машина Шульца
- Реконструкция оригинальной разностной машины
- Продолжатели аналитической машины
- Стимпанк и элементная база вычислительной механики

18 октября 2023 (ранние версии: осень 2021, 2022)

Anton

November 16, 2023
Tweet

More Decks by Anton

Other Decks in Education

Transcript

  1. Разностная и аналитическая
    машины Чарльза Бэббиджа

    View Slide

  2. У нас есть

    Арифметика на механике

    Механические программируемые устройства

    Что будет, если совместить механические
    вычисления и механическое программирование?

    Получим программируемый механический
    вычислитель (механический компьютер)?

    View Slide

  3. Чарльз Бэббидж (1791 — 1871)

    View Slide

  4. Разностная машина

    View Slide


  5. Бэббидж проверял астрономические
    таблицы с ошибками и захотел, чтобы эту
    работу выполнял пар (паровой двигатель)

    работа большая, рутинная, утомительная,
    легко ошибиться

    View Slide

  6. The idea of an automatic calculating machine first came to
    Babbage about 1820. In one account, written many years later, he
    describes how he was engaged with his friend, the astronomer
    John Herschel, in proofreading a set of tables prepared for
    astronomical calculations. In a moment of exasperation with the
    errors they found, Babbage remarked, "I wish to God these
    calculations had been executed by steam." Herschel 's reply, "It
    is quite possible" set Babbage thinking and in a short time, a few
    days, he had formulated the general idea of the machine that
    later became known as the Difference Engine.

    View Slide

  7. Разностная машина

    Вычисляет полиномы (произвольной степени?),
    используя последовательность операций сложения

    Полином может приближать произвольную
    математическую функцию на заданном отрезке с любой
    заданной точностью:

    Берем точки замеров необходимой функции, строим
    через них полином нужной степени, вычисляем
    значения полинома в промежуточных точках
    (интерполируем)

    View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. Разностная машина

    Предполагалось, что такая машина сможет
    автоматически вычислять значения
    нужной функции на заданном интервале с
    заданным шагом,

    т. е. составить таблицу значений этой
    функции (табулирование — sub-tabulation)

    View Slide

  12. Разностный метод
    вычисления полинома

    Вычисляется полином любой степени

    Используются только операции сложения

    View Slide

  13. Алгоритм

    Пусть есть полином 2-й степени:
    T(x) = a * x^2 + b * x + c

    При заданных параметрах a, b, c нужно вычислить
    последовательные значения полинома в точках:
    x = 0, 1, 2, 3, …, 100, …

    (описание алгоритма: William Aspray, Computing before computers)

    View Slide

  14. Алгоритм

    Возьмем полином: a = 1, b = 1, c = 41
    T(x) = x^2 + x + 41

    Вычислим значения T(x) в 3-х точках вручную:
    x=0: T(0) = 0^2 + 0 + 41 = 41
    x=1: T(1) = 1 + 1 + 41 = 43
    x=2: T(2) = 2^2 + 2 + 41 = 47

    View Slide

  15. Алгоритм

    Вычислим разности Δ [дельта] текущего значения T с предыдущим:
    Δ
    1,0
    = T(1) - T(0) = 43 - 41 = 2
    Δ
    2,1
    = T(2) - T(1) = 47 - 43 = 4

    Вычислим разности Δ2 [дельта] второго порядка — текущего значения
    Δ с предыдущим:
    Δ2 = Δ
    2,1
    - Δ
    1,0
    = 2

    Легко убедиться, что разности 2-го порядка для заданного полинома
    2-й степени будут повторяться (для полиномов высшего порядка
    постоянной останется разность высшей степени)

    View Slide

  16. Алгоритм

    Теперь можем вычислить очередное значение Δ [дельта] по
    формуле:
    Δ
    3,2
    = Δ
    2,1
    + Δ2 = 4 + 2 = 6

    А очередное (ранее неизвестное) значение T(x=3) по
    формуле:
    x=3: T(3) = T(2) + Δ
    3,1
    = 47 + 6 = 53

    Далее итеративно можно вычислить T(4), T(5), T(6) и т. п. до
    любого заданного x

    View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide


  24. Полином может численно приближать любую функцию
    непрерывную на заданном отрезке с заданной точностью

    (нужно только подобрать степень и параметры полинома)

    На исходной функции выбирается некоторое количество
    известных точек, через них проводится полином нужной
    степени

    Использовался для табулирования функций (составления
    таблиц значений функций) в те времена, когда не было
    инструментов для их автоматического вычисления
    Польза

    View Slide

  25. Таблицы значений функций

    Таблицы значений функций — важный инструмент
    математиков, инженеров и некоторых других людей того
    времени

    Например:
    - может быть кто-то застал в школе таблицы Брадиса для
    тригонометрических функций)
    - Джон Непер вместе со своим описанием логарифма
    опубликовал обширную таблицу его значений
    (Чарльз Бэббидж позднее сделал исправленную версию)

    View Slide


  26. Сейчас в них нет потребности, т.к. значение
    синуса даст с высокой точностью калькулятор

    Но тогда не было калькуляторов
    (механические не считали синусы)

    Представьте, как бы вы считали значения
    формул с синусами без калькулятора

    View Slide

  27. Таблицы для навигации в море

    Нужно пересчитывать каждый год

    Ошибки фатальны

    Экономика Британии базировалась на
    международной торговле, т. е. морские пути
    доставки имели значение

    View Slide

  28. Разностная машина

    Первая версия машины посчитала 30
    значений за две с половиной минуты

    К сожалению, устройство не сохранилось,

    Рисунки тоже были утеряны

    View Slide


  29. На создание новой улучшенной версии
    получил грант от британского правительства

    Поручил разработку механической части
    инженеру (Joseph Clement)

    Работа была сложная, на тот момент —
    нетипичная

    View Slide


  30. Например, в процессе работы придумали
    стандартизированную резьбу — польза для
    всей промышленности

    Но инженер заканчивать не торопился —
    деньги шли на разработку и это его устраивало

    В процессе подключили минимум еще одного
    инженера

    View Slide


  31. Работа затянулась на несколько лет

    Отношения с инженером стали напряженными

    Часть машины была собрана, детали для
    оставшейся части были изготовлены, но не
    собраны в готовое устройство

    Финансирование закончилось, Бэббидж
    потерял интерес и забросил проект

    View Slide


  32. Одна из особенностей экземпляра — достаточно
    большие пропорции, не оправданные
    технологиями того времени

    Это вызывало дополнительные сложности и
    (скорее всего?) удорожало производство и сборку

    Возможно, являлось одной из причин
    незавершенности проекта

    View Slide


  33. Большие пропорции скорее всего в угоду
    ожиданиям британского ВМФ (naval)
    - (военные любят конструкции побольше)
    - опять вспоминаем про военные деньги
    - ну да, речь же о печати таблиц для морской
    навигации

    View Slide


  34. Интересно, что в качестве составной части
    разностной машины предполагался
    «принтер»

    Он должен был «выводить» вычисленные
    значения сразу в виде таблицы

    Не печатать, а выдавливать/выбивать (?)
    цифры шрифтов на мягком металле

    View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. Фрагменты машины, созданные
    при жизни Бэббиджа

    View Slide

  39. View Slide

  40. View Slide

  41. Современная действующая
    реконструкция

    View Slide

  42. View Slide

  43. View Slide

  44. View Slide

  45. View Slide

  46. View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. View Slide

  51. View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. View Slide


  56. Разностная машина Бэббиджа
    www.youtube.com/watch?v=swoZor5nxkQ
    (сотрудница музея крутит ручку машины)

    Разностная машина Бэббиджа
    www.youtube.com/watch?v=G4n7jXKE3lw
    (мини-фильм, много красивых крупных планов)

    View Slide

  57. Кстати (между делом)

    Полином — универсальный аппроксиматор

    Разностная машина — аппаратная реализация
    универсального аппроксиматора

    Нейронные сети — это тоже универсальные
    аппроксиматоры (просто другая формула)

    В этом смысле можно рассуждать об исторической
    преемственности от разностной машины Бэббиджа к
    современным аппаратным ускорителям нейронных
    сетей «нейро-чипам»

    View Slide

  58. Аналитическая машина

    View Slide

  59. Аналитическая машина

    Долго ли, коротко ли, пришла в голову идея расширить
    возможности машины новыми операциями

    И желательно так, чтобы можно было вычислить вообще любую
    формулу

    Конструкция разностной машины уже не подходила

    Начал конструировать новую и увлекся с головой

    Сделал более 200 чертежей ее различных узлов и около 30
    вариантов общей компоновки машины.

    При этом было использовано более 4 тысяч «механических
    обозначений»

    View Slide

  60. Although Babbage's exact train of thought at this
    stage is unknown, it seems that he first realized that
    multiplication could be carried out by repeated
    addition if the ability to step numbers up or down on
    the axes (multiply or divide by ten) was provided.
    Division can be performed as repeated subtraction
    but it is a "tentative" process, for we need to be able
    to examine the result of one subtraction, whether
    positive or negative, before knowing what to do next.

    View Slide

  61. View Slide

  62. View Slide


  63. вычислительный конвейер pipeline

    модуль сложения как компонента

    исполнительный механизм («мельница» — mill)
    отделен от памяти

    перенос данных между блоками
    (регистры/память)

    ветвление и циклы

    перфокарты из жаккардовского станка

    View Slide


  64. Целочисленная арифметика

    Блок памяти

    Десятичное представление чисел — ок для
    механики

    (при этом рассматривал различные основания
    системы счисления — от 2 до 100)

    View Slide


  65. 40 десятичных знаков в числе

    от ста до тысячи чисел (десятичных) в памяти

    (по разным замечаниям, с учетом скорости
    работы — реалистичный вариант 100)

    (в этом случае длина хранилища была бы 3
    метра в длину)

    View Slide

  66. Фиксатор разряда

    Проблема: шестеренки вращаются с люфтом

    На большом устройстве с большим количеством соединений это
    приведет к ошибкам

    Бэббиддж предусмотрел специальный механизм — фиксатор
    шестеренок в нужном положении (с использованием пружинок)

    (аналогичный по смыслу механизм используется в современных
    компьютерах)

    Изобретение этого механизма говорит о том, что Бэббидж серьезно
    подошел к делу и это в значительной степени повысило бы шансы
    на то, что машина могла бы заработать в том случае, если бы она
    была собрана

    View Slide

  67. Упреждающая каретка

    anticipating carry — упреждающая «каретка» (?)

    перемещающийся механизм-повозка (каретка?) с
    эффектом предсказания (будет находиться на
    той позиции, где скорее всего потребуется)

    (предиктивное исполнение команд на
    конвейере внутри современных процессоров?)

    View Slide

  68. Центральный процессор

    Мельница: CPU — центральный процессор

    80 знаков на остаток или произведение
    (внутренний регистр?)

    Управляющий механизм — бочка (как у
    шарманки)

    Есть только относительная адресация, нет
    абсолютных адресов

    View Slide

  69. View Slide

  70. Набор операций (архитектура)

    полный набор операций неизвестен

    архитектура (набор команд) не описана, можно только
    гадать по чертежам

    есть сложение, вычитание, умножение, деление

    были варианты умножений и делений, для которых не
    нужны все знаки (вероятно, для ускорения отдельных
    формул)

    в одной из ранних версий извлечение корня было
    атомарной операцией

    View Slide

  71. Ввод данных и программы

    Программа записана на перфорированной
    ленте (как у жаккардового станка)

    Операции отдельно от переменных (две разные
    ленты)

    Но как единую инструкцию их рассматривать не
    корректно, т.к. двигаются независимо

    View Slide

  72. View Slide

  73. Скорость работы (оценочная)

    Умножение и деление: 1-2 минуты (1/60 Герц)

    Сложение и вычитание (без вспомогательных
    операций переноса значений): 2-3 секунды
    (1/2 Гц)

    View Slide

  74. Вывод: перфокарта и принтер

    В аналитической машине предполагалось выводить
    результат не на принтер, а кодировать на перфокарте

    Принтер предполагался как отдельное устройство

    В качестве исходных данных он бы брал
    перфорированные листы, продырявленные
    аналитической машиной

    (перфокарта как промежуточный носитель информации
    для переноса данных между устройствами)

    View Slide

  75. Воплощение машины (нет)

    При жизни изготовил отдельные экспериментальные узлы

    Но целиком машина не была сделана

    Читал лекции, больше посвященные математическим
    аспектам (записаны слушателями)

    Полного описания не оставил

    Осталось множество чертежей

    Работающая модель не была воспроизведена до сих пор

    View Slide

  76. View Slide

  77. Литература: источники

    Документы и книги самого Чарльза Бэббидджа

    Эпизоды из жизни философа, Чарльз Бэббидж, 1864
    en.wikisource.org/wiki/Passages_from_the_Life_of_a_Philosopher

    Babbage’s Calculating Engines, Being a Collection of Papers Relating
    to Them; Their History, and Construction. Charles Babbage, Edited by
    Henry P. Babbage, первое издание 1889 (переиздана в 2010)
    libgen.lc/edition.php?id=136443931
    - Содержит: документы Чарльза Бэббиджа, выдержки из книг и
    публикаций Бэббидджа, перевод описания аналитической машины
    с комментариями Ады Лавлейс, фрагменты чертежей
    аналитической машины

    View Slide

  78. View Slide


  79. Возможности работы аналитической машины с точки
    зрения «программиста» были описаны Луиджи
    Федерико Менамбреа и Адой Августой Лавлейс

    Короткая история: Луиджи Федерико Менамбреа
    конспектировал лекции Бэббиджа, опубликовал статью
    на французском языке. Ада Лавлейс перевела статью на
    английский язык, добавила свои замечания по размеру и
    ценности не меньше, чем оригинал статьи, привела в
    качестве примера алгоритм вычисления математической
    формулы на аналитической машине, которая вошла в
    историю как первая компьютерная программа

    Длинная история: разберем на отдельной лекции

    View Slide

  80. Замечание

    После прочтения некоторых статей про разностную и
    аналитическую машину складывается впечатление, что
    Чарльз Бэббидж, хотя и опередил время своими
    изобретениями, в целом, потерпел неудачу в жизни

    В действительности, хотя он сам считал эти устройства
    важнейшими своими работами, его инженерное и научное
    наследие ими далеко не ограничивается

    Он написал несколько работ по математике, в т.ч. составлял
    математические таблицы

    Много путешествовал, при этом решая разнообразные
    научные задачи

    View Slide

  81. Замечание

    Изучал физиологию животных и человеческого тела (проводил над
    собой эксперименты)

    Спустился под воду в водолазном колоколе и после этого
    сконструировал двухместную подводную лодку

    Поднимался на действующий вулкан Везувий

    Спускался в шахты, принимал участие в археологических
    раскопках

    Изучая вопрос безопасности на железных дорогах, изобрел
    спидометр

    Оставил после себя множество изобретений

    (в общем, типичный герой — профессор из романов Жюля Верна)

    View Slide

  82. Кстати

    Подробным описанием устройства машин Чарльза Бэббиджа мы
    обязаны инженеру и историку Allan G. Bromley
    en.wikipedia.org/wiki/Allan_G._Bromley

    А так же истории и описанию множества механических
    вычислителей

    Он так же является автором первой (?) работающей реконструкции
    антикитерского механизма, которую он сделал, опираясь на
    рентгеновские снимки

    Правда, он включил в конструкцию дифференциал (шестеренка
    особой формы?), в более поздней реконструкции на основе
    томографа пришли к выводу, что этого механизма там не было

    View Slide

  83. Далее

    View Slide

  84. Разностная машина Шульца

    View Slide

  85. Разностная машина Шульца

    Работающая разностная машина

    Изготовлена в Швеции в 1840-м году, Георг Шульц

    Изготовлена под прямым влиянием разностной
    машины Бэббиджа по описанию, но некоторые
    элементы конструкции значительно отличались

    View Slide


  86. Через некоторое время Шульц представил
    работающую машину на выставке в Англии

    Демонстрация пользовалась успехом

    Бэббидж поддержал их выступление

    View Slide


  87. Была заказана копия машины для нужд
    Англии

    Бэббидж был подключен к созданию этого
    экземпляра

    Готовую версию использовали для подготовки
    астрономических таблиц и для английских
    таблиц доживаемости (English life table)

    View Slide


  88. В целом, работа была сделана

    Габариты — значительно меньше, чем машина
    Бэббиджа (косвенно подтверждает предположение о
    том, что Бэббидж делал механизм излишне большим)

    Но машины оказались довольно капризными и
    ненадежными в эксплуатации

    Кроме всего прочего, в них не был предусмотрен
    механизм фиксации разрядов (как в аналитической
    машине Бэббиджа), что добавляло вероятность ошибки
    из-за сместившихся позиций шестеренок

    View Slide


  89. Принтер был реализован и работал

    Но только в упрощенном варианте

    Выводил все результаты в столбик

    Формирование таблицы оставалось на
    работу верстальщика

    (вполне здравый подход для концепции
    итерационной разработки)

    View Slide

  90. View Slide

  91. View Slide

  92. Реконструкция оригинальной
    разностной машины

    View Slide

  93. ru.wikipedia.org/wiki/Разностная_машина_Чарльза_Бэббиджа

    В период с 1989 по 1991 год к двухсотлетию со дня
    рождения Чарльза Бэббиджа на основе его оригинальных
    работ в лондонском Музее науки была собрана
    работающая копия разностной машины № 2.

    В 2000 году в том же музее заработал принтер, также
    придуманный Бэббиджем для своей машины.

    После устранения обнаруженных в старых чертежах
    небольших конструктивных неточностей обе конструкции
    заработали безупречно

    View Slide

  94. Действующая модель разностной машины
    Бэббидджа (построена по чертежам 1989 — 1991)

    View Slide

  95. View Slide

  96. View Slide

  97. Для сравнения: фрагмент
    аналитической машины времен
    Бэббиджа:

    View Slide

  98. View Slide

  99. Продолжатели аналитической
    машины

    Всего две попытки в 20-м веке

    In Ireland an analytical engine was designed by Percy Ludgate about
    1905. Initially this work was independent of Babbage's but later Ludgate
    came to know and be influenced by Babbage's ideas. The design, which
    was purely mechanical, contains some striking features.
    - объединил код операции и аргументы

    Very interesting designs of analytical engines were made in Spain in the
    1910s and 1920s by Leonardo Torres y Quevedo.
    - до конца не довел

    View Slide

  100. Итог

    View Slide

  101. Замечание-1

    Как оказалось, задача просчета таблиц хотя и требовала
    автоматизации, вручную все-таки решалась приемлемыми силами

    Механические вычислители справлялись с задачей, но были
    крайне капризны в работе и обслуживании, что сводило на нет
    выигрыш от скорости вычислений

    С третьей стороны, перечисленные недостатки могли быть
    исправлены в новых версиях вычислителей

    Но, судя по всему, решение указанных задач не казалось
    настолько важным, чтобы вкладывать значительные средства в
    разработку новых версий вычислителей

    View Slide

  102. Замечание-2

    Хотя некоторые исследователи выражают сомнение
    в том, что аналитическая машина Бэббиджа могла
    быть изготовлена по технологиям его времени,

    Автор исследования (Аллан Г. Бромли) считает, что
    точность изготовления была вполне достаточной

    Проработанность таких деталей, как фиксатор
    положения шестеренок, в значительной степени
    увеличивала шансы на успех

    View Slide

  103. Замечание-2

    Сам Бэббидж экспериментировал с изготовлением
    шестеренок штамповкой листового металла

    Однако, мы видим, что такая элементная база, как
    шестеренки, в такого рода устройствах если не
    перешагивает, то приближается к своему технологическому
    потолку

    Для того, чтобы в полной мере реализовать заложенные в
    таких вычислителях идеи, требуется новая элементная база

    View Slide

  104. Стимпанк и элементная база

    Но можно и пофантазировать: если бы Бэббидж довел
    дело по построению аналитической машины до конца, мы
    бы увидели несколько поколений аналитических движков на
    механике шестеренок

    Это были бы вычислители, близкие по возможностям к
    некоторым современным приложениям автоматических
    вычислений

    Может, не времен смартфонов и не времен персональных
    компьютеров, но времен вычислителей, занимающих целые
    комнаты в датацентрах, — вполне реально

    View Slide

  105. View Slide

  106. View Slide

  107. View Slide

  108. View Slide


  109. Фантастические картинки в эстетике
    стимпанка (шестеренки плюс паровые
    машины) могли бы оказаться не совсем
    такими сказочными, как кажется на первый
    взгляд

    View Slide


  110. Но даже в таком случае ограничения
    элементной базы быстро дали бы о себе знать:

    исполинские шестереночные конструкции
    раздавят себя собственным весом

    если что-то заест, будет крайне проблематично
    такой механизм «перезагрузить», т. е.
    перевести в исходное состояние

    View Slide


  111. Для новых поколений вычислителей нужна новая
    элементная база:

    материальный базис, обусловленный научно-
    техническим прогрессом.

    Такая элементная база существовала (как мы уже
    знаем сейчас), более того, её развитие
    происходило уже во времена Бэббиджа…

    (об этом на следующих лекциях)

    View Slide