1+1=10
В 1851 году Ада Лавлейс предлагает Чарльзу Бэббиджу новый вариант работы над его компьютером: она готова возглавить предприятие и воплотить задумку своего учителя, у которого никак не выходит заняться её реализацией всерьез. К её (и всеобщему) изумлению, Бэббидж не просто соглашается — он в восторге от этого плана. И начинает помогать Аде всем, чем только может. Например, сопровождает её (Ада уже тяжело и, как выяснится позже, неизлечимо больна) при посещении международной выставки в Лондоне.
Там, на выставке, Бэббидж (который знает решительно всех в мире, и уж точно любой ученый в мире знает его) знакомит Аду с Джорджем Булем, математиком, одним из создателей матанализа. Благодаря ему появятся понятия булевой алгебры. Буль занят двоичными значениями, 0 и 1 означают да/нет, и Ада, которая писала свою первую в мире программу в десятичной системе, в восторге от этого нового подхода, он кажется ей идеальным для «разговора» с машиной.
Увы, вскоре Ада умирает — машина Бэббиджа будет воссоздана в полном виде много лет спустя, и идея использования двоичного кода для программирования будет отложена до следующего столетия.
Сама идея использования в математике двоичного кода, кажется, впервые встречается в трактате о стихосложении (чем не математика?) индийского ученого Пингалы (примерно II век), в Х веке другой индус, Халаюдха, написал к этому трактату комментарии, которые, возможно, дошли до китайца Шао Юна, а уже Юн, в свою очередь, описал двоичные цифры, используя значения от 0 до 63, хотя принято думать, что предтечей работ Юна была Книга Перемен, которая содержала уже набор из 8 триграмм и 64 гексаграмм, аналог 3-битных и 6-битных цифр, впрочем, сам двоичный код некоторые пробуют связать с философией Инь-Янь.
В самом начале XVII к этой идее обратился Фрэнсис Бэкон, который обозначал буквы с помощью последовательности двоичных цифр — забава эта привела к созданию шифра Бэкона, давшего большую пищу для ума последующим криптографам (мы уже писали об Уильяме Фридмане, наверное, самом гениальном криптографе XX века, который положил жизнь, намереваясь поймать в письмах Бэкона хотя бы намек на то, что он, Бэкон, и есть настоящий Шекспир, но, увы, подтверждений этой несколько экстравагантной теории Фридман так и не нашел). А математикой двоичный код сделал Лейбниц, который увлекался всем китайским и Книга Перемен никак не могла ускользнуть от его внимания.
В настоящую же науку это превратил, однако, уже знакомый нам Джордж Буль (заметим, что свой труд по алгебре логики он завершил через три года после смерти Ады Лавлейс).
Но, как это часто бывает, до поры до времени эти знания не были использованы практически. Пока не наступил 1937 год. Идеи компьютера и программирования уже витают в воздухе, и вполне естественно, что о булевой алгебре вспоминают. В этом году Клод Шеннон защищает диссертацию в MIT об анализе релейных переключательных систем с позиции булевой логики — считается, что эта работа основа основ работы всей современной цифровой техники. В том же году Джордж Штибиц, сотрудник Bell Labs, придумавший компьютер Model K (K - это “Kitchen”, Штибиц занимался сборкой своей релейной машины дома на кухне) «научил» свою машину выполнять двоичные действия.
В 1940-м, когда его компьютер (по сути, это ещё сложный калькулятор) был собран, Штибиц продемонстрировал его возможности, передавая команды удаленно с помощью телетайпа. Собственно, именно эта демонстрация, на которой присутствовали Винер и фон Нейман, и считается своего рода «отсечкой» — Штибиц сделал то, что не успела сделать Ада Лавлейс, создав полноценную программу управления, после чего двоичный код уже господствует в программировании.
Впрочем, точка будет поставлена, можно сказать, аппаратно, все в той же Bell Labs, где в 1947 году будет создан первый транзистор, ставший компонентной базой всех устройств, способных работать с бинарным кодом.
#техноистории от Саши Иванова