Во время работы в Блетчли-парке Тьюринг стал свидетелем появления Colossus. Этот факт, несомненно, стал сильным стимулом, который привел ученого к разработке своего первого компьютера Pilot АСЕ согласно собственным идеям и спецификациям.
В середине 1940-х — начале 1950-х годов создание разных моделей компьютеров по обе стороны Атлантики привело к полемике, которая до сих пор не дала ответа на вопрос, какая из стран стала первой в разработке и создании компьютеров.
После окончания Второй мировой войны Алан Тьюринг оставил Блетчли-парк и, как и остальные его товарищи, вернулся к гражданской жизни. К счастью, он получил приглашение от Национальной физической лаборатории (сокращенно по- английски NPL) в Лондоне, занимавшейся разработкой стандартов для науки и технологий. В то время во главе лаборатории стоял Чарльз Галтон Дарвин (1887-1962), внук Чарльза Дарвина (1809-1882), он и предложил Тьюрингу поучаствовать в разработке и создании компьютера. В 1946 году Тьюринг направил в NPL доклад с идеями, касавшимися практической реализации компьютера — машины, которую коллега Тьюринга Джон Уомерсли (1907-1958), начальник отдела математики лаборатории, назвал автоматической вычислительной машиной — Automatic Computing Engine (АСЕ). Слово engine (что в английском языке означает «двигатель») было принято в память о Чарльзе Бэббидже (1791-1871), создателе аналитической и дифференциальной машин, которые считаются предшественниками современных компьютеров. В своем докладе Тьюринг опередил время: он привел информацию о hardware, то есть об электронных схемах, а также о software, установив правила написания программ для компьютера АСЕ. Наконец ученому представился шанс совершить великий переход от теории к инженерному решению и провести в жизнь свою концепцию универсальных машин Тьюринга. Мечта становилась реальностью, воплощаясь в компьютер Pilot АСЕ.
В компьютерах, созданных в начале 1950-х годов, было два вида запоминающих устройств: лучевая катодная и ртутные трубки — с их помощью была разработана память с линией задержки. Инженеры той эпохи разработали вид памяти для хранения данных, который в качестве базового принципа использовал время, требующееся для распространения сигнала в физической среде, например ртути. Тьюринг для Pilot АСЕ выбрал ртутные линии задержки, так как они имели более высокую скорость восстановления данных и были более надежными. На концах ртутной линии располагались пьезоэлектрические элементы, как у микрофонов и громкоговорителей, выполняющие роль преобразователей, превращающих электрические импульсы в ультразвуковую волну (с частотой звука примерно 20000 Гц). После того как волна проходила через ртуть к другому концу трубки, она снова превращалась в электрические импульсы, направляемые на экран. В других компьютерах — EDSAC, CSIRAC и UNIVACI — также использовались ртутные трубки. Например, UNIVAC I, один из первых коммерческих компьютеров 1950-х годов, обладал семью резервуарами памяти, в каждом из которых находились 18 ртутных трубок. Скорость доступа к данным составляла 222 микросекунды — настоящее чудо для той эпохи. Каждая трубка могла хранить в памяти десять слов, например команды программы, длиной 12 бит.
Позже ртутные трубки заменили более передовым устройством, барабанами памяти. Это устройство памяти представляло собой металлический цилиндр с поверхностью, покрытой ферромагнитным слоем, сверху располагалась серия головок для чтения и записи. Магнитные барабаны были в ходу вплоть до начала 1960-х годов. В этом запоминающем устройстве для контроля его применения использовался метод чередования: расположение информации на барабане оптимизировалось для последовательного доступа, этот прием применяется на некоторых жестких дисках, при спутниковой или ADSL-передаче данных. С таким запоминающим устройством Pilot АСЕ мог хранить до 4096 последовательностей единиц и нулей. С тех пор в память об этом виде запоминающего устройства некоторые версии операционной системы Unix используют для управления виртуальной памятью директорию /dev/drum (drum — по-английски «барабан»). Благодаря всем этим характеристикам компьютер Тьюринга был одним из самых передовых в ту эпоху: объем его памяти приближался к объему памяти первых компьютеров Macintosh Apple.
Тьюрингу необычайно нравилось исследовать какую-либо тему, отходя от установленных принципов. Обычно он начинал предварительную работу над определенным вопросом без каких-либо консультаций. Несомненно, эта привычка придавала его трудам такое характерное свойство, как оригинальность.
Морис В. Уилкс об Алане Тьюринге. «Компьютеры, вчера и сегодня»
Управление памятью — это еще один вклад Алана Тьюринга в развитие информатики. Запись данных происходила с помощью так называемого метода двух направлений. Память компьютера логически организована как состоящая из ячеек. Положение каждой ячейки идентифицируется числом — адресом памяти. Команды, входящие в программу, например на языке BASIC-256 — print, dim или input, — составляют текст или ключевой код, то, что пишет программист и хранится в памяти компьютера после перевода в машинный код, представляющий собой последовательность единиц и нулей.
В компьютере, разработанном Тьюрингом, каждая команда ассоциировалась с адресом ячейки, где она хранилась, и с адресом следующей для выполнения инструкции. Английский ученый подчеркивал, что компьютер должен соответствовать двум требованиям: быстро выполнять программы и располагать достаточным объемом памяти. С тех пор все компьютеры стремились к максимальному удовлетворению этих критериев. Конструкционно компьютер был основан на электронных лампах в количестве около 800 штук — это было не очень много и повышало надежность, так как снижался риск того, что при работе одна или несколько ламп расплавятся и выполнение программы прервется. Частота в 1 мегагерц делала этот компьютер одним из самых быстрых в Соединенном Королевстве. При выполнении арифметических операций использовалась плавающая точка, то есть можно было, как и на современном компьютере, представить число с множеством десятичных знаков следующим образом: 6,127456 х 10~2 представляло число 0,06127456. Еще одним инновационным решением Тьюринга стала замена части hardware на software. Первые компьютеры использовали для выполнения операций умножения или деления электронные схемы. Так, в американских компьютерах часть задач, например арифметические операции, выполнялась электронными схемами, специально разработанными для этой цели. Тьюринг же заменил схемы программами, хранящимися в памяти, и эта идея была по-настоящему новой и более экономичной. Если мы перенесем данную идею на современный компьютер, то он благодаря частям software, называемым модулями, подпрограммами или приложениями, предложит нам игры и развлечения, поможет совершить подсчеты или воспроизвести видеоклип. Эта особенность в современных машинах унаследована именно от британских компьютеров. В 1947 году Тьюринг изобрел язык программирования, который назвал Abbreviated Code Instructions. Естественно, так как компьютер является универсальной машиной Тьюринга, ему требовался язык программирования для записи программ по каждой задаче.
Для настоящего любителя компьютеров нет ничего более увлекательного, чем попробовать поработать на старых, известных в истории отрасли компьютерах. Ретрокомпьютинг — это сборка старых компьютеров, включая software и периферийные устройства. Многие такие машины представлены в музеях, например Pilot АСЕ; другие, существовавшие в коммерческой версии, входят в частные коллекции, например Macintosh Classic или ZX Spectrum, или хранятся в собраниях исследовательских институтов, например PDP-11 в Digital Equipment Corporation. Попробовать, как работает старый компьютер, можно также с помощью эмуляторов. Чаще всего с этой целью используется SIMH — кроссплатформенный эмулятор, с помощью которого можно увидеть в работе компьютеры разных моделей PDP или Vax от Digital Equipment Corporation, модели Hewlett-Packard, Honeywell, IBM (1130 7090/7094) и другие. Сегодня очень много людей в мире увлекаются ретрокомпьютингом, что способствует лучшему пониманию истории и эволюции этих устройств.
Эмулятор компьютера Pilot АСЕ, разработанный Аланом Тьюрингом.
Несмотря на то что оригинальная версия компьютера была разработана Аланом Тьюрингом, его создание происходило очень медленно, и в 1948 году ученый оставил этот проект, а вместе с проектом — Лондон и NPL. Его сменил Джим Уилкинсон (1919-1986), специалист по математическому анализу, и 10 мая 1950 года Pilot АСЕ выполнил первую программу. В конце года компьютер был представлен публике и хорошо принят, так что ежедневная газета The London Times посвятила ему статью, в которой сравнивались время и ресурсы, требующиеся для выполнения подсчетов человеку и компьютеру. Весной 1951 года компьютер был введен в эксплуатацию, а использовался он до весны 1955-го. Сейчас он выставлен в Музее науки Лондона.
У Pilot АСЕ было несколько модификаций, которые продавались населению. Компьютеры DEUCE или Bendix G15, признанные первым персональным компьютером (ПК) в мире, продавались до 1970-х годов. Другим компьютером, унаследовавшим от Pilot АСЕ многие решения, был MOSAIC, использовавшийся Соединенным Королевством во время холодной войны. Любопытно, что требования Тьюринга к компьютерам стали стандартом для производителей. Так, Packard-Bell РВ250 был разработан на основе спецификаций ученого.
После Второй мировой войны Соединенное Королевство было самой развитой страной в сфере создания компьютеров. Британия обладала такими моделями, как уже упомянутый Pilot АСЕ, а также Baby, Ferranti Mark I, созданные в Манчестерском университете.
Однако, несмотря на это технологическое превосходство, британцы быстро сдавали позиции как в развитии компьютерной индустрии, так и в разработке и продаже периферийных и программных продуктов. Почему же Соединенное Королевство уступило лидерство США? Эндрю Ходжес, биограф, который сегодня лучше всех знаком с жизнью и работами Алана Тьюринга, высказывает гипотезу о том, что британское правительство любой ценой хотело получить атомную бомбу. Это может показаться странным, однако две атомные бомбы, сброшенные США в 1945 году на японские города Хиросима и Нагасаки, стали не только одним из последних аккордов войны, но и положили конец британской гегемонии в мире, закат которой начался в викторианскую эпоху. Возникли две новые сверхдержавы: Советский Союз и Соединенные Штаты Америки. После окончания войны единственной страной, которая смогла сконструировать атомный реактор и атомное оружие, стали США. В 1946 году Штаты внесли в ООН предложение о контроле деятельности, связанной с ядерной энергией, и в него были включены пункты о геологоразведке урана и радиоактивных материалов. Это предложение было отвергнуто Советским Союзом, началась холодная война. Ответ американской стороны не заставил себя ждать: был принят закон Макмагона, предусматривавший смертную казнь для американских граждан, нарушивших секретность по ядерной программе. Этот закон также прекращал традиционное сотрудничество с Соединенным Королевством и другими союзниками в рамках ядерной программы. Британцы, со своей стороны, приступили к созданию собственной ядерной бомбы. По сути, Соединенное Королевство обладало достаточными компьютерными мощностями для проведения расчетов, необходимых для создания ядерного оружия.
Расхождения между двумя странами привели к тому, что в 1949 году британцы построили EDSAC (Electronic Delay Storage Automatic Computer). Этот компьютер был разработан специалистом по информатике Манчестерского университета Морисом Уилксом (1913-2010) и имел невероятное сходство с американским соперником — EDVAC, новой версией ENIAC, разработанной в Пенсильванском университете. EDSAC использовал электронные схемы и примерно три тысячи электронных ламп, мог выполнять суммирование за 1,4 миллисекунды. Его можно было программировать с помощью подпрограмм, то есть порций кода, представленных алгоритмами.
Например, с его помощью можно было решать интегралы и дифференциальные уравнения — два важнейших инструмента расчетов и моделирования в прикладной математике.
К этому времени по обе стороны Атлантики уже имелся довольно большой список компьютеров: Colossus, ENIAC, EDVAC, EDSAC, но все же какая из стран изобрела первый?
ENIAC (Electronic Numerical Integrator and Computer) имел циклопические размеры. Он работал на 18 тысячах электронных ламп, что вызывало частые сбои, весил 27 тонн, занимал площадь 167 м2. Его разработчиками были Джон Преспер Эккерт (1919-1995) и Джон Уильям Мокли (1907- 1980) из Пенсильванского университета. Компьютер запустили в эксплуатацию в феврале 1946 года. Он представлял собой программируемое устройство, предназначенное для военных целей, и использовался в лаборатории баллистических исследований. Если память компьютера Тьюринга, Pilot АСЕ, была примерно такой.же, как у Macintosh Apple, то расчетная мощность ENIAC была аналогична интегральным схемам 2004 года. При этом у ENIAC вообще не было основной памяти. Также он использовал десятичные числа, то есть знаки 0,1, 2,... 9 и их комбинации (например, 645), а не двоичный код (только 0 и 1), как современные компьютеры. Арифметические операции, например суммирование, выполнялись с помощью электронных эмуляторов колес и зубчатых передач старых вычислительных машин.
Как и британский Colossus, этот компьютер использовал вентили И и ИЛИ, созданные на основе цепи электронных ламп. Для программирования необходимо было соединить около шести тысяч переключателей и несколько сотен проводов. Имелась также система аккумуляторов, напоминающая ячейки Excel, с помощью которых можно было параллельно суммировать и вычитать величины, сохраняя результаты. Также можно было умножать, делить и извлекать квадратный корень, для этого аккумуляторы управлялись специальными модулями для умножения, деления и извлечения квадратного корня соответственно, к названным модулям добавлялись еще девять модулей. При соединении модулей друг с другом проводами получалась программа управления компьютером. Несмотря на эту чрезвычайную сложность, вызванную примитивностью конструкции, ENIAC мог выполнять пять тысяч простых сложений или вычитаний в секунду, 385 операций умножения, 40 операций деления и извлечение трех квадратных корней. При некоторой изобретательности, а также терпении можно было программировать повторяющиеся задачи или операторы цикла, похожие на оператор цикла for-to и условные операторы if-then. В 1948 году Джон фон Нейман изобрел устройство, аналогичное современной памяти ROM (ПЗУ, постоянное запоминающее устройство), или память только для чтения, которая была успешно применена на ENIAC. В1950 году в результате использования ENIAC в Соединенных Штатах появилась компания UNIVAC, с которой родилась современная компьютерная индустрия. Осенью 1955 года ENIAC был отключен. Так этот мастодонт, затмивший успехи британцев (Colossus, Pilot АСЕ, Baby, Ferranti Mark I), сыграл свою роль. Спустя годы UNIVAC передал пальму первенства IBM, а США с тех пор доминируют на мировом рынке компьютеров.
Компьютер ENIAC в Пенсильванском университете, США.
Согласно американским архивным документам, один из авторов ENIAC, Джон Уильям Мокли (1907-1980), вдохновился созданием другого компьютера под названием ABC (Atanasoff-Berry Computer), который был сконструирован инженером-электронщиком Джоном Винсентом Атанасовым (1903-1995) в Айовском университете с использованием нескольких сотен электронных ламп. Однако есть и те, кто защищает другую версию: первым компьютером был Mark I Говарда Эйкена (1900— 1973), построенный между 1939 и 1940 годами. Этот компьютер был создан в сотрудничестве с IBM, в нем использовались зубчатые механизмы, колеса и реле согласно идеям британского ученого Бэббиджа. С другой стороны, в Европе также появился первый компьютер — Colossus, при этом он не был универсальной машиной Тьюринга. Есть еще одна версия: первый компьютер создал в 1930-е годы немецкий студент инженерного факультета Конрад Цузе (1910-1995). Машина Цузе могла выполнять операции в двоичной системе исчисления с использованием реле, которые действовали как переключатели: они могли быть включены — состояние 1, или выключены — состояние 0. Первую машину Цузе собрал в спальне своих родителей, затем эта модель была улучшена, однако Вторая мировая война разрушила мечты конструктора. Подводя итог, мы можем сказать, что компьютер был британо-американским изобретением, задуманным для решения военных задач и реализованным в ходе Второй мировой войны и сразу после нее.
Американский математик венгерского происхождения Джон фон Нейман (1903-1957), еще один гениальный исследователь, наравне с Аланом Тьюрингом внес огромный вклад в развитие информатики. Тьюринг и фон Нейман были старыми знакомыми еще со времен первой встречи в Принстонском университете в Нью-Джерси. Фон Нейману были прекрасно известны работы Тьюринга по вычислительной теории и его знаменитые машины, особенно его заинтересовала универсальная машина Тьюринга, изучением которой фон Нейман занимался на протяжении нескольких лет.
Алан Тьюринг (стоит) работает с двумя коллегами за компьютером Ferranti Mark I в Манчестерском университете в 1951 году.
1952 год, оператор управляет предварительной версией Pilot АСЕ — компьютера, разработанного Тьюрингом для общего применения.
Фон Нейман (1903- 1957) работал над очень разными темами и, как и Тьюринг, во все проекты привносил свой талант и блестящие интеллектуальные способности. Он занимался исследованиями в области квантовой механики, теории игр, информатики, участвовал в Манхэттенском проекте по разработке первой атомной бомбы, работал консультантом в ЦРУ, в корпорации RAND (РЭНД), являющейся исследовательским центром, сотрудничающим с американской армией, в таких предприятиях, как IBM, и в нефтяной компании Standard Oil. Работа фон Неймана в проекте, связанном с созданием одного из первых компьютеров, ENIAC, позволила ему сформулировать правила организации компонентов компьютера, или архитектуру фон Неймана. Он работал с самыми первыми компьютерами в мире, например EDVAC или, на этапе разработки, IAS — компьютером, созданным для Института перспективных исследований в Принстоне. Описание, объясняющее, как построить IAS, свободно распространялось по университетам и предприятиям всего мира, так что возникла целая серия машин IAS: Johniac, Mistic, Oracle, ORDVAC, Weizac, MUSALINO-I, SILLIAC и другие.
Джон фон Нейман рядом с компьютером IAS.
Еще одним достижением фон Неймана является введение понятия самовоспроизводящейся машины, то есть автомата, способного создавать другие автоматы и обладающего свойством самовоспроизведения подобно микроорганизмам или бактериям. В Манхэттенском проекте фон Нейман совместно с математиком Станиславом Уламом (1909-1984) разработал метод Монте-Карло — вид численных методов с широким применением, в которых используются компьютер и случайные числа. Выяснив, что разрушительная сила бомбы больше, если она сдетонирует до момента столкновения с землей, фон Нейман рассчитал, на какой высоте должны взорваться бомбы над Хиросимой и Нагасаки, чтобы взрыв причинил как можно больший ущерб. В 1957 году ученый умер от рака. Его последняя работа «Компьютер и мозг» была опубликована посмертно.
В 1944 году он присоединился к команде, строившей ENI АС, для того чтобы усовершенствовать и исправить некоторые ограничения и недостатки этой довольно примитивной машины. Результаты его работы были воплощены в следующем после ENIAC поколении компьютеров. Два самых известных — EDVAC (Electronic Discrete Automatic Computer) и ORDVAC (Ordnance Discrete Variable Automatic Computer). ORDVAC был первой машиной в истории, для которой был написан компилятор для языка программирования FORAST. Пользователь писал программу на исходном коде, а компилятор переводил ее в исполняемую версию, машинный код.
В 1945 году фон Нейман опубликовал знаменитый доклад «Первый черновик отчета о EDVAC» (First Draft of a Report on EDVAC), где излагались принципы архитектуры фон Неймана (см. схему).
Ученый попытался определить, каким образом, с точки зрения логики, должны быть организованы компоненты компьютера, не учитывая электронных комплектующих. С тех пор этой модели следуют все разработчики компьютеров. Согласно архитектуре фон Неймана, компьютер состоит из следующих элементов.
— Устройство ввода, или input ("например, клавиатура для ввода данных).
— Выходное устройство, или output (например, монитор, на котором видны результаты операций).
— Арифметико-логическое устройство (АЛУ): выполняет арифметические (суммирование, вычитание, умножение, деление) и логические операции. К логическим операциям относятся операции сравнения, допустим в такой задаче: проверить, является ли А меньше, чем В(А< В), или условные выражения, например на языке BASIC-256 выражение IF-THEN:
if chr(a) = "A" then
print "Ты нажал на А!!!"
Также это могут быть повторяющиеся задачи или операторы цикла. Например, в этой версии языка BASIC мы можем записать символы кода ASCII, используя оператор цикла FOR-ТО:
for i=l to 256
print chr(i)
next i
— Контрольное устройство — элемент, управляющий обработкой команд программы. Например, в программе BASIC-256 последовательность инструкций rem, clg, f astgraphics... должна выполняться одна за другой в порядке появления. Еще одна задача контрольного устройства — интерпретировать значения инструкции и передавать их АЛУ. Например, если в кодовой строке стоит оператор *, АЛУ дается указание осуществить операцию умножения.
— Для того чтобы программа выполнялась, она должна храниться в основной памяти. В современных компьютерах основная память — это память ОЗУ.
В 1948 году Тьюринг ушел из Национальной физической лаборатории (NPL) и начал работать в Манчестерском университете. Там уже трудился его друг и учитель Макс Ньюман, математик из Кембриджа, который принимал участие в разработке и строительстве Colossus в Блетчли-парке. Ученые хотели организовать в университете лабораторию для разработки и конструирования компьютеров для научных, а не военных целей. Этот амбициозный проект начался под покровительством Королевского общества, одного из старейших научных обществ Британии, обладавшего высоким авторитетом в Европе. Так появилась вычислительная лаборатория Королевского общества в Манчестерском университете. Тьюринг взял на себя задачу разработки программ по численному анализу — разделу математики, занимающемуся созданием алгоритмов для решения с помощью компьютера задач по оптимизации, интегральному исчислению, дифференциальных уравнений, операций с матрицами и других, то есть для всех инструментов прикладной математики. После разработки программ должен был появиться компьютер для их выполнения.
Несмотря на азарт, с которым Тьюринг принялся за программирование, он никогда не оставлял спорт и даже стал кандидатом на участие в Олимпийских играх 1948 года, правда, в конце концов ученый не вошел в сборную Королевства.
В этой лаборатории появилось еще одно британское изобретение — компьютер, сначала названный Baby. Позже популярным стало название MADAM — сокращение от Manchester Automatic Digital Machine (Манчестерская автоматическая цифровая машина), но официально он назывался Manchester Mark I. Его создателями были Фредерик Уильямс (1911-1977) и Том Килбурн (1921-2001). Запуск компьютера был осуществлен весной 1948 года. У него была основная память и электронно-лучевая трубка, направлявшая поток электронов на стеклянный экран со свинцово-фосфорным покрытием. Manchester Mark I мог хранить программу с 17 командами в виде изображения на экране.
Язык Тьюринга, названный так в его честь, был создан в 1982 году Риком Хольтом и Джеймсом Корди в Университете Торонто (Канада). Этот язык программирования похож на Pascal и используется для изучения программирования студентами вузов. Существует несколько версий этого языка: классическая, объектно-ориентированная и Turing Plus. С 2007 года предприятие Holt Software Associates, занимающееся этой версией, прекратило участие в проекте, но среду разработки можно бесплатно скачать на http://compsci.ca/holtsoft/. Как и многие другие языки программирования, этот также считается Тьюринг-полным, так как с его помощью можно написать любую программу, которую способна выполнить универсальная машина Тьюринга. Примерами неполных по Тьюрингу систем являются формулы листов для расчетов, например Excel, или XML, используемый в интернете для обмена информацией в структурированном формате. Простой пример такой программы:
put "Привет, Тьюринг!", при ее выполнении мы получаем:
Привет, Тьюринг!
В ту эпоху в разработке компьютеров фундаментальной проблемой стала система памяти. Любопытно, что мысль о необходимости основной памяти для временного хранения программы была высказана Тьюрингом еще в 1936 году, и память была одним из элементов машины Тьюринга. Идея использования для памяти электронно-лучевой трубки принадлежала Уильямсу, эксперту по радарам, обратившемуся после войны к компьютерным разработкам. Так родилась трубка Уильямса, представлявшая собой первую в мире систему основной памяти, эквивалента сегодняшнего ОЗУ Электронно-лучевая трубка хранила на экране знаки 0 и 1 в виде точек и вертикальных тире соответственно. Устройство памяти Уильямса использовалось на компьютерах Манчестерского университета и максимально могло хранить 1024 бита, или 128 байт (байт — последовательность из 8 бит). Эта система хранения была дополнена магнитным барабаном, который, как и жесткий диск сегодня, выполнял функции вспомогательной памяти.
Еще одной интересной идеей, воплощенной в этих компьютерах, была запись команд в виде двоичного кода. Например, 1001 могло означать «умножение», в то время как 1011 означает в двоичной системе число 19. Таким образом, команды и числа отличались только своим использованием в компьютере. В 1950 году был опубликован «Учебник по программированию» для пользователей Manchester Mark I. Этот компьютер имел также коммерческую версию Ferranti Mark I, включавшую систему программирования, разработанную Тьюрингом. Несколько образцов было продано в Соединенном Королевстве, а также в Канаде, Нидерландах, Италии. Компьютер использовали для решения разнообразных задач в промышленности, кристаллографии, шахматах и др.