Все, на что способно компьютерное оборудование, состоит из простых тривиальных шагов. Но для создания осмысленных последовательностей шагов требуются существенные интеллектуальные умения. Это называется разработкой программного обеспечения. Творческие люди, умеющие это делать, называются программистами. Следовательно, магия кроется в их умах.
По такому же принципу работает пианино. При нажатии клавиш оно может воспроизводить бесконечное количество последовательностей, тем самым выступая в роли аппаратного обеспечения, выполняющего простые шаги. Большинство таких последовательностей — жуткая какофония. Но время от времени появляется программное обеспечение, создающее великолепную музыку. Последовательность нот, придуманная программистом Шопеном, превращается в этюд, вальс или мазурку.
Компьютер, как и пианино, может выполнять бесчисленные последовательности простых базовых шагов. Таким образом, он способен осуществлять бесконечное количество сложных и значимых процессов — своего рода музыки — и при этом использует всего 2 бита, а не 88 клавиш. Именно слово «бесконечное» отражает Гибкость — качество, столь важное для компьютеров, что я буду писать его с заглавной буквы. Человеческий разум переполнен множеством процессов, которые способен реализовать компьютер. Всегда есть возможность создать еще одну значимую последовательность из бессмысленных простых шагов для чего-то нужного: приложения, игры, фильма… И все это делает один инструмент — компьютер.
Как мы увидим дальше, Гибкость — фундаментальная часть машинных вычислений, уникальная сверхспособность самой концепции. Ослепительный блеск Гибкости омрачается тайной непознаваемости. Хотя каждый шаг, который делает компьютер, полностью предсказуем, мы не всегда можем знать, как будет разворачиваться выстроенная из них последовательность.
Усиление
Еще один, совсем иной вид превосходства машин над человеком — это Усиление. Очевидно, что компьютер способен повторить действие — любую последовательность примитивных шагов. Тут все просто. Важно, что он может повторить это невероятное количество раз со скоростью, которую мы не в состоянии осознать. О бесконечности речь не идет. Мы можем посчитать количество повторений — или, по крайней мере, наши компьютеры справятся с такой задачей. Но осознать столь большие числа нашим человеческим разумом не получится. Нас захлестнет масштабность компьютерных процессов. Одиннадцатьдесят одиннадцать дизиллионов — смешное выдуманное число, словно Скрудж Макдак встретился с Бильбо Бэггинсом, — но оно показывает, насколько бессмысленны для нас числа, описывающие процессы в компьютерах, даже если они реальны. Мы не сумеем их представить. Как говорит Валентайн в эпиграфе к этой главе, «нужно быть чокнутым», чтобы иметь дело с ними. И даже этого, вероятно, не хватило бы[13]
.Повторение задачи, для выполнения которой компьютер уже запрограммирован, тривиально. Просто дайте соответствующую команду, и он все сделает. Дополнительных умственных усилий практически не требуется. А вот чтобы ускорить компьютер для работы с невообразимыми числами, требуется невероятное интеллектуальное мастерство. Это аппаратный дизайн. Им занимаются творческие люди с особым складом ума — инженеры.
В электротехнике
Самый первый компьютер увеличил человеческие возможности в 10 000 раз. К 1965 году этот показатель вырос по меньшей мере до 1 000 000 — благодаря созданию все более крупных машин и переходу с вакуумных ламп на транзисторы. Назовем это ускорением Эпохи 1.
Но самое невероятное — экспоненциальное усиление самого усиления — произошло с появлением еще более современной технологии — интегральных микросхем. Они представляют собой множество транзисторов, соединенных проводами и расположенных на одном чипе. В 1965 году утверждение, ныне известное как закон Мура, дало зеленый свет следующему драматическому ускорению — Эпохе 2. Не только компьютеры экспоненциально усилили человеческие возможности, но и, что удивительно, скорость самого усиления тоже увеличилась в геометрической прогрессии.