. Чтобы доказать его универсальность, Тьюринг ввел точные определения двух новых типов математических объектов: машин и программ. Вместе машина и программа определяют последовательность событий, а именно — последовательность изменений состояния в машине и в ее памяти.
В истории математики новые типы объектов возникают довольно редко. Математика началась с чисел на заре письменной истории. Затем, около 2000 г. до н. э., древние египтяне и вавилоняне стали работать с геометрическими объектами (точками, линиями, углами, областями и т. д.). Китайские математики в течение I тыс. до н. э. ввели матрицы, тогда как группы математических объектов появились лишь в XIX в. Новые объекты Тьюринга — машины и программы — возможно, самые мощные математические объекты в истории. Ирония заключается в том, что сфера математики по большей части не сумела этого признать и с 1940-х гг. и до настоящего времени компьютеры и вычисления остаются в большинстве крупнейших университетов вотчиной инженерных факультетов.
Возникшая область знания — компьютерная наука — последующие 70 лет бурно развивалась, создав великое множество новых понятий, конструкций, методов и применений, а также семь из восьми самых ценных компаний в мире.
Центральным для компьютерной науки является понятие алгоритма — точно определенного метода вычисления чего-либо. Сейчас алгоритмы являются привычным элементом повседневной жизни. Алгоритм вычисления квадратного корня в карманном калькуляторе получает на входе число и выдает на выходе квадратный корень этого числа; алгоритм игры в шахматы принимает позицию на доске и выдает ход; алгоритм поиска маршрута получает стартовое местоположение, целевую точку и карту улиц и выдает более быстрый путь из отправной точки к цели. Алгоритмы можно описывать на английском языке или в виде математической записи, но, чтобы они были выполнены, их нужно закодировать в виде программ на языке программирования. Сложные алгоритмы можно построить, используя простые в качестве кирпичей, так называемые подпрограммы, — например, машина с автопилотом может использовать алгоритм поиска маршрута как подпрограмму, благодаря чему будет знать, куда ехать. Так, слой за слоем, строятся бесконечно сложные программные системы.
Аппаратная часть компьютера также важна, поскольку более быстрые компьютеры с большей памятью позволяют быстрее выполнять алгоритм и включать больше информации. Прогресс в этой сфере хорошо известен, но по-прежнему не укладывается в голове. Первый коммерческий программируемый электронный компьютер, Ferranti Mark I, мог выполнять около 1000 (10