Дорога в будущее - Билл Гейтс 4 стр.


Для описания устройства машины ему, конечно, не хватало терминов тех, которыми мы пользуемся сегодня. Центральный процессор, или "рабочие внутренности" этой машины, он называл "мельницей", а память – "хранилищем". Беббиджу казалось, что информацию будут обрабатывать так же, как хлопок: подавать со склада (хранилища) и превращать во что-то новое.

Аналитическая машина задумывалась как механическая, но ученый предвидел, что она сможет следовать варьируемым наборам инструкций и тем самым служить разным целям. В том же и смысл программного обеспечения. Современная программа – это внушительный набор правил, посредством которых машину "инструктируют", как решать ту или иную задачу. Беббидж понимал, что для ввода таких инструкций нужен совершенно новый тип языка, и он изобрел его, использовав цифры, буквы, стрелки и другие символы. Этот язык позволил бы "программировать" аналитическую машину длинными сериями условных инструкций, что, в свою очередь, позволило бы машине реагировать на изменение ситуации. Он – первый, кто увидел, что одна машина способна выполнять разные функции.

Следующее столетие ученые математики работали над идеями, высказанными Беббиджем, и к середине сороковых годов нашего века электронный компьютер наконец был построен – на основе принципов аналитической машины. Создателей современного компьютера выделить трудно, поскольку все исследования проводились во время второй мировой войны под покровом полной секретности, главным образом – в Соединенных Штатах и Великобритании. Основной вклад внесли три человека: Алан Тьюринг (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 символам.

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

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

Конечно, микропроцессор 1977 года теперь кажется просто игрушкой. Ведь сегодня во многих недорогих игрушках "сидят" более мощные компьютерные чипы, чем микропроцессоры семидесятых, с которых начиналась микрокомпьютерная революция. Но все современные компьютеры, каков бы ни был их размер или мощность, оперируют с информацией в виде двоичных чисел.

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

Пример с выключателями ламп продемонстрировал, что любое число можно представить в двоичном виде. А вот как то же самое сделать с текстом. По соглашению, число 65 кодирует заглавную латинскую букву A, 66 – B и т.д. В компьютере каждое из этих чисел выражается двоичным кодом, поэтому заглавная латинская буква A (десятичное число 65) превращается в 01000001, а буква B (66) – в 01000010. Пробел кодируется числом 32, или 00100000. Таким образом, выражение "Socrates is a man" ("Сократ есть человек") становится 136-разрядной последовательностью единиц и нулей.

Здесь легко проследить, как строка текста превратилась в набор двоичных чисел. Чтобы понять, как преобразуют другие виды данных в двоичную форму, разберем еще один пример. Запись на виниловой пластинке – это аналоговое представление звуковых колебаний. Аудиоинформация хранится на ней в виде микроскопических бугорков, расположенных в длинных спиральных канавках. Если в каком-то месте музыка звучит громче, бугорки глубже врезаются в канавку, а при высокой ноте бугорки располагаются теснее. Эти бугорки являются аналогами исходных колебаний звуковых волн, улавливаемых микрофоном. Двигаясь по канавке, иголка проигрывателя попадает на бугорки и вибрирует. Ее вибрация – все то же аналоговое представление исходного звука – усиливается и звучит из динамиков как музыка.

Виниловой пластинке, подобно всякому аналоговому устройству хранения информации, свойствен ряд недостатков. Пыль, следы пальцев или царапины на поверхности пластинки могут приводить к неадекватным колебаниям иглы, вызывая в динамиках потрескивание и другие шумы. Если скорость вращения пластинки хотя бы немного отклоняется от заданной, высота звука сразу же меняется. При каждом проигрывании пластинки игла постепенно "снашивавает" бугорки в канавке, и качество звучания соответственно ухудшается. Если же какую-нибудь песню записать с виниловой пластинки на кассетный магнитофон, то все "шероховатости" переносятся на пленку, а со временем к ним добавятся новые, потому что обычные магнитофоны сами являются аналоговыми устройствами. Таким образом, при каждой перезаписи или передаче информация теряет в качестве.

На компакт-диске музыка хранится как последовательность двоичных чисел, каждый бит которых представлен микроскопической впадинкой на поверхности диска. На современных компакт-дисках таких впадинок более 5 миллиардов. Отраженный лазерный луч внутри проигрывателя компакт-дисков – цифрового устройства – проходит по каждой впадинке, а специальный датчик определяет ее состояние (0 или 1). Полученную информацию проигрыватель реконструирует в исходную музыку, генерируя определенные электрические сигналы, которые динамики преобразуют в звуковые волны. И сколько бы такой диск ни проигрывали, его звучание не меняется.

Было бы удобно преобразовать всю информацию в цифровую форму, но возникает проблема обработки ее больших объемов. Слишком большое число бит может переполнить память компьютера или потребовать много времени на передачу между компьютерами. Вот почему так важна (и становится все важнее) способность компьютера сжимать цифровые данные и хранить или передавать их в таком виде, а затем вновь разворачивать сжатые данные в исходную форму.

Рассмотрим вкратце, как компьютер справляется с этим. Для этого надо вернуться к Клоду Шеннону, математику, который в тридцатых годах осознал, как выражать информацию в двоичной форме. Во время второй мировой войны он начал разрабатывать математическое описание информации и основал новую область науки, впоследствии названную теорией информации. Шеннон трактовал информацию как уменьшение неопределенности. Например, Вы не получаете никакой информации, если кто-то сообщает Вам, что сегодня воскресенье, а Вы это знаете. С другой стороны, если Вы не уверены, какой сегодня день недели, и кто-то говорит Вам – воскресенье, Вы получаете информацию, так как неопределенность уменьшается.

Теория информации Шеннона привела в конечном счете к значительным прорывам в познании. Один из них – эффективное сжатие данных, принципиально важное как в вычислительной технике, так и в области связи. Сказанное Шенноном, на первый взгляд, кажется очевидным: элементы данных, не передающие уникальную информацию, избыточны и могут быть отброшены. Так поступают репортеры, исключая несущественные слова, или те, кто платит за каждое слово, отправляя телеграмму или давая рекламу. Шеннон привел пример: в английском языке буква U лишняя в тех местах, где она стоит после буквы Q. Поэтому, зная, что U следует за каждой Q, в сообщении ее можно опустить.

Принципы Шеннона применяли к сжатию и звуков, и фильмов. В тридцати кадрах, из которых состоит секунда видеозаписи, избыточной информации чрезвычайно много. Эту информацию при передаче можно сжать примерно с 27 миллионов бит до 1 миллиона, и она не потеряет ни смысла, ни красок.

Назад Дальше