Представьте: на дворе середина XIX века. Лошади, газовые фонари, телеграф ещё в новинку. И в это самое время в Лондоне живёт женщина, которая пишет, по сути, первую в мире программу. Для машины, которую так и не построили. Звучит как выдумка, но это чистая правда. И началось всё с одного очень упрямого математика, который не выносил ошибок.
Человек, который возненавидел таблицы
Чарльз Бэббидж был блестящим математиком и при этом человеком вспыльчивым. Больше всего на свете его бесили ошибки в расчётах. А ошибок в его время хватало. Морякам, инженерам, астрономам приходилось пользоваться толстыми книгами с таблицами — логарифмов, синусов, всякого такого. Эти таблицы считали вручную целые армии людей. Их так и называли — «вычислители». Профессия как профессия, только живая и страшно ошибающаяся.
А теперь представьте, что вы капитан корабля. Вы прокладываете курс по такой таблице. А в ней опечатка. Не потому что кто-то глуп, а потому что человек устал, моргнул, переписал цифру криво. И всё — корабль идёт не туда. Бэббидж смотрел на эти горы ручных вычислений и думал одну простую мысль: машина не устаёт. Машина не моргает. Если заставить считать железо, ошибок не будет.
Машина, которую крутили ручкой
Сначала Бэббидж придумал то, что назвал разностной машиной. Это была огромная механическая штука из латунных шестерёнок, которая умела считать таблицы автоматически — крутишь ручку, шестерёнки проворачиваются, числа складываются сами. Не компьютер ещё, а скорее гигантский арифмометр размером с комнату. Но даже это было невероятно для своего времени.
Беда в том, что построить её целиком так и не вышло. Деталей нужны тысячи, и каждую надо выточить с дикой точностью — таких станков тогда почти не было. Деньги, которые дало государство, кончились. Бэббидж рассорился с инженером. Машина осталась недоделанной. Любой нормальный человек на этом бы успокоился. Но Бэббидж был не нормальный — в хорошем смысле. Вместо того чтобы доделать старое, он замахнулся на куда более дерзкую идею.
А что, если машина сможет думать по шагам?
Новый замысел Бэббидж назвал аналитической машиной. И вот тут начинается самое интересное. Разностная машина умела только одно — считать таблицы. А аналитическая задумывалась как универсальная. То есть ей можно было бы задавать разные задачи. Не одну намертво вшитую, а любую, какую захочешь.
Как это работало в голове Бэббиджа? Он подсмотрел идею у ткацких станков. В то время уже существовали станки, которые ткали сложные узоры по перфокартам — картонкам с дырочками. Где дырка — нить проходит, где нет — не проходит. Меняешь карты — меняешь узор. Бэббидж сообразил: а что если кормить машину такими же картами, но не с узором, а с командами? Машина читает карту за картой и выполняет действия по порядку. У неё есть отдельная часть, где числа хранятся, — он называл её «склад». И отдельная часть, где идут вычисления, — «мельница». Память и процессор, говоря по-нашему. За сто лет до того, как эти слова появились.
И тут на сцену выходит Ада
Звали её Ада Лавлейс, и она была дочерью знаменитого поэта Байрона. Отца она почти не знала, зато мать с детства вкладывала в неё математику — отчасти из страха, что в дочери проснётся «опасная» поэтическая натура отца. Вышло наоборот: Ада соединила оба мира. Она мыслила как математик, но видела как поэт. И именно это сочетание сделало её особенной.
Ада познакомилась с Бэббиджем и загорелась его идеей. Один итальянский инженер написал статью про аналитическую машину на французском, и Аде поручили её перевести. Она перевела. Но не просто так — она добавила к переводу собственные примечания. И эти примечания вышли в несколько раз длиннее самой статьи. Вот в них и спряталась история.
Что увидела Ада, чего не увидел никто
В своих заметках Ада подробно расписала, как машина могла бы вычислить одну хитрую последовательность чисел — шаг за шагом, команда за командой. По сути, это и был алгоритм, расписанный для механической машины. Поэтому Аду часто называют первой в мире программисткой. Спорят об этом до сих пор — кто-то говорит, что и сам Бэббидж писал подобные схемы. Но дело даже не в том, кто был раньше.
Дело в том, что Ада поняла нечто, до чего Бэббидж так до конца и не дошёл. Он видел в своей машине гениальный калькулятор. А Ада написала: машина способна работать не только с числами. Если суметь записать через символы что угодно — например, ноты, — машина в принципе сможет это обрабатывать. Она прямо предположила, что такое устройство однажды могло бы сочинять музыку. Вот это поворот. Женщина в платье с кринолином, в мире лошадей и свечей, описала идею, на которой стоит вся современная цифровая техника: внутри всё — просто числа, а числами можно закодировать хоть звук, хоть картинку, хоть текст.
Почему мороз по коже
Аналитическую машину тоже не построили. Бэббидж умер, не увидев её в металле. Ада умерла совсем молодой. Их идеи легли на полку и пролежали там почти столетие. А потом, уже в XX веке, инженеры начали строить настоящие компьютеры — и обнаружили, что многое из этого уже было придумано. Память, команды, универсальность, мысль о том, что машина может делать что угодно, если правильно её запрограммировать.
Самое поразительное — эти двое опередили своё время не на годы, а на поколения. У них не было ни электричества под рукой, ни транзисторов, ни даже слова «программа» в нашем смысле. Только латунь, шестерёнки и очень смелое воображение. Сегодня вы носите в кармане телефон, который Бэббиджу показался бы чистым волшебством. А ведь самую суть — машину, которая выполняет записанные команды по порядку, — придумали ещё тогда. Когда вы в следующий раз попросите голосового помощника что-нибудь найти, вспомните: первую программу для несуществующей машины написала женщина, в которую почти никто не верил.
А вы как думаете — кого справедливее называть первым программистом: Бэббиджа, придумавшего машину, или Аду, понявшую, на что эта машина способна?