Идеи по созданию «умной машины» витали в воздухе с древних времен.
Первое запатентованное и функционирующее счетное устройство, механический калькулятор, появилось в 1640 году. Его сконструировал математик и философ Блез Паскаль для своего отца, сборщика налогов. Эта машина представляла собой громоздкое устройство из спиц и колесиков, в которое с помощью специальной палочки вводились данные. Машина умела складывать и вычитать.
Несколько десятилетий спустя математик Готфрид Лейбниц попытался усовершенствовать калькулятор Паскаля, но не смог воплотить свои идеи, потому что сам он не обладал инженерным мышлением, а в его окружении не было талантливых инженеров.
Чарльз Бэббидж с детства интересовался разными машинами. Его завораживали механические куклы, способные танцевать, ходить, прыгать и даже проявлять характер. Он вырос, стал математиком и приступил к работе по созданию машины более сложной, чем калькуляторы Паскаля и Лейбница. Он создавал свою первую машину, которая могла вычислять синусы, косинусы, тангенсы и логарифмы, взяв за основу идею французского математика Гаспара де Прони о том, что сложную операцию можно разбить на множество простых. Этот принцип лег в основу сборочного конвейера – одного из выдающихся достижений промышленной революции.
Чтобы определить значения квадратов последовательных чисел 1, 2, 3, 4 и т. д., нужно создать столбец A c квадратами этих чисел 1, 4, 9, 16 и т. д. Затем в столбце B следует записать разницу между последовательными числами из столбца А: 3, 5, 7, 9 и т. д. В столбец C нужно занести разность между последовательными числами из столбца B: 2, 2, 2, 2. Теперь можно по постоянным разностям из столбца C восстановить квадраты чисел: добавлять 2 к последнему числу из столбца B, а затем складывать полученный результат с числом из столбца А. В результате получается следующее значение в последовательности квадратов чисел.
Чарльзу Бэббиджу удалось автоматизировать действия из таблицы с помощью своего изобретения – разностной машины. Она работала, основываясь на функциях, выраженных в виде многочлена.
Механизм разностной машины состоял из вертикальных валиков с дисками. Диски поворачивались, и каждый угол соответствовал определенной цифре. Диски управлялись с помощью ручек, которые запускали шестеренки, управляющие дисками. Машина также умела сохранять промежуточные результаты вычислений.
Британское правительство заинтересовалось изобретением и даже выделило финансирование на дальнейшую разработку чудо-машины в 1823 году. В течение 10 лет Бэббидж с инженером пытался усовершенствовать машину. В итоге затраты в 10 раз превысили ассигнования правительства. На эти деньги можно было построить 2 военных корабля. Но устройство так и не стало функционировать так, как задумывалось.
Потом у Бэббиджа возникла новая идея – аналитической машины, которая выполняет вычисления, задаваемые через программу. Машина могла переключаться с одной задачи на другую и менять алгоритм действий, основываясь на промежуточных результатах. Эта концепция опередила свое время на целый век, поэтому она не получила финансирование. Даже в научных кругах ее сочли утопичной.
В Аде Байрон уживались любовь к прекрасному, которая досталась ей от отца – поэта Джорджа Гордона Байрона, и математические способности, полученные в наследство от матери. За свою короткую жизнь (всего 36 лет) Ада успела выйти замуж за лорда Лавлейса, родить троих детей, пристраститься к азартным играм и опиуму. Но кроме этого она успела оставить след в истории цифровых технологий. Ада написала примечания к статье об аналитической машине Бэббиджа. Из-за этих примечаний Аду Лавлейс иногда называют первым программистом – «Примечания» содержали описание первой компьютерной программы. Министерство обороны США даже назвало язык программирования высокого уровня именем Ada – в честь графини Лавлейс, которая предсказала 4 основных свойства современных компьютеров.
• Многозадачность – это машина общего назначения, которая решает не одну арифметическую задачу в определенный отрезок времени, а программируется и перепрограммируется на выполнение неограниченного количества разнообразных задач.
• Возможность работы не только с числовыми, но и с нечисловыми объектами. Эта концепция предвосхищает цифровую эпоху, когда любая информация (музыка, текст, символы, изображения, видео) может записываться и обрабатываться в цифровом виде. Ада в своих примечаниях совершила концептуальный переворот: она размышляла не о сложном калькуляторе (как Бэббидж), а об устройстве, похожем на современный компьютер.
• Программирование – Ада описала, как работает алгоритм, и для примера написала программу вычисления чисел Бернулли. Для определения каждого числа Бернулли она предложила использовать 75 перфокарт. Затем процесс мог запускаться заново для следующих чисел. Ада составила таблицу и диаграмму, пошагово иллюстрирующие процесс передачи на компьютер алгоритма, включающего два рекурсивных цикла, которые пошагово должны передаваться на компьютер. Она также создала пронумерованный список команд кодирования, который содержал указание регистров назначения, операции и комментарии – все, что сегодня встречается в работе программиста C++.
• Искусственный интеллект. Ада не верила, что машины смогут самостоятельно генерировать идеи или иметь намерения. «Аналитическая машина не претендует на создание чего-то своего. Она может выполнить любую команду, которую мы сумеем задать. Она может провести анализ, но от нее никак нельзя ожидать вывода каких-либо аналитических соотношений или установления законов».