арифмометрами с отделениями для наличности.
Более полутора столетий назад видного британского математика озарила
гениальная идея, которая прославила его имя уже при жизни. Чарлз Беббидж
(Charles Babbage), профессор математики Кембриджского университета, по-
нял, что можно построить механическое устройство, способное выполнять
последовательность взаимосвязанных вычислений, - своего рода компьютер !
Где-то в начале тридцатых годов прошлого столетия он пришел к выводу,
что машина сможет манипулировать информацией, если только ту удастся
преобразовать в числа. Беббидж видел машину, приводимую в действие па-
ром, состоящую из штифтов, зубчатых колес, цилиндров и других механичес-
ких частей - в общем, настоящее детище начинавшегося тогда индустри-
ального века. По мысли Беббиджа, "аналитическая машина" должна была из-
бавить человечество от монотонных вычислений и ошибок, с ними связанных.
Для описания устройства машины ему, конечно, не хватало терминов -
тех, которыми мы пользуемся сегодня. Центральный процессор, или "рабочие
внутренности" этой машины, он называл "мельницей", а память - "хранили-
щем". Беббиджу казалось, что информацию будут обрабатывать так же, как
хлопок: подавать со склада (хранилища) и превращать во что-то новое.
Аналитическая машина задумывалась как механическая, но ученый предви-
дел, что она сможет следовать варьируемым наборам инструкций и тем самым
служить разным целям. В том же и смысл программного обеспечения. Совре-
менная программа - это внушительный набор правил, посредством которых
машину "инструктируют", как решать ту или иную задачу. Беббидж понимал,
что для ввода таких инструкций нужен совершенно новый тип языка, и он
изобрел его, использовав цифры, буквы, стрелки и другие символы. Этот
язык позволил бы "программировать" аналитическую машину длинными сериями
условных инструкций, что, в свою очередь, позволило бы машине реагиро-
вать на изменение ситуации. Он - первый, кто увидел, что одна машина
способна выполнять разные функции.
Следующее столетие ученые математики работали над идеями, высказанны-
ми Беббиджем, и к середине сороковых годов нашего века электронный
компьютер наконец был построен - на основе принципов аналитической маши-
ны. Создателей современного компьютера выделить трудно, поскольку все
исследования проводились во время второй мировой войны под покровом пол-
ной секретности, главным образом - в Соединенных Штатах и Великобрита-
нии. Основной вклад внесли три человека: Алан Тьюринг (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 больше походил на элект-
ронный калькулятор, чем на компьютер, но двоичные числа представляли уже
не примитивными колесиками, как в арифмометрах, а электронными лампами -
"переключателями".
Солдаты, приписанные к этой огромной машине, постоянно носились вок-
руг нее, скрипя тележками, доверху набитыми электронными лампами. Стоило
перегореть хотя бы одной лампе, как ENIAC тут же вставал и начиналась
суматоха: все спешно искали сгоревшую лампу. Одной из причин - возможно,
и не слишком достоверной - столь частой замены ламп считалась такая: их
тепло и свечение привлекают мотыльков, которые залетают внутрь машины и
вызывают короткое замыкание. Если это правда, то термин "жучки" (bugs),
под которым имеются в виду ошибки в программных и аппаратных средствах
компьютеров, приобретает новый смысл.
Когда все лампы работали, инженерный персонал мог настроить ENIAC на
какую-нибудь задачу, вручную изменив подключения 6000 проводов. Все эти
провода приходилось вновь переключать, когда вставала другая задача. В
решении этой проблемы основную заслугу приписывают Джону фон Нейману,
американцу венгерского происхождения, блестящему ученому, известному
многими достижениями - от разработки теории игр до вклада в создание
ядерного оружия. Он придумал схему, которой до сих пор следуют все циф-
ровые компьютеры. "Архитектура фон Неймана", как ее теперь называют, ба-
зируется на принципах, сформулированных им в 1945 году. В их число вхо-
дит и такой: в компьютере не придется изменять подключения проводов, ес-
ли все инструкции будут храниться в его памяти. И как только эту идею
воплотили на практике, родился современный компьютер.
Сегодня "мозги" большинства компьютеров - дальние потомки того мик-
ропроцессора, которым мы с Полом так восхищались в семидесятых, а "рей-
тинг" персональных компьютеров зачастую определяется тем, сколько бит
информации (переключателей - в нашем примере со светом) способен единов-
ременно обрабатывать их микропроцессор и сколько у них байт (групп из
восьми бит) памяти и места на диске. ENIAC весил 30 тонн и занимал
большое помещение. "Вычислительные" импульсы бегали в нем по 1500 элект-
ромеханическим реле и 17000 электронным лампам. Он потреблял 150000 ватт
электроэнергии и при этом хранил объем информации, эквивалентный всего
лишь 80 символам.
К началу шестидесятых годов транзисторы начали вытеснять электронные