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

История автоматических вычислителей: реконструкция работы перфокартной машины

Anton
December 27, 2023

История автоматических вычислителей: реконструкция работы перфокартной машины

Лекция курса "Языки и методы программирования"
История автоматических вычислителей: реконструкция работы перфокартной машины
- Процесс обработки статистических данных переписи в США 1890-го года (журнал Scientific American)
- Основные инструменты подготовки и автоматической обработки статистических данных
- Настройка перфокартной машины для подсчета выбранных статистических показателей
- Примеры простых статистических показателей - счетчики для отдельных полей анкеты
- Сложный статистический показатель - счетчики с условием, включающем несколько полей анкеты
- Устройство реле
- Алгоритмы счета перфокартной машины, выраженные на современных языках программирования
- Перфокартная машина как программируемое цифровое логико-арифметическое устройство специального назначения
- Устройство перфокарты, перфокарты с поддержкой числовых значений широкого диапазона (колоночный формат перфокарт)
- Фактические схемы ранних версий статистических перфокартных машин, патенты Германа Холлерита

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

Anton

December 27, 2023
Tweet

More Decks by Anton

Other Decks in Education

Transcript

  1. Журнал «Scientific American», 30 августа 1890 archive.org/details/scientific-american-1890-08-30 • На обложке:

    • Стопки исходных анкет (внизу) • Пробойник (перфоратор) (pantograph punch) — перенос анкет на перфокарты (справа наверху) • Табуляционная машина и ящик для ручной сортировки карточек (слева наверху) • Клавиатура для ввода количества членов семьи для грубого подсчета (в середине)
  2. • address • number of families in house • number

    of persons in house • names • whether a soldier, sailor or marine (Union or Confederate) during the American Civil War, or a widow of such person • relationship to head of family • race, described as white, black, mulatto, quadroon, octoroon, Chinese, Japanese, or Indian • sex • age • marital status • married within the year • mother of how many children, and number now living
  3. • place of birth of person, and their father and

    mother • if foreign-born, number of years in US • whether naturalized • whether naturalization papers have been taken out • profession, trade or occupation • months unemployed during census year • ability to read and write • ability to speak English, and, if unable, language or dialect spoken • whether suffering from acute or chronic disease, with name of disease and length of time afflicted • whether defective in mind, sight, hearing or speech, or whether crippled, maimed or deformed, with name of defect • whether a prisoner, convict, homeless child, or pauper • home rented, or owned by head or member of family, and, if owned, whether free from mortgage • if farmer, whether farm is rented, or owned by head or member of family; if owned, whether free from mortgage; if rented, post office box of owner
  4. Допустим, хотим посчитать • Сколько в стопке перфокарт анкет: мужчин,

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

    карте • Стрелка на табло соответствующего счетчика делает один шаг • Там, где отверстия нет, остаётся как есть
  6. Смотрим результат на счетчиках • На стопке из 2-х перфокарт:

    - мужчин: 1 - женщин: 1 - белых: 2 • Переписываем результат в сводную таблицу
  7. • После предыдущей конфигурации все счетчики заняты • Чтобы провести

    подсчет новых значений, нужно перенастроить машину • Придется перекинуть провода из старого положения в новые позиции на соответствующих щупах • Конфигурация автомата производилась вручную
  8. • Завершили настройку • Оператор берет новую стопку перфокарт (можно

    и ту же самую, которую только что пропустили через предыдущую конфигурацию) • И вкладывает их в аппарат одну за одной
  9. Смотрим результат на счетчиках • На стопке из 3-х перфокарт:

    - мужчин: 2 - китайцев (по расе): 2 - родившихся во Франции: 3 • Переписываем результат в сводную таблицу
  10. Теперь хотим посчитать похитрее • Мужчины китайской расы: (M+Ch) —

    только два поля на одной карте одновременно По старой схеме: • Страна рождения: Франция (Fr) • Раса: белый (W)
  11. • Снова переподключаем штыри и счетчики • Электрическая схема подключения

    будет определять логику работы автомата — логику подсчета • На одних и тех же данных при разной схеме подключения проводов машина будет давать разные результаты счета
  12. • Логика «сделать шаг счетчика при одновременном выборе двух полей»

    может быть реализована через два реле • Щупы на позициях «пол: мужчина» и «раса: китаец» управляют каждый своим электромагнитом (реле) • Электромагниты замыкают или размыкают два последовательных участка цепи общего счетчика • Общий счетчик сделает шаг только тогда, когда оба щупа проходят сквозь отверстия, включают свои электромагниты (реле) и замыкают цепь счетчика целиком
  13. Результат на счетчиках • На стопке из 3-х перфокарт: -

    мужчин китайской расы: 1 - белых: 0 - родившихся во Франции: 3
  14. Любопытно отметить • Логику работы автомата для каждой из конфигураций

    можно точно описать на языке с ООП в стиле Java или С++
  15. Конфигурация-1 int whites = 0; int females = 0; int

    males = 0; for(PunchCard pc in punchCards) { if(pc.white) whites++; if(pc.female) females++; if(pc.male) male++; } print(whites, females, males);
  16. Конфигурация-2 int birthFrance = 0; int chinese = 0; int

    males = 0; for(PunchCard pc in punchCards) { if(pc.birthFrance) birthFrance++; if(pc.chinese) chinese++; if(pc.male) males++; } print(birthFrance, chinese, males);
  17. Конфигурация-3 int birthFrance = 0; int whites = 0; int

    maleChinese = 0; for(PunchCard pc in punchCards) { if(pc.birthFrance) birthFrance++; if(pc.white) whites++; if(pc.male && pc.chinese) maleChinese++; } print(birthFrance, chinese, males);
  18. • Перфокартные табуляцинные (статистистические счетные) машины Холлерита — это цифровые

    логико-арифметические автоматы • Логика: электрические схемы • Арифметика: накапливаемая сумма с переносом разряда
  19. • На входе: двоичный код (отверстия на картах) • На

    выходе: 100-ричный код (по количеству рисок на счетчике) с десятичными метками, циферблаты могли переносить разряд на соседний при переполнении • Организация циклов (подача карт) в первых версиях осуществлялась вручную, в поздних версиях появилась автоматическая подача
  20. • Это не вычислитель общего назначения, • но его логика

    перенастраивается в рамках класса задач, которые он может решать • Менять можно не только входные данные (как у калькуляторов) • Логику работы автомата определяет электрическая схема
  21. Программирование здесь • Данные: перфокарты (в ранних версиях — перфолента)

    • Логика: электрическая схема на реле + коммутация • Пошаговое выполнение: цикл подачи карточек — ручной труд человека или механика (поздние версии с автоматической подачей карточек)
  22. • Схема сначала проектируется инженером — в зависимости от того,

    какие статистические показатели требуется рассчитать • После этого в соответствии с этой схемой операторы переподключением проводов перенастраивают каждый автомат • После чего каждый из автоматов превращается в специализированный вычислитель, принимающий любые данные в оговоренном формате
  23. Замечание • Кто-то, возможно, заметил, что знания, извлекаемые автоматом из

    стопки перфокарт, подозрительно похожи на знания, извлекаемые из базы данных запросами на языке SQL • И по форме запросов и по структуре хранимых данных • Это не случайность (достаточно вспомнить, кто разработал язык SQL) • Но по этой линии как-нибудь в другой раз
  24. Перепись США 1890-го года • Карта разбита на сегменты для

    каждого из вопросов анкеты • Простые двоичные значения для каждого из вариантов ответа (скорее всего предполагается, что внутри сегмента будет пробито только одно отверстие) • Числовые значение — короткие диапазоны (от 1 до 8)
  25. Развитие машин на перфокартах • Важная веха — контракт с

    железной дорогой • Для их задач требовалось обрабатывать числа (длина маршрутов, деньги и т.п.) • Для этого был разработан специальный колоночный формат карточек (см. картинки) • И автомат, который сможет читать такие значения и суммировать • Аналогичные задачи уже были примерно в это же время: сельхоз данные во время второй переписи
  26. Перепись в США 1900-го года • Подсчет данных в области

    сельского хозяйства привел к необходимости копить и считать числа • Для решения этой задачи был разработан специальный мультиколоночный формат перфокарт • И разработан специальный «интегрирующий» (т. е. суммирующий) табулятор • Складывающий механизм основан на конструкции складывающего механизма (шагового барабана) Лейбница (~1716-й год, связь времен)
  27. • Железнодорожная заполненная карточка учета времени • И соответствующая ей

    перфокарта • Можно обратить внимание на поле «Amount» со значением 195 • (фото — журнал Machinery)
  28. • AN ELECTRIC TABULATING SYSTEM, BY H. HOLLERITH, 1889 www.columbia.edu/cu/computinghistory/hh/index.html#%5B-

    245-&#93 • From The Quarterly, Columbia University School of Mines, Vol.X No.16 (Apr 1889), pp.238-255. In this article the author, Columbia graduate (Mines 1879) Herman Hollerith, describes the devices and methods he developed to automate the 1890 US Census; it is the basis for his 1890 Columbia Ph.D. It was scanned and converted to HTML by Frank da Cruz of Columbia University in January 2004 for the Columbia University Computing History Project.
  29. • By a suitable arrangement of relays any possible combination

    of the data recorded on the cards may be counted. • When it is desired to count more complicated combinations, however, special relays with multiple contact points are employed.
  30. Патенты Холлерита • patents.google.com > «herman hollerith» > внизу страницы

    ссылка «Assignees = Herman Hollerith» • Или вбить запрос: «inventor:(Herman Hollerith)» • Результаты поиска отсортировать по «Oldest» (сначала самые старые) • patents.google.com/? q=hollerith&assignee=Herman+Hollerith&sort=old • Примерно 64 результата
  31. Первые патенты • № 395782: Art of compiling statistics, заполнен

    в 1884, выдан в 1889 patents.google.com/patent/US395782A/ patentimages.storage.googleapis.com/92/a9/6b/f6aa3e4e27a35b/US395782.pdf • № 395783: Apparatus for compiling statistics, заполнен в 1884, выдан в 1889 patents.google.com/patent/US395783A/ patentimages.storage.googleapis.com/64/74/b5/45e0673f2762da/US395783.pdf • № 395781: Art of compiling statistics, заполнен в 1887, выдан в 1889 patents.google.com/patent/US395781A/ patentimages.storage.googleapis.com/29/55/e8/f6653128b2aebf/US395781.pdf
  32. Первые патенты • Первые патенты выданы в 1889-м году •

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

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