Эта концепция станет основной для цифровой эпохи: любой фрагмент контента, данных или информации: музыка, текст, изображения, числа, символы, звуки, видеоконтент — все это может быть записано в цифровом виде, и машина может этими символами манипулировать. Даже Бэббидж не смог понять это в полной мере — он ограничился операциями с математическими объектами. Но Ада поняла, что цифры, записанные с помощью шестеренок, могут обозначать и другие объекты, а не только математические величины. По существу она сделала концептуальный рывок, мысленно перейдя от машин, которые были просто калькуляторами, к тем, которые мы теперь называем компьютерами. Дорон Суэйд, занимающийся историей компьютеров и специализирующийся на изучении машин Бэббиджа, считает, что этот концептуальный скачок является одним из главных исторических наследий Ады. Он отметил: “Если мы поищем и внимательно исследуем историю этого концептуального скачка, то увидим, что именно Ада в своей публикации 1843 года совершила его”39.
Третий вклад Ады состоял в том, что в своем заключительном “Примечании G” она подробно, шаг за шагом объяснила, как работает то, что мы сейчас называем компьютерной программой или алгоритмом. Для примера она написала программу вычисления чисел Бернулли[7] — чрезвычайно сложно устроенного бесконечного ряда чисел, которые в том или ином виде играют важную роль в теории чисел.
Чтобы показать, как аналитическая машина могла генерировать числа Бернулли, Ада описала последовательность операций, а затем составила диаграмму, показывающую, как каждая из них может быть закодирована в машине. Попутно она помогла разработать концепцию подпрограмм (последовательности инструкций, которые выполняют определенную задачу, например вычисление косинуса или сложных процентов, и которые могут по мере необходимости вставляться в более крупные программы), а также рекурсивных вложенных циклов (последовательности повторяющихся инструкций)[8]. Это стало возможным сделать благодаря применению перфокарт. Для определения каждого числа Бернулли, как она объяснила, необходимо семьдесят пять карт, затем процесс становится итерационным, поскольку это число отправляется обратно и используется в процессе уже для получения следующего числа. Она пишет: “Очевидно, что те же самые семьдесят пять переменных карт могут быть использованы для вычисления каждого последующего числа”. Она предвидела, что будет создана библиотека часто используемых подпрограмм, и действительно, спустя столетие ее интеллектуальные наследники, в том числе такие женщины, как Грейс Хоппер из Гарварда, а также Кей Макналти и Джин Дженнингс из Пенсильванского университета, создадут такую библиотеку. Кроме того, машина Бэббиджа позволяла переходить туда и обратно внутри последовательности команд на картах в зависимости от полученных промежуточных результатов, и таким образом появилось то, что в будущем станет операцией условного перехода — когда тот или иной тип инструкций выбирается в зависимости от условий.
Бэббидж помогал Аде с расчетами чисел Бернулли, но из ее писем видно, что она сама глубоко погрузилась в сущность задачи. “Я упорно ищу и тщательно анализирую все возможные способы вычисления чисел Бернулли, — писала она в июле, всего за несколько недель до того, как ее перевод и примечания были посланы в печать. — Я в таком смятении из-за того, что возникло такое странное затруднение и разочарование с этими числами, что я сегодня не могу ничего делать… Я в оцепенении и растерянности”40.
Когда эта проблема была решена, Ада сделала еще одну вещь, и она была в первую очередь ее собственным достижением, — составила таблицу и диаграмму, показывающую, как именно алгоритм, включающий два рекурсивных цикла, пошагово будет передаваться в компьютер. Это был пронумерованный список команд кодирования, который содержал указание регистров назначения, операции и комментарии — все, что сегодня знакомо любому работающему с языком C++. “Я работала непрерывно и очень успешно в течение всего дня, — написала она Бэббиджу. — Вы будете чрезвычайно довольны таблицей и диаграммой. Они были сделаны с особой тщательностью”. Из всех писем видно, что она сделала таблицу сама — помощь приходила только от ее мужа, не знавшего математики, но готового методично обводить чернилами текст, который она писала карандашом. “Лорд Л. сейчас любезно переписывает чернилами все это для меня, — писала она Бэббиджу. — Мне пришлось делать это карандашом”41.
7
Названы в честь швейцарского математика XVII века Якоба Бернулли, который изучал суммы одинаковых степеней натуральных чисел. Числа Бернулли играют важную роль в теории чисел, математическом анализе и дифференциальной топологии. —
8
Пример Ады содержал табулирование многочленов с использованием в качестве подпрограммы разностных методов, для которых потребовалась структура вложенных циклов с изменяющимся диапазоном внутреннего цикла. —