Вдруг на следующей неделе Вам захочется создать то же освещение? Конечно, можно поставить отметку на шкале регулятора, но навряд ли это получится точно. А что делать, если понадобится воспроизвести другую настройку? Или кто-то придет к Вам в гости и захочет отрегулировать свет? Допустим, Вы скажете: «Поверни ручку примерно на пятую часть по часовой стрелке» или «Поверни ручку, пока стрелка не окажется примерно на двух часах». Однако то, что сделает Ваш гость, будет лишь приблизительно соответствовать Вашей настройке. А может случиться и так, что Ваш друг передаст эту информацию своему знакомому, а тот – еще кому-нибудь. При каждой передаче информации шансы на то, что она останется точной, убывают.

Это был пример информации, хранимой в «аналоговом» виде. Положение ручки регулятора соответствует уровню освещения. Если ручка повернута наполовину, можно предположить, что и лампа будет гореть вполнакала. Измеряя или описывая то, насколько повернута ручка, Вы на самом деле сохраняете информацию не об уровне освещения, а о его аналоге – положении ручки. Аналоговую информацию можно накапливать, хранить и воспроизводить, но она неточна и, что хуже, при каждой передаче становится все менее точной.

Теперь рассмотрим не аналоговый, а цифровой метод хранения и передачи информации. Любой вид информации можно преобразовать в числа, пользуясь только нулями и единицами. Такие числа (состоящие из нулей и единиц) называются двоичными. Каждый нуль или единица – это бит. Преобразованную таким образом информацию можно передать компьютерам и хранить в них как длинные строки бит. Эти-то числа и подразумеваются под «цифровой информацией».

Пусть вместо одной 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 больше походил на электронный калькулятор, чем на компьютер, но двоичные числа представляли уже не примитивными колесиками, как в арифмометрах, а электронными лампами – «переключателями».

Солдаты, приписанные к этой огромной машине, постоянно носились вокруг нее, скрипя тележками, доверху набитыми электронными лампами. Стоило перегореть хотя бы одной лампе, как ENIAC тут же вставал и начиналась суматоха: все спешно искали сгоревшую лампу. Одной из причин – возможно, и не слишком достоверной – столь частой замены ламп считалась такая: их тепло и свечение привлекают мотыльков, которые залетают внутрь машины и вызывают короткое замыкание. Если это правда, то термин «жучки» (bugs), под которым имеются в виду ошибки в программных и аппаратных средствах компьютеров, приобретает новый смысл.

Когда все лампы работали, инженерный персонал мог настроить ENIAC на какую-нибудь задачу, вручную изменив подключения 6000 проводов. Все эти провода приходилось вновь переключать, когда вставала другая задача. В решении этой проблемы основную заслугу приписывают Джону фон Нейману, американцу венгерского происхождения, блестящему ученому, известному многими достижениями – от разработки теории игр до вклада в создание ядерного оружия. Он придумал схему, которой до сих пор следуют все цифровые компьютеры. «Архитектура фон Неймана», как ее теперь называют, базируется на принципах, сформулированных им в 1945 году. В их число входит и такой: в компьютере не придется изменять подключения проводов, если все инструкции будут храниться в его памяти. И как только эту идею воплотили на практике, родился современный компьютер.

Сегодня «мозги» большинства компьютеров – дальние потомки того микропроцессора, которым мы с Полом так восхищались в семидесятых, а «рейтинг» персональных компьютеров зачастую определяется тем, сколько бит информации (переключателей – в нашем примере со светом) способен единовременно обрабатывать их микропроцессор и сколько у них байт (групп из восьми бит) памяти и места на диске. ENIAC весил 30 тонн и занимал большое помещение. «Вычислительные» импульсы бегали в нем по 1500 электромеханическим реле и 17000 электронным лампам. Он потреблял 150000 ватт электроэнергии и при этом хранил объем информации, эквивалентный всего лишь 80 символам.

К началу шестидесятых годов транзисторы начали вытеснять электронные лампы из бытовой электроники. Это произошло через десятилетие после того, как в Bell Labs открыли, что крошечный кусочек кремния способен делать то же, что и электронная лампа. Транзисторы – подобно электронным лампам – действуют как электрические переключатели, потребляя при этом намного меньше электроэнергии, в результате выделяя гораздо меньше тепла и занимая меньше места. Несколько транзисторных схем можно объединить на одной плате, создав тем самым интегральную схему (чип). Чипы, используемые в современных компьютерах, представляют собой интегральные схемы, эквивалентные миллионам транзисторов, размещенных на кусочке кремния площадью менее пяти квадратных сантиметров.

В 1977 году Боб Нойс (Bob Noyce), один из основателей фирмы Intel, в журнале Scientific American сравнил трехсотдолларовый микропроцессор с ENIAC, кишащим насекомыми мастодонтом. Крошка-микропроцессор не только мощнее, но и, как заметил Нойс, «в 20 раз быстрее, обладает большей памятью, в 1000 раз надежнее, потребляет энергии столько же, сколько лампочка, а не локомотив, занимает 1/30000 объема и стоит в 10000 раз дешевле. Его можно заказать по почте или купить в местном магазине».