Upgrade to Pro — share decks privately, control downloads, hide ads and more …

История автоматических вычислителей: разностная...

Anton
November 16, 2023

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

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

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

Anton

November 16, 2023
Tweet

More Decks by Anton

Other Decks in Education

Transcript

  1. У нас есть • Арифметика на механике • Механические программируемые

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

    эту работу выполнял пар (паровой двигатель) • работа большая, рутинная, утомительная, легко ошибиться
  3. 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.
  4. Разностная машина • Вычисляет полиномы (произвольной степени?), используя последовательность операций

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

    значения нужной функции на заданном интервале с заданным шагом, • т. е. составить таблицу значений этой функции (табулирование — sub-tabulation)
  6. Алгоритм • Пусть есть полином 2-й степени: T(x) = a

    * x^2 + b * x + c • При заданных параметрах a, b, c нужно вычислить последовательные значения полинома в точках: x = 0, 1, 2, 3, …, 100, … • (описание алгоритма: William Aspray, Computing before computers)
  7. Алгоритм • Возьмем полином: 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
  8. Алгоритм • Вычислим разности Δ [дельта] текущего значения 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-й степени будут повторяться (для полиномов высшего порядка постоянной останется разность высшей степени)
  9. Алгоритм • Теперь можем вычислить очередное значение Δ [дельта] по

    формуле: Δ 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
  10. • Полином может численно приближать любую функцию непрерывную на заданном

    отрезке с заданной точностью • (нужно только подобрать степень и параметры полинома) • На исходной функции выбирается некоторое количество известных точек, через них проводится полином нужной степени • Использовался для табулирования функций (составления таблиц значений функций) в те времена, когда не было инструментов для их автоматического вычисления Польза
  11. Таблицы значений функций • Таблицы значений функций — важный инструмент

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

    с высокой точностью калькулятор • Но тогда не было калькуляторов (механические не считали синусы) • Представьте, как бы вы считали значения формул с синусами без калькулятора
  13. Таблицы для навигации в море • Нужно пересчитывать каждый год

    • Ошибки фатальны • Экономика Британии базировалась на международной торговле, т. е. морские пути доставки имели значение
  14. Разностная машина • Первая версия машины посчитала 30 значений за

    две с половиной минуты • К сожалению, устройство не сохранилось, • Рисунки тоже были утеряны
  15. • На создание новой улучшенной версии получил грант от британского

    правительства • Поручил разработку механической части инженеру (Joseph Clement) • Работа была сложная, на тот момент — нетипичная
  16. • Например, в процессе работы придумали стандартизированную резьбу — польза

    для всей промышленности • Но инженер заканчивать не торопился — деньги шли на разработку и это его устраивало • В процессе подключили минимум еще одного инженера
  17. • Работа затянулась на несколько лет • Отношения с инженером

    стали напряженными • Часть машины была собрана, детали для оставшейся части были изготовлены, но не собраны в готовое устройство • Финансирование закончилось, Бэббидж потерял интерес и забросил проект
  18. • Одна из особенностей экземпляра — достаточно большие пропорции, не

    оправданные технологиями того времени • Это вызывало дополнительные сложности и (скорее всего?) удорожало производство и сборку • Возможно, являлось одной из причин незавершенности проекта
  19. • Большие пропорции скорее всего в угоду ожиданиям британского ВМФ

    (naval) - (военные любят конструкции побольше) - опять вспоминаем про военные деньги - ну да, речь же о печати таблиц для морской навигации
  20. • Интересно, что в качестве составной части разностной машины предполагался

    «принтер» • Он должен был «выводить» вычисленные значения сразу в виде таблицы • Не печатать, а выдавливать/выбивать (?) цифры шрифтов на мягком металле
  21. • Разностная машина Бэббиджа www.youtube.com/watch?v=swoZor5nxkQ (сотрудница музея крутит ручку машины)

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

    машина — аппаратная реализация универсального аппроксиматора • Нейронные сети — это тоже универсальные аппроксиматоры (просто другая формула) • В этом смысле можно рассуждать об исторической преемственности от разностной машины Бэббиджа к современным аппаратным ускорителям нейронных сетей «нейро-чипам»
  23. Аналитическая машина • Долго ли, коротко ли, пришла в голову

    идея расширить возможности машины новыми операциями • И желательно так, чтобы можно было вычислить вообще любую формулу • Конструкция разностной машины уже не подходила • Начал конструировать новую и увлекся с головой • Сделал более 200 чертежей ее различных узлов и около 30 вариантов общей компоновки машины. • При этом было использовано более 4 тысяч «механических обозначений»
  24. 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.
  25. • вычислительный конвейер pipeline • модуль сложения как компонента •

    исполнительный механизм («мельница» — mill) отделен от памяти • перенос данных между блоками (регистры/память) • ветвление и циклы • перфокарты из жаккардовского станка
  26. • Целочисленная арифметика • Блок памяти • Десятичное представление чисел

    — ок для механики • (при этом рассматривал различные основания системы счисления — от 2 до 100)
  27. • 40 десятичных знаков в числе • от ста до

    тысячи чисел (десятичных) в памяти • (по разным замечаниям, с учетом скорости работы — реалистичный вариант 100) • (в этом случае длина хранилища была бы 3 метра в длину)
  28. Фиксатор разряда • Проблема: шестеренки вращаются с люфтом • На

    большом устройстве с большим количеством соединений это приведет к ошибкам • Бэббиддж предусмотрел специальный механизм — фиксатор шестеренок в нужном положении (с использованием пружинок) • (аналогичный по смыслу механизм используется в современных компьютерах) • Изобретение этого механизма говорит о том, что Бэббидж серьезно подошел к делу и это в значительной степени повысило бы шансы на то, что машина могла бы заработать в том случае, если бы она была собрана
  29. Упреждающая каретка • anticipating carry — упреждающая «каретка» (?) •

    перемещающийся механизм-повозка (каретка?) с эффектом предсказания (будет находиться на той позиции, где скорее всего потребуется) • (предиктивное исполнение команд на конвейере внутри современных процессоров?)
  30. Центральный процессор • Мельница: CPU — центральный процессор • 80

    знаков на остаток или произведение (внутренний регистр?) • Управляющий механизм — бочка (как у шарманки) • Есть только относительная адресация, нет абсолютных адресов
  31. Набор операций (архитектура) • полный набор операций неизвестен • архитектура

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

    (как у жаккардового станка) • Операции отдельно от переменных (две разные ленты) • Но как единую инструкцию их рассматривать не корректно, т.к. двигаются независимо
  33. Скорость работы (оценочная) • Умножение и деление: 1-2 минуты (1/60

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

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

    • Но целиком машина не была сделана • Читал лекции, больше посвященные математическим аспектам (записаны слушателями) • Полного описания не оставил • Осталось множество чертежей • Работающая модель не была воспроизведена до сих пор
  36. Литература: источники • Документы и книги самого Чарльза Бэббидджа •

    Эпизоды из жизни философа, Чарльз Бэббидж, 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 - Содержит: документы Чарльза Бэббиджа, выдержки из книг и публикаций Бэббидджа, перевод описания аналитической машины с комментариями Ады Лавлейс, фрагменты чертежей аналитической машины
  37. • Возможности работы аналитической машины с точки зрения «программиста» были

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

    машину складывается впечатление, что Чарльз Бэббидж, хотя и опередил время своими изобретениями, в целом, потерпел неудачу в жизни • В действительности, хотя он сам считал эти устройства важнейшими своими работами, его инженерное и научное наследие ими далеко не ограничивается • Он написал несколько работ по математике, в т.ч. составлял математические таблицы • Много путешествовал, при этом решая разнообразные научные задачи
  39. Замечание • Изучал физиологию животных и человеческого тела (проводил над

    собой эксперименты) • Спустился под воду в водолазном колоколе и после этого сконструировал двухместную подводную лодку • Поднимался на действующий вулкан Везувий • Спускался в шахты, принимал участие в археологических раскопках • Изучая вопрос безопасности на железных дорогах, изобрел спидометр • Оставил после себя множество изобретений • (в общем, типичный герой — профессор из романов Жюля Верна)
  40. Кстати • Подробным описанием устройства машин Чарльза Бэббиджа мы обязаны

    инженеру и историку Allan G. Bromley en.wikipedia.org/wiki/Allan_G._Bromley • А так же истории и описанию множества механических вычислителей • Он так же является автором первой (?) работающей реконструкции антикитерского механизма, которую он сделал, опираясь на рентгеновские снимки • Правда, он включил в конструкцию дифференциал (шестеренка особой формы?), в более поздней реконструкции на основе томографа пришли к выводу, что этого механизма там не было
  41. Разностная машина Шульца • Работающая разностная машина • Изготовлена в

    Швеции в 1840-м году, Георг Шульц • Изготовлена под прямым влиянием разностной машины Бэббиджа по описанию, но некоторые элементы конструкции значительно отличались
  42. • Через некоторое время Шульц представил работающую машину на выставке

    в Англии • Демонстрация пользовалась успехом • Бэббидж поддержал их выступление
  43. • Была заказана копия машины для нужд Англии • Бэббидж

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

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

    упрощенном варианте • Выводил все результаты в столбик • Формирование таблицы оставалось на работу верстальщика • (вполне здравый подход для концепции итерационной разработки)
  46. ru.wikipedia.org/wiki/Разностная_машина_Чарльза_Бэббиджа • В период с 1989 по 1991 год к

    двухсотлетию со дня рождения Чарльза Бэббиджа на основе его оригинальных работ в лондонском Музее науки была собрана работающая копия разностной машины № 2. • В 2000 году в том же музее заработал принтер, также придуманный Бэббиджем для своей машины. • После устранения обнаруженных в старых чертежах небольших конструктивных неточностей обе конструкции заработали безупречно
  47. Продолжатели аналитической машины • Всего две попытки в 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. - до конца не довел
  48. Замечание-1 • Как оказалось, задача просчета таблиц хотя и требовала

    автоматизации, вручную все-таки решалась приемлемыми силами • Механические вычислители справлялись с задачей, но были крайне капризны в работе и обслуживании, что сводило на нет выигрыш от скорости вычислений • С третьей стороны, перечисленные недостатки могли быть исправлены в новых версиях вычислителей • Но, судя по всему, решение указанных задач не казалось настолько важным, чтобы вкладывать значительные средства в разработку новых версий вычислителей
  49. Замечание-2 • Хотя некоторые исследователи выражают сомнение в том, что

    аналитическая машина Бэббиджа могла быть изготовлена по технологиям его времени, • Автор исследования (Аллан Г. Бромли) считает, что точность изготовления была вполне достаточной • Проработанность таких деталей, как фиксатор положения шестеренок, в значительной степени увеличивала шансы на успех
  50. Замечание-2 • Сам Бэббидж экспериментировал с изготовлением шестеренок штамповкой листового

    металла • Однако, мы видим, что такая элементная база, как шестеренки, в такого рода устройствах если не перешагивает, то приближается к своему технологическому потолку • Для того, чтобы в полной мере реализовать заложенные в таких вычислителях идеи, требуется новая элементная база
  51. Стимпанк и элементная база • Но можно и пофантазировать: если

    бы Бэббидж довел дело по построению аналитической машины до конца, мы бы увидели несколько поколений аналитических движков на механике шестеренок • Это были бы вычислители, близкие по возможностям к некоторым современным приложениям автоматических вычислений • Может, не времен смартфонов и не времен персональных компьютеров, но времен вычислителей, занимающих целые комнаты в датацентрах, — вполне реально
  52. • Фантастические картинки в эстетике стимпанка (шестеренки плюс паровые машины)

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

    дали бы о себе знать: • исполинские шестереночные конструкции раздавят себя собственным весом • если что-то заест, будет крайне проблематично такой механизм «перезагрузить», т. е. перевести в исходное состояние
  54. • Для новых поколений вычислителей нужна новая элементная база: •

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