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