Первый электронный компьютер
К 100-летию его создателя — Мориса Уилкса
6 мая 1949 г. профессор Кембриджского университета Морис Уилкс (1913—2010) вычислил квадраты чисел от 0 до 99 на своей “первой в мире полностью электронной” ЭВМ EDSAC (Electronic Delay Storage Automatic Calculator) с “фон-Ноймановской архитектурой”, управлявшейся хранимой в памяти программой, что можно считать “днем рождения электронных компьютеров”.
Строго говоря, “самый первый компьютер” с управляющей программой и памятью — это Z-3 Конрада Цузе (Берлин, 1941 г.), но его основными элементами были телефонные реле.
В 1934 г. Уилкс окончил Кембриджский колледж Св. Джона (основан в 1511 г.), где учились поэт-романтик Вильям Вордсфорт (William Wordsworth, 1770—1850), математик Брук Тейлор (1685—1731, ряд Тейлора), физик Поль Дирак (1902—1984) и еще девять Нобелевских лауреатов.
Потом он поступил в легендарную Кавендишскую лабораторию (физфак Кембриджа), где в 1937-м защитил диссертацию о распространении радиоволн в ионосфере и остался ассистентом в лаборатории математики, а потом в новой лаборатории вычислительной техники. В 1939—1945 гг. служил в армии инженером по радиолокации и вернулся уже на должность заведующего.
В мае 1946 г. знакомый Уилкса астроном Лесли Джон Комри (1893—1950) привез доклад знаменитого математика Яноша фон Ноймана (с 1931 г. работал в США; известен как Джон фон Нойман) о начавшемся в США проекте ЭВМ EDVAC (First Draft of a Report on the EDVAC). Комри одолжил его Уилксу на одну ночь (!).
Л. Дж. Комри, в 1918 г. молодой новозеландский доброволец, на фронте лишился ноги и страдал сильной глухотой; потеряв подвижность, он еще в госпитале увлекся счетной машиной. Потом занялся астрономией, математикой и вычислительной техникой и в 1938 г. создал первую британскую машинно-счетную станцию (первая в СССР — 1926 г.). В годы войны во главе 30 сотрудников рассчитывал таблицы для Королевских ВВС (как и группа И. Я. Акушского в Москве, при штабе ВВС).
Увлекшись концепциями фон Ноймана о записи и хранении программы в ЭВМ, Уилкс сумел попасть на лекции “Теория и методы конструирования электронных цифровых компьютеров” в Школе Мура при Пенсильванском университете (август 1946 г.). Опоздав к началу, он успел к детальному описанию ENIAC и обсуждению принципов создания EDVAC, познакомился с математиками Дугласом Р. Хэртри (численный анализ в атомной физике) и Германом Х. Гольдштайном, конструкторами Джоном У. Мокли, Джоном Пр. Экертом и Ховардом Х. Айкеном и обсуждал с ними проблемы развития ЭВМ
Уилкс писал: “Главное событие моей жизни — в 1946 г. удалось прослушать уникальный учебный курс по компьютерам, который произвел на меня сильнейшее впечатление; о достижениях школы Мура и других зачинателей компьютерной техники тогда знали немногие. Слушателями этого курса были 28 человек из 20 организаций. Основные преподаватели — Дж. Мокли и Пр. Экерт, успешные разработчики ENIAC (первая большая ЭВМ, но без программ в памяти) и принципов конструирования EDVAC, они научили нас принципам построения цифрового компьютера…”.
В Кембридже ЭВМ EDSAC Уилкса с хранимой программой сделали силами математической лаборатории к 6 мая 1949 г. Судьба явно наградила его научное бескорыстие — он, сам того не ожидая, “пришел к финишу” первым, не имея “производственных мощностей”, чтобы соперничать с авторами EDVAC, казалось, бывшими “в пяти минутах” от успеха. Казалось…
Авторитет вошедшего в 1944 г. в “команду ЭВМ ENIAC” фон Ноймана привлек деньги военных на улучшенный проект — EDVAC. Однако в июне 1945 г. он сам обобщил результаты коллективных работ по ЭВМ в “том самом” отчете (101 стр.), где упоминал и принцип хранения программы в памяти компьютера вместе с данными (потому и названый “архитектура фон Ноймана”), и передал этот отчет куратору от армии по разработкам ЭВМ математику Г. Гольдштайну. Тот разослал его 24 ученым в США и Британии, поставив автором одного лишь фон Ноймана, что крайне разозлило Экерта и Мокли, фактически лишавшихся прав на собственные идеи и патенты.
Вдобавок ради “только что появившегося новичка” Гольдштайн грубо нарушил военную секретность, из-за которой они сами не могли опубликовать свои изобретения. Экерт так возненавидел Гольдштайна, что и три десятилетия спустя не желал находиться в одном с ним помещении.
Из-за патентного конфликта администрация требовала лишить разработчиков прав на личные финансовые выгоды. Мокли и Экерт возмутились такой постановкой вопроса и в марте 1946 г. ушли из института Мура, открыв свою фирму, а вскоре из проекта ушли и фон Нойман с Гольдштайном. Финальная смета EDVAC в пять раз (!) превысила проектную; работы затянулись на три года.
Десять лет труда над ЭВМ принесли Мокли и Экерту по 300 000 долл., но получены эти деньги были лишь от продажи их фирмы и за патенты на ENIAC, однако в 1973 г. Федеральный суд аннулировал их авторские права на ENIAC, так как они использовали идеи Джона Атанасова создавшего электронное устройство-прототип еще в начале 1940-х (даже не упомянув его).
Взгляды Уилкса и его европейских коллег позже выразил профессор Том Килбурн — автор ЭВМ “Манчестер МАРК-1” (1948—1950): “Тогда деньги не имели никакого отношения к нашей работе. Нас интересовала только наука — такие, как Гейтс, живут уже в другом мире”.
В 1949 г. Уилкс не знал, что работы по созданию ЭВМ ведутся не только в США — в разрушенном войной Киеве группа академика С. А. Лебедева уже детально разработала ЭВМ МЭСМ, а годом ранее, в 1948-м, в Москве академик И. С. Брук и Б. И. Рамеев запатентовали полный проект современной ЭВМ.
О своем “иностранном опыте” С. А. Лебедев докладывал госкомиссии: “Я имею данные по 18 американским машинам, это реклама без каких-либо сведений о том, как машины устроены. В вопросе постройки ЭВМ мы должны догонять заграницу (своими силами) и должны сделать это быстро. По данным заграничной литературы, проектирование и постройка машины ведется 5—10 лет, мы хотим построить ее за два года. Американские показатели следующие: время умножения на ENIAC — 5,5 мс, на EDVAC — 4 мс, на нашей машине 8—9 мс…”.
EDSAC почти повторял EDVAC — перфоленты ввода-вывода, 3000 электронных ламп, 32 ртутные ультразвуковые линии задержки (РУЛЗ), в каждой — 32 слова по 17 бит (с битом знака), всего 1024 знака (работали 512 двоичных слов). Дополнительные линии задержки поддерживали слова по 35 двоичных разрядов (включая бит знака), скорость 100—15 000 двоичных опс, мощность — 12 кВт, площадь — 20 м².
Но вот в программной части Уилкс стал первопроходцем. “Архаичное” двоичное кодирование команд он заменил кодами из букв и коротких английских слов и добавил мнемонику, отображая каждую команду заглавной буквой: S — “вычитание”, Т — “передать в память”, Z — “остановка машины” и т. д.
Этапным новшеством стала библиотека подпрограмм. Первые программисты записывали рутинные подпрограммы в блокноты, чтобы не составлять их заново, но в зависимости от места размещения подпрограммы в памяти изменялись адреса расположения ее команд и переменных, что было проблемой.
Уилкс автоматизировал настройку подпрограмм на точное место в памяти, написав несколько десятков унифицированных подпрограмм и собрав их в библиотеку: вычисления с плавающей запятой, комплексными числами, векторами и матрицами, логарифмы, функции, корни и т. д.
Теперь по короткой команде компьютер сам настраивал и размещал подпрограммы внутри основной программы. Библиотеку подпрограмм и мнемоническую схему, собиравшую их последовательности, он назвал assembly system (собирающая система) отсюда — “ассемблер”.
Еще одно, принципиально важное, изобретение Уилкса – микрокод (целая последовательность инструкций записывалась одной программной командой/строкой) позже названный “микропрограммированием”, придал ЭВМ дополнительную гибкость — система управления изменялась без изменения конструкции. Он же основал в 1957 г. Британское компьютерное общество и был его первым президентом.
EDSAC много использовали; в 1952 г. А. Сэнди Дуглас даже сделал на нем (возможно, первую) игру в “крестики-нолики” — «OXO» с выводом на экран. В СССР в начале 1950-х ее же и шахматные задачки придумал персонал Лебедевской БЭСМ.
С 1965-го Уилкс был профессором (и до 1980 г. директором) института.
В 1998 г. его ждал сюрприз — участие в симпозиуме “Компьютер в Европе” (Киев), там ветераны-ассистенты С. А. Лебедева (Б. Н. Малиновский, З. Л. Рабинович и др.) возили его в “ту самую лабораторию” и институт, где в 1948-1951 гг. рождалась МЭСМ. Впечатлили старика Уилкса и прогулки по Киевскому художественному рынку на Андреевском спуске (у Дома Булгакова) в окружении ровесников — создателей первых советских ЭВМ.
Кто изобрёл компьютер?
Дать однозначный ответ на вопрос «Кто изобрёл компьютер?» на самом деле не так просто. Как и в случае со многими другими изобретениями, свой вклад в появление компьютера внесли многие люди, работавшие в разных странах, да и на вопрос, какое же устройство, собственно, достойно называться первым компьютером, можно дать разные варианты ответов. Итак, в этом посте — про изобретателей компьютера.
Что такое компьютер? С одной стороны, компьютер считается разновидностью вычислительной техники, но важной его особенностью должна быть возможность не просто выполнять вычисления, пусть и сложные, но выполнять некую произвольно заданную программу. Т. е. устройства, предназначенные для решения лишь определённых задач, не подходят под определение компьютера, компьютер — это универсальное устройство для вычислений, которое можно запрограммировать.
История компьютеров начинается в 19 веке. В 1808 г. французский ткач Жозеф Мари Жаккар (или Жаккард) изобретает ткацкий станок, способный не просто производить ткань, а делать ткань с произвольными узорами. Фактически это был программируемый станок. Узор задавался при помощи пластинок с дырочками, просверленными в определённом порядке — перфокарт.
Перфокарты для станка Жаккара
В 1832 г. русский изобретатель Семён Николаевич Корсаков публикует проект специальных машин для обработки информации при помощи перфокарт. Фактически, это были машины для работы с базами данных. Однако изобретение не получило официальной поддержки, комиссия, рассматривавшая проект, высказала мнение, что «Г-н Корсаков потратил слишком много разума на то, чтобы научить других обходиться без разума».
Кто же придумал проект первого программируемого вычислительного устройства, т. е. компьютера? Этим человеком был англичанин Чарльз Бэббидж. Бэббидж был крайне разносторонним человеком, но известен прежде всего проектами вычислительных машин. В 1822 году он построил машину для расчётов логарифмических таблиц, эта машина стала позднее известна как малая разностная. Затем Бэббидж решил построить полномасштабную версию разностной машины, получил от правительства субсидию, но не уложился ни в сроки, ни в размеры финансирования. Вместо первоначальных трёх лет и 1500 фунтов стерлингов Бэббидж потратил 11 лет и 17000 фунтов, но так и не достроил машину. Лишь в 1991 к двухсотлетию Бэббиджа в Лондоне построили-таки работающую версию этой разностной машины.
Разностная машина Бэббиджа
Разностная машина — довольно сложное, но всё же узкоспециализированное вычислительное устройство. Назвать её компьютером нельзя. Однако в процессе работы над разностной машиной Бэббидж разработал проект ещё более сложной и универсальной аналитической машины, которая была, по сути, механическим компьютером. В этой машине был блок для хранения чисел, а сама она могла выполнять вычисления по программе, записанной на перфокартах. Увы, машина была слишком сложной и даже сегодня энтузиасты так и не решились её воспроизвести.
В 19м и начале 20го века развитие вычислительной техники продолжалось, но она всё ещё предназначалась для узкоспециализированных вычислений. В 1936 году английский математик Алан Тьюринг описал абстрактную машину, пригодную для произвольных вычислений. Описанная машина получила название машина Тьюринга. Фактически, Тьюринг определил критерии, по которым можно было определить, является ли вычислительная машина универсальной.
К концу 30-х существовали две возможности для постройки вычислительных машин. Более привычными были электромеханические машины, сочетающие электрические и механические элементы. Они считали очень медленно — одна операция могла занимать несколько секунд. Но в это время появилась и другая концепция — использовать в качестве элементов вакуумные лампы. Машины на вакуумных лампах — электронные — могли считать намного быстрее, но лампы были дорогими и не очень надёжными и часто перегорали.
Первые компьютеры появились между концом тридцатых и концом сороковых. Вопрос только в том, какое же устройство считать первым настоящим компьютером? Рассмотрим кандидатов.
1) Машины Конрада Цузе
Конрад Цузе был немецким инженером, по своей инициативе занявшимся разработкой вычислительных машин. В 1938 г. он на свои деньги разработал и построил первую электромеханическую машину, названную Z1, реализовал в ней возможность программирования, но она работала ненадёжно. В 1939 г. началась вторая мировая война и Цузе призвали на фронт, откуда ему удалось вернуться и создать вторую версию своей машины — Z2, а в начале 1941 — Z3. Вероятно, эти машины были первыми реально работавшими электромеханическими компьютерами. В 1941 Цузе вновь призвали на фронт. Как он ни доказывал руководству вермахта важность своих компьютеров, его не хотели слушать. Лишь после вмешательства фирмы Хеншель, выпускавшей самолёты, где Цузе ранее работал инженером, ему всё-таки разрешили вернуться к работе над своими вычислительными машинами. Предполагалось, что они будут использоваться для расчётов аэродинамических параметров самолётов. Руководство вермахта, впрочем, без энтузиазма отнеслось к разработкам и не видя в них особой ценности, финансировало очень неохотно. Следующую модель — Z4 Цузе закончил только после войны. В 1950 г. он продал эту модель в Швейцарию.
Z3 (восстановленная копия) в немецком музее
Z3 могла считывать программу с перфоленты и выполнять вычисления в соответствии с ней. Однако эта машина была электромеханической, поэтому работала очень медленно и не могла исполнять в явном виде команд условного перехода, которые считаются важной составляющей компьютерной программы. Можно ли считать Z3 первым в мире компьютером, а Конрада Цузе — его изобретателем? Некоторые считают, что да, некоторые — нет.
2) Компьютер Атанасова-Берри
В 1942 г. американский математик болгарского происхождения Джон Атанасов и помогавший ему инженер Клиффорд Берри построили первую на 100% электронную вычислительную машину без механических частей. Эта машина не была универсальной и предназначалась в основном для решения линейных уравнений, тем не менее, именно её в 1973 г. Федеральный районный суд США признал «первым компьютером». Возможно, из этой машины получилось бы нечто большее, если бы Атанасов не был призван в американскую армию.
3) Британские «Бомбы» и «Колоссы»
Во время второй мировой войны перед англичанами встала задача расшифровки немецких сообщений. Взломать немецкие шифры вручную было невозможно. Тогда англичане прибегли к помощи вычислительных машин.
В 1940 г. в Великобритании по проекту Алана Тьюринга была построена первая электромеханическая вычислительная машина для расшифровки немецкого кода «Энигма». Она получила название «Бомба». Одна такая машина весила 2,5 тонны и для того, чтобы расшифровать как можно больше сообщений, к 1944 году англичане построили 210 таких машин.
Но для передачи важных сообщений немцы использовали другой, ещё более сложный код «Лоренц». Для его расшифровки был спроектирован и построен (в количестве 10 штук) мощный электронный компьютер под названием «Колосс». Он был программируемой и довольно мощной для своего времени, но всё же не универсальной, а узкоспециализированной машиной. Спроектировал «Колоссы» и руководил их постройкой английский инженер Томми Флауэрс.
Можно ли считать «Бомбу» или «Колосс» первым компьютером? Возможно, но здесь снова есть аргументы и за, и против.
4) ЭНИАК
Переносимся в США. В 1943 г. учёные из Пенсильванского университета Джон Мокли и Джон Экерт задумали построить мощный электронный компьютер. Предполагалось, что его будут использовать в основном для расчётов артиллерийских таблиц — нудной и кропотливой работы, которая была поручена университету американской армией. Прежде таблицы рассчитывали люди с арифмометрами, и это отнимало у них много времени. Устройство назвали ЭНИАК (англ. ENIAC), сокращение от «Электронный числовой интегратор и вычислитель», и он мог производить расчёты в 2400 раз быстрее, чем человек с арифмометром.
ЭНИАК был построен к осени 1945 г. Он содержал более 10 тыс. электронных ламп, весил около 27 тонн и потреблял 150 кВт электроэнергии. К этому времени острая необходимость в расчётах артиллерийских таблиц отпала, и компьютер стали использовать и для других целей, например, для расчётов взрыва водородной бомбы, аэродинамики сверхзвуковых самолётов, прогноза погоды.
ЭНИАК без особых оговорок можно считать настоящим компьютером. Это была полностью электронная универсальная вычислительная машина, которая в полной мере продемонстрировала потенциал компьютеров. Кроме того ЭНИАК стал первым широко известным компьютером, информация о машинах Цузе и Атанасова всплыла позднее, а британские дешифровальные компьютеры были засекречены (и почти все уничтожены) по приказу Черчилля. Так что звание первого в мире компьютера ЭНИАК, вероятно, заслужил.
Всё же работать с ЭНИАКом было ещё не очень удобно. Программирование компьютера осуществлялось путём изменения положения кабелей и переключателей, и подготовка к расчётам часто занимала значительно больше времени, чем сами расчёты. Ещё до окончания работы американский математик Джон фон Нейман предложил использовать для будущих компьютеров архитектуру, предполагавшую хранения команд и данных в памяти. Эта архитектура стала основой при разработке последующих компьютеров.
Подведём итоги и ответим, наконец, кто изобрёл компьютер. К изобретению и созданию первых компьютеров так или иначе причастны:
Первое поколение. Компьютеры на электронных лампах (194х-1955)
Быстродействие: несколько десятков тысяч операций в секунду.
Особенности:
- Поскольку лампы имеют существенные размеры и их тысячи, то машины имели огромные размеры.
- Поскольку ламп много и они имеют свойство перегорать, то часто компьютер простаивал из-за поиска и замены вышедшей из строя лампы.
- Лампы выделяют большое количество тепла, следовательно, вычислительные машины требуют специальные мощные охладительные системы.
Примеры компьютеров:
Колоссус – секретная разработка британского правительства (в разработке принимал участие Алан Тьюринг). Это первый в мире электронный компьютер, хотя и не оказавший влияние на развитие компьютерной техники (из-за своей секретности), но помог победить во Второй мировой войне.
Эниак. Создатели: Джон Моушли и Дж. Преспер Экерт. Вес машины 30 тонн. Минусы: использование десятичной системы счисления; множество переключателей и кабелей.
Эдсак. Достижение: первая машина с программой в памяти.
Whirlwind I. Слова малой длины, работа в реальном времени.
Компьютер 701 (и последующие модели) фирмы IBM. Первый компьютер, лидирующий на рынке в течение 10 лет.
История науки: ЭНИАК, или Как обмануть военных
Как благодаря артиллерии появился один из самых мощных компьютеров, на какой обман из-за этого пришлось пойти и почему с созданием вычислительной машины опоздали, рассказываем в очередном выпуске рубрики «История науки».
Как и очень многое в нашей жизни, электронные вычислительные машины появились благодаря военным. Заказ на создание машины, о которой пойдет речь в нашей статье, поступил от артиллеристов. Действительно, расчет траектории полета снаряда — дело очень непростое, для точного вычисления места, куда попадет снаряд гаубицы или обычного орудия, нужно учитывать очень много параметров: возвышение ствола орудия, калибр и аэродинамические показатели снаряда, скорость ветра, давление, температуру и влажность воздуха, тип заряда, который заложен в орудие.
В те времена в армии США такими расчетами занималась Лаборатория баллистических исследований, которая издавала таблицы стрельб для каждого снаряда. Для этого девушкам-вычислителям Лаборатории требовалось совершить на механических арифмометрах около 1000 действий для каждой траектории. Всего траекторий в таблицах было около трех тысяч. Поэтому в 1943 году Электротехническая школа (институт) Мура Пенсильванского университета получила заказ на создание вычислителя, который делал бы всю эту работу.
Создатели ENIAC (слева направо): Джон Эккерт, Джон Брейнерд, Сэм Фелтман, Герман Голдстайн, Джон Мокли, Дин Пендер, генерал Гладеон Барнс, полковник Пол Гиллон
Институт Мура уже располагал к тому времени механическим вычислителем («дифференциальным анализатором»), который умел делать часть расчетов, и Джоном Мокли, который еще в 1942 году представил руководству докладную записку The Use of High-Speed Vacuum Tube Devices for Calculation, в которой предложил создать машину на электронных лампах, что намного ускорило бы работу. Правда, руководство поступило с новаторским предложением по-своему: сдало его в архив «без движения», а потом просто потеряло. Кроме того, в Институте имелся студент Джон Эккерт с фантастическим талантом инженера. Эккерт с Мокли и стали разработчиками архитектуры нового вычислителя.
Чтобы не спугнуть боящихся всего нового военных, новый проект для начала назвали electronic diff. analyzer. Не слишком сведущее военное руководство решило, что это всего лишь улучшенный электронными лампами уже имеющийся дифференциальный анализатор, и «купилось» на уловку, выделив 61 700 долларов на первые полгода по контракту W-670-ORD-4926. Тем более что авторы проекта клялись, что одну траекторию машина будет считать всего пять минут.
После одобрения проект переименовали: он стал называться «электронный числовой интегратор». Потом добавилось «и вычислитель». Так появился ENIAC — Electronic Numerical Integrator And Computer.
Уже к февралю 1944 года теоретическая работа была завершена: продумана архитектура и прописаны электрические схемы. Началась работа по сборке 27-тонной машины, которая длилась полтора года. Увы, к несчастью для военных, Вторая мировая тогда уже завершилась, даже ядерное оружие было испытано. Однако это был первый настоящий компьютер, которому нашлось применение в расчетах термоядерной бомбы и таблиц стрельб ядерными боеприпасами. История сохранила нам имена шести девушек: Франсис Билас, Рут Лихтерман, Кэтлин Макналти, Франсис Снайдер, Бетти Дженнингс, Мерилин Мельцер. Так звали первых программистов первого компьютера.