Аналитическая машина задумывалась как механическая, но ученый предвидел, что она сможет следовать варьируемым наборам инструкций и тем самым служить разным целям. По сути, программное обеспечение представляет собой то же самое. Современная программа – это внушительный набор правил, посредством которых машину «инструктируют», как решать ту или иную задачу. Беббидж понимал, что для ввода таких инструкций нужен совершенно новый тип языка, и он изобрел его, использовав цифры, буквы, стрелки и другие символы. Этот язык позволил бы «программировать» аналитическую машину длинными сериями условных инструкций, что, в свою очередь, позволило бы машине реагировать на изменение ситуации. Беббидж был первым, кто увидел, что одна машина способна выполнять разные функции.
Следующее столетие ученые-математики работали над идеями, высказанными Беббиджем, и к середине сороковых годов прошлого века на основе принципов аналитической машины был наконец построен электронный компьютер. Создателей современного компьютера выделить трудно, поскольку все исследования проводились во время Второй мировой войны под покровом полной секретности, главным образом – в Соединенных Штатах и Великобритании. Основной вклад внесли три человека: Алан Тьюринг (Alan Turing), Клод Шеннон (Claude Shannon) и Джон фон Нейман (John von Neumann).
В середине тридцатых годов Алан Тьюринг – блестящий британский математик, как и Беббидж, получивший образование в Кембридже, предложил свой вариант универсальной вычислительной машины, которая могла бы в зависимости от конкретных инструкций работать практически с любым видом информации. Сегодня она известна как машина Тьюринга.
А в конце тридцатых Клод Шеннон, будучи студентом, доказал, что машина, выполняющая логические инструкции, может манипулировать информацией. В своей магистерской диссертации он рассмотрел, как с помощью электрических цепей компьютера возможно выполнять логические операции, где единица – «истина» (цепь замкнута), а нуль – «ложь» (цепь разомкнута). Здесь речь идет о двоичной системе счисления, иначе говоря, о коде. Двоичная система – это азбука электронных компьютеров, основа языка, на который переводится и с помощью которого хранится и используется вся информация в компьютере. Эта система очень проста и в то же время настолько важна для понимания того, как работают компьютеры, что, пожалуй, стоит рассказать о ней подробнее.
Во время Второй мировой войны Клод Шеннон начал разрабатывать математическое описание информации и основал новую область науки, впоследствии названную теорией информации. Шеннон трактовал информацию как уменьшение неопределенности. Например, вы не получаете никакой информации, если кто-то сообщает вам, что сегодня воскресенье, а вы это знаете. С другой стороны, если вы не уверены, какой сегодня день недели, и кто-то говорит вам, что сегодня воскресенье, вы получаете информацию, так как неопределенность уменьшается.
Теория информации Шеннона привела, в конечном счете, к значительным прорывам в познании. Один из них – эффективное сжатие данных, принципиально важное как в вычислительной технике, так и в области связи. Сказанное Шенноном, на первый взгляд, кажется очевидным: элементы данных, не передающие уникальную информацию, избыточны и могут быть отброшены. Так поступают репортеры, исключая несущественные слова, или те, кто платит за каждое слово, отправляя телеграмму или давая рекламу.
Двоичное представление чисел позволяет создавать калькуляторы, пользуясь преимуществами электрических цепей. Именно так и поступила во время Второй мировой войны группа математиков из 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 электромеханическим реле и 17 000 электронным лампам. Он потреблял 150 000 Вт электроэнергии и при этом хранил объем информации, эквивалентный всего лишь 80 символам.
К началу шестидесятых годов транзисторы начали вытеснять электронные лампы из бытовой электроники. Это произошло через десятилетие после того, как в Bell Labs открыли, что крошечный кусочек кремния способен делать то же, что и электронная лампа. Транзисторы, подобно электронным лампам, действуют как электрические переключатели, потребляя при этом намного меньше электроэнергии, выделяя гораздо меньше тепла и занимая меньше места. Несколько транзисторных схем можно объединить на одной плате, создав тем самым интегральную схему (чип). Чипы, используемые в современных компьютерах, представляют собой интегральные схемы, эквивалентные миллионам транзисторов, размещенных на кусочке кремния площадью менее пяти квадратных сантиметров.