Дорога в будущее
Шрифт:
Следующее столетие ученые математики работали над идеями, высказанными Беббиджем, и к середине сороковых годов нашего века электронный компьютер наконец был построен – на основе принципов аналитической машины. Создателей современного компьютера выделить трудно, поскольку все исследования проводились во время второй мировой войны под покровом полной секретности, главным образом – в Соединенных Штатах и Великобритании. Основной вклад внесли три человека: Алан Тьюринг (Alan Turing), Клод Шеннон (Claude Shannon) и Джон фон Нейман (John von Neumann).
В середине тридцатых годов Алан Тьюринг – блестящий британский математик, как и Беббидж, получивший образование
А в конце тридцатых Клод Шеннон, тогда еще студент, доказал, что машина, исполняющая логические инструкции, может манипулировать информацией. В своей магистерской диссертации он рассмотрел, как с помощью электрических цепей компьютера выполнять логические операции, где единица – «истина» (цепь замкнута), а нуль – «ложь» (цепь разомкнута).
Здесь речь идет о двоичной системе счисления, иначе говоря, о коде. Двоичная система – это азбука электронных компьютеров, основа языка, на который переводится и с помощью которого хранится и используется вся информация в компьютере. Эта система очень проста и в то же время настолько важна для понимания того, как работают компьютеры, что, пожалуй, стоит на этом задержаться.
Представьте, что в Вашей комнате должна гореть лампа мощностью в 250 ватт. Однако Вы хотите регулировать освещение от 0 ватт (полная темнота) до максимума. Один из способов добиться этого – воспользоваться выключателем с регулятором. Чтобы погасить лампу, Вы поворачиваете ручку против часовой стрелки в положение «выкл» (0 ватт), а чтобы включить ее «на всю катушку», – по часовой стрелке до упора (250 ватт). Ну а чтобы добиться полумрака или просто уменьшить яркость, Вы устанавливаете регулятор в какое-то промежуточное положение.
Такая система проста, но имеет свои ограничения. Если регулятор находится в промежуточном положении – скажем, Вы приглушили свет для ужина в интимной обстановке, – останется лишь гадать, каков сейчас уровень освещения. Вам не известно ни то, какую мощность «берет» лампа в данный момент, ни то, как точно описать настройку регулятора. Ваша информация приблизительна, что затрудняет ее сохранение и воспроизведение.
Вдруг на следующей неделе Вам захочется создать то же освещение? Конечно, можно поставить отметку на шкале регулятора, но навряд ли это получится точно. А что делать, если понадобится воспроизвести другую настройку? Или кто-то придет к Вам в гости и захочет отрегулировать свет? Допустим, Вы скажете: «Поверни ручку примерно на пятую часть по часовой стрелке» или «Поверни ручку, пока стрелка не окажется примерно на двух часах». Однако то, что сделает Ваш гость, будет лишь приблизительно соответствовать Вашей настройке. А может случиться и так, что Ваш друг передаст эту информацию своему знакомому, а тот – еще кому-нибудь. При каждой передаче информации шансы на то, что она останется точной, убывают.
Это был пример информации, хранимой в «аналоговом» виде. Положение ручки регулятора соответствует уровню освещения. Если ручка повернута наполовину, можно предположить, что и лампа будет гореть вполнакала. Измеряя или описывая то, насколько повернута ручка, Вы на самом деле сохраняете информацию не об уровне освещения, а о его аналоге – положении ручки. Аналоговую информацию можно накапливать, хранить и воспроизводить, но она неточна и, что хуже, при каждой передаче становится все менее точной.
Теперь рассмотрим не аналоговый, а цифровой метод
Пусть вместо одной 250-ваттной лампы у Вас будет 8 ламп, каждая из которых в 2 раза мощнее предыдущей – от 1 до 128 ватт. Кроме того, каждая лампа соединена со своим выключателем, причем самая слабая расположена справа.
Включая и выключая эти выключатели, Вы регулируете уровень освещенности с шагом в 1 ватт от нуля (все выключатели выключены) до 255 ватт (все включены), что дает 256 возможных вариантов. Если Вам нужен 1 ватт, Вы включаете только самый правый выключатель, и загорается 1-ваттная лампа. Для 2 ватт Вы зажигаете 2-ваттную лампу. Если Вам нужно 3 ватта, Вы включаете 1– и 2-ваттную лампы, поскольку 1 плюс 2 дает желаемые 3 ватта. Хотите 4 ватта, включите 4-ваттную лампу, 5 ватт – 4– и 1-ваттную лампы, 250 ватт – все, кроме 4– и 1-ваттной ламп.
Если Вы считаете, что для ужина идеально подойдет освещение в 137 ватт, включите 128-, 8– и 1-ваттную лампы.
Такая система обеспечивает точную запись уровней освещенности для использования в будущем или передачи другим, у кого в комнате аналогичный порядок подключения ламп. Поскольку способ записи двоичной информации универсален (младшие разряды справа, старшие – слева, каждая последующая позиция удваивает значение разряда), нет нужды указывать мощность конкретных ламп. Вы просто определяете состояние выключателей: «вкл-выкл-выкл-выкл-вкл-выкл-выкл-вкл». Имея такую информацию, Ваш знакомый точно отрегулирует освещение в комнате на 137 ватт. В сущности, если каждый будет внимателен, это сообщение без искажений пройдет через миллионы рук и на конце цепочки кто-то получит первоначальный результат – 137 ватт.
Чтобы еще больше сократить обозначения, можно заменить «выкл» нулем (0), а «вкл» – единицей (1).
Тем самым вместо «вкл-выкл-выкл-выкл-вкл-выкл-выкл-вкл» (подразумевая, что надо включить первую, пятую и восьмую лампы, а остальные выключить), Вы запишете то же самое иначе: 1, 0, 0, 0, 1, 0, 0, 1 или двоичным числом 10001001. Оно равно десятичному 137. Теперь Вы скажете своему знакомому: «Я подобрал изумительное освещение! 10001001. Попробуй». И он точно воспроизведет Вашу настройку, зажигая и гася соответствующие лампы.
Может показаться, что этот способ чересчур сложен для описания яркости ламп, но он иллюстрирует теорию двоичного представления информации, лежащую в основе любого современного компьютера.
Двоичное представление чисел позволяет составление чисел позволяет создавать калькуляторы, пользуясь преимуществами электрических цепей. Именно так и поступила во время второй мировой войны группа математиков из Moore School of Electrical Engineering при Пенсильванском университете, возглавляемая Дж. Преспером Эккертом (J. Presper Eckert) и Джоном Моучли (John Mauchly), начав разработку электронно-вычислительной машины ENIAC (Electronic Numerical Integrator And Calculator – электронный числовой интегратор и калькулятор). Перед учеными поставили цель – ускорить расчеты таблиц для наведения артиллерии. ENIAC больше походил на электронный калькулятор, чем на компьютер, но двоичные числа представляли уже не примитивными колесиками, как в арифмометрах, а электронными лампами – «переключателями».