История: как машины научились складывать
Перенос — самое трудное
Складывать умели и на счётах: костяшка за костяшкой. Трудность была в переносе — когда в разряде набралось десять, нужно сбросить его в ноль и добавить единицу в соседний.
Блез Паскаль в 1642 году построил для своего отца-сборщика налогов счётную машину, в которой перенос делался сам: колесо, переходя с 9 на 0, подталкивало соседнее. Через тридцать лет Готфрид Лейбниц придумал ступенчатый валик, и на его идее век спустя выросли арифмометры — счётные машины в каждой конторе вплоть до 1970-х.
Лейбниц же описал и двоичную систему: всего две цифры, 0 и 1. Для колёс она была неудобна. Зато идеально подошла для того, что умеет быть только включённым или выключенным.
Реле на кухонном столе
В 1937 году инженер Bell Labs Джордж Стибиц собрал дома, на кухонном столе, двоичный сумматор из двух телефонных реле, батарейки и лампочек. Лампа горела — 1, не горела — 0. Ровно то, что вы соберёте в первом уроке. Позже его «модель K» (от kitchen — кухня) выросла в релейный калькулятор, который в 1940 году считал по телефонной линии из другого города.
В те же годы в Берлине Конрад Цузе строил двоичные вычислительные машины: механическую Z1 и релейную Z3 (1941) — первый работающий программируемый компьютер. Сумматор в ней тоже был сердцем всего.
Сумматор в каждом процессоре
Реле сменили лампы, лампы — транзисторы, транзисторы ужались в микросхемы. А сумматор остался: любой процессор вычитает, сравнивает и считает адреса тем же сумматором. Отрицательные числа почти все машины с 1960-х записывают в дополнительном коде — тогда вычитание не требует отдельной схемы.
Первый микропроцессор Intel 4004 (1971) делали для калькулятора, поэтому он умел считать и десятичными цифрами — команда DAA, «десятичная поправка». У 6502, процессора Apple II и NES, для этого есть десятичный режим. Это коррекция «+6» из бонус-урока.
Intel, Apple, Nintendo и Bell Labs — торговые марки своих владельцев. Набор не связан с ними и не одобрен ими; названия упоминаются, чтобы рассказать историю.