Команда фон Неймана, по-видимому, подразумевала, что
Итак, в конце 1945 года команда фон Неймана, а возможно, и сам фон Нейман первыми использовали слово «программирование» примерно в том же смысле, в котором мы его понимаем сегодня. Тьюринг вскоре тоже употребил этот термин в своей лекции в 1947 году, но упомянул его лишь несколько раз в ограниченном контексте. Впрочем, независимо от наименования, довольно быстро выяснилось, что программирование, творческий аспект — это сложная часть машинных вычислений и для него необходимо разработать отдельную научную дисциплину. Благодаря этому повсеместно возникли факультеты компьютерных наук.
Программирование — это способ создавать пиксели, изображающие вымышленные миры. Оно расширяет возможности Цифрового Света от простой фотофиксации миров до их создания — от простой съемки пикселей до их вычисления.
Мифы о компьютерах
[Это] становится заколдованным ткацким станком, где миллионы светящихся челноков ткут гаснущий узор, всегда осмысленный, но никогда не постоянный; изменчивая гармония узоров, складывающихся из узоров.
Следующая глава посвящена воплощению концепции универсальной вычислительной машины на практике — соревнованию по созданию первого компьютера. Прежде чем мы последуем дальше, давайте развеем три мифа о компьютерах: они не обязательно должны быть электронными, они не обязательно состоят из битов и не обязательно основаны на числах — даже на нулях и единицах.
Во-первых, компьютеры не всегда выглядели как те, которые вы видите: мобильный телефон, ноутбук, настольный компьютер, гигантский мэйнфрейм в крупной корпорации или суперкомпьютер в высокотехнологичном исследовательском центре. Рассмотренная ранее картонная карточка — хороший контрпример. Это тоже компьютер, и для моей книги он изготовлен из чернил, плотного картона и тонкого металла. Он определенно не электронный.
Есть популярный педагогический трюк, превращающий лекционную аудиторию со студентами в компьютер. Давайте масштабируем эту идею. Предположим, все жители США старше 12 лет выстроились в ряд. Эта шеренга станет лентой нашего компьютера — его памятью. Если нам понадобится ее увеличить, мы позовем несколько канадцев и мексиканцев. Предположим, у каждого человека есть пять шляп разных цветов. Эти головные уборы будут символами на нашей ленте. Шестым символом станет отсутствие шляпы, и оно же будет условием по умолчанию для всех, кроме нескольких человек. Мы выберем кого-нибудь, кто просканирует ленту. Когда я придумал этот пример, президентом был Барак Обама, так что мы сделаем его не ячейкой, а сканером нашей ленты. Дадим ему 24 правила машины Тьюринга — набор инструкций — для пяти цветов шляп, а не для цифр от 1 до 5 (и для отсутствия шляпы вместо пустой ячейки). Правила, как обычно, разделены на четыре набора, и каждый из них лежит в одном из карманов его джинсов, два спереди и два сзади. Итак, его карманы — это четыре состояния машины.
Обама начинает с человека в красной шляпе и применяет один из наборов правил — скажем, из правого переднего кармана. Человек, к которому он обращается, выполнит указанное действие — наденет шляпу другого цвета или снимет ее. Затем Обама перемещается влево или вправо на одного человека согласно тому же правилу. Затем он убирает один набор правил обратно в карман и достает другой, если текущее правило предписывает ему так сделать. И так далее. У нас получился компьютер, сделанный из людей, с карманами для разных состояний и шляпами в качестве символов. Он может вычислить что угодно, потому что делает то же самое, что и машина Тьюринга из картонной карточки, универсальный компьютер. Это просто разные аппаратные реализации одной и той же машины. Но это настоящий компьютер — и уж точно не электронный (и не числовой). Компьютер-карточка или его человеческий эквивалент также опровергают наше второе предубеждение относительно компьютеров — что они должны состоять из битов. Во второй главе мы уже упоминали, что у бита есть два состояния, как у выключателя, который пребывает или во включенном, или в выключенном состоянии. Но машина из картонной карточки способна принимать четыре положения. И каждая ячейка ленты может содержать шесть значений или символов. Ни один из элементов компьютера-карточки не ограничивается только двумя значениями. Он не состоит из битов. То же самое относится и к его человеческому эквиваленту.