Компьютер Атанасова
Компьютер Атанасова
Allan R. Mackintosh
Те, кого в течение десятилетий считали изобретателями первых электронных цифровых компьютеров, на самом деле не были первыми. Эта честь принадлежит физику Джону В. Атанасову
История, наконец, вспомнила о Джоне В. Атанасове. После нескольких десятилетий, прожитых в безвестности, этот 84-летний профессор физики, уже давно ушедший на пенсию, получает теперь признание специалистов по вычислительной технике за то, что он сделал почти полвека назад - за изобретение первого электронного цифрового компьютера. Впоть до самого недавнего времени во всех официальных трудах по истории вычислительной техники эта заслуга обычно приписывалась другим.
В этих трудах говорится, что современные компьютеры ведут свою родословную от машин, появившихся в конце 30-х - начале 40-х годов, когда было сделано много взаимно дополнявших и стимулировавших друг друга попыток автоматизировать, ускорить или каким-то образом устранить необходимость в долгих, утомительных ручных вычислениях.
Например, в 1932 г. Ванневар Буш из Массачусетского технологического института построил механический компьютер, названный дифференциальным анализатором, в котором вычисления выполнялись посредством вращающихся шестеренок и валиков.
В конце 30-х годов Конрад Цузе в Германии, Джон Р. Стибиц из компании Bell Telephone Laboratories и Говард Эйкен из Гарвардского университета (в сотрудничестве с корпорацией IBM) независимо друг от друга разработали "электромеханические компьютеры", в которых наборы электрически управляемых устройств, называемых реле, представляли числа. "Включенное" и "выключенное" положение реле соответствовали цифрам 0 и 1 двоичной системы счисления, или системы с основанием 2. (В отличие от стандартной десятичной системы счисления, или системы с основанием 10, в которой числа представляются цифрами от 0 до 9, в двоичной системе все числа выражаются комбинациями из двух цифр - 0 и 1.)
Далее в этих трудах говорится о том, что первые электронные компьютеры были изобретены в середине 40-х годов. В отличие от механических и электромеханических электронные компьютеры собираются преимущественно на электронных лампах, транзисторах, а самые современные - на интегральных микросхемах. Первой такой машиной, по общему мнению, считается "Колосс", построенный математиками Аланом М. Тьюрингом, X.А. Ньюменом и их коллегами из Исследовательского центра в Блетчли (Англия). Эта машина, начавшая работать в 1943 г., помогла расшифровать систему секретных германских кодов и таким образом существенно повлияла на ход второй мировой войны. Вторая машина получила название "Электронного численного интегратора и компьютера", сокращенно "ENIAC", и была построена Джоном У. Мочли и Дж. Преспером Экертом с группой сотрудников из Пенсильванского университета. Она начала работать в 1945 г.
Однако на самом деле в период между 1937 и 1942 гг., т.е. за несколько лет до того, как были созданы упомянутые машины, Атанасов сконструировал и построил два сравнительно небольших электронных компьютера. Первый из низ послужил прототипом более мощной машины, которая получила название компьютера Атанасова-Берри, или сокращенно "АВС". Берри - это покойный Клиффорд Е. Берри, аспирант и ближайший помощник Атанасова, работавший вместе с ним с 1939 по 1942 г.
Запоздалое признание заслуг Атанасова не является результатом научного исследования. Скорее оно было следствием судебного процесса, начавшегося в 1967 г. между корпорацией Sperry Rand и компанией Honeywell, Inc. В свое время корпорация Sperry приобрела патент на компьютер "ENIAC" и взыскивала определенный процент от доходов других фирм, производящих электронные вычислительные машины. Компания Honeywell отказалась платить. Sperry подала в суд, a Honeywell предъявила встречный иск, обвинив корпорацию Sperry в нарушении антитрестовского закона и попытке воспользоваться недействительным патентом.
Представители компании Honeywell заявили, что патент следует считать недействительным, поскольку во время подготовки к судебному процессу со Sperry юристы компании натолкнулись на упоминание об Атанасове. Когда они разыскали его, Атанасов, до того не очень хорошо знакомый с устройством компьютера "ENIAC", сравнил конструкцию последнего со своей машиной. Выяснилось, что параграфы патента на "ENIAC" (по существу перекрывавшие все аспекты конструкции электронных вычислительных машин) отражали конструктивные особенности компьютера "АВС" и соответствовали той информации, которой Атанасов поделился с Мочли в начале 40-х годов.
Свидетельские показания Атанасова произвели сильное впечатление, и окружной суд Миннеаполиса 19 октября 1973 г. постановил считать патент на компьютер "ENIAC" недействительным. Судья заявил, что Мочли и Экерт "не были первыми изобретателями автоматического электронного цифрового компьютера, они лишь воспользовались идеями некоего д-ра Джона Винсента Атанасова". И во время суда, и впоследствии Мочли отказывался признать, что заимствовал что-либо существенное у Атанасова. Вдова Мочли, Экерт, и многие другие и теперь придерживаются этого мнения, но я считаю, что материалы суда явно противоположны утверждениям Мочли.
Решение судьи Ларсона, принятое корпорацией Sperry без апелляций в высшие судебные инстанции, не сразу принесло признание Атанасову в широких кругах общественности отчасти потому, что американская пресса в то время была поглощена уотергейтским скандалом, который привел к отставке президента Никсона. Тем не менее сведения о роли Атанасова постепенно стали просачиваться в научно-технические круги, и тот факт, что Атанасов был первым, кто изобрел и сконструировал электронный цифровой компьютер, теперь уже стал общепризнанным.
В значительной мере это признание было заслугой А. Беркса, участвовавшего в разработке компьютера "ENIAC", и его супруги Алисы. Чета Берксов (он - профессор, а она - ассистент кафедры электроники и вычислительной техники Мичиганского университета) тщательно исследовала работу Атанасова над созданием компьютера "АВС" и описали результаты своих исследований (в том числе и судебный процесс по поводу патентных прав) в получившей широкую извесность статье, а недавно и в книге.
Путь, который привел к созданию компьютера Атанасова-Берри, по существу начался еще в конце 20-х годов, когда Атанасов работал над докторской диссертацией в Университете шт. Висконсин в Мадисоне. Диссертация была посвящена электронной структуре атомов гелия и потребовала многих недель кропотливых вычислений, выполнявшихся на настольном калькуляторе. Утомленный бесконечными расчетами, Атанасов стал мечтать от автоматизированных вычислительных устройствах. Эта идея не покидала его и после того, как он успешно защитил свою диссертацию в 1930 г. и получил должность преподавателя в Колледже (а позднее университете) шт. Айова.
Работая в университете, Атанасов в течение нескольких лет обдумывал возможные способы автоматизации вычислений. К зиме 1937 г. он уже принял решение по нескольким основным принципиальным вопросам. Например, он пришел к выводу, что функции памяти - запоминание данных - должны быть отделены в машине от вычислительных функций, а также что метод вычисления должен быть скорее цифровым, чем аналоговым: машина должна представлять числа в виде цифр, а не посредством аналога с какой-либо физической величиной, такой как расстояние, отмеряемое на логарифмической линейке. Атанасов подумывал также над идеей проводить вычисления в системах счисления с основанием, отличным от 10. Однако эти идеи, по-видимому, никак не выкристаллизовывались в единое целое, как он вспоминал позже, и это все больше удручало его. И вот однажды, ненастным зимним вечером к нему сразу же пришло несколько важнейших решений.
Сначала этот вечер не выглядел особенно обещающим. На самом деле Атанасов был так раздосадован, что, покинув лабораторию, сел в машину и поехал на большой скорости по шоссе, целиком сконцентрировав свое внимание на вождении, чтобы развеяться и отвлечься от неприятных переживаний. Через несколько часов он очутился в 200 милях от дома, в штате Иллинойс. Он остановил машину у ярко освещенного придорожного бара, чтобы чего-нибудь выпить.
"В тот день было ужасно холодно и на мне было очень тяжелое зимнее пальто, - вспоминал он в своих свидетельских показаниях на суде. - Я снял его, повесил, сделал заказ официанту и, когда он принес спиртное, я вдруг ощутил, что успокоился и обратился опять к своим размышлениям о вычислительных машинах. Я не знаю, почему моя голова вдруг заработала и почему она не работала до этого, но все как-то прояснилось, я думал четко и спокойно... Наверное, я выпил две рюмки, прежде чем понял, что мне приходили в голову очень хорошие мысли и я существенно продвинулся вперед".
И действительно, мысли оказались очень важными. Вместо механических устройств Атанасов решил применять электронные переключатели (электронные устройства, управляющие прохождением электрических сигналов), с помощью которых должны были выполняться функции управления и арифметические операции в компьютере. В этом смысле ему принадлежит первенство. До этого ни одна машина, предназначенная для решения сложных математических задач, не была основана на электронике.
Он пришел также к убеждению, что его цифровая машина должна оперировать двоичными числами и что операции над этими числами будут осуществляться в соответствии с правилами логики, а не прямым подсчетом (см. рисунок ниже). В тот же вечер Атанасов решил и важную частную проблему, касающуюся способа хранения в памяти двоичных чисел. Он и раньше подумывал над идеей воспользоваться конденсаторами, устройствами, накапливающими и хранящими электрический заряд, в качестве запоминающих элементов компьютера. Например, положительный заряд на каком-то одном выводе конденсатора мог представить цифру 1, а отсутствие заряда соответственно 0. Проблема заключалась в том, что конденсаторы постепенно теряют свой заряд. Расслабившись в придорожном баре, Атанасов придумал способ обойти это затруднение, воспользовавшись так называемой регенерацией памяти. Периодически заряд конденсатора должен был восстанавливаться таким образом, что, если он был, скажем, в положительном состоянии, то он и дальше в нем оставался, и его положительный заряд со временем не изменялся и не доходил в конце концов до нуля. Приняв эти решения, вспоминает Атанасов, "поздно вечером я опять сел в машину и теперь уже медленно поехал домой".
Прототип компьютера "АВС" был построен в 1939 г. с целью проверить две основные идеи. Атанасов намеревался постоянно перезаряжать, или регенерировать, конденсаторы памяти, чтобы они не теряли заряд непредсказуемым образом. Он также намеревался проводить вычисления посредством логических схем - набора электронных ламп, который складывает или вычитает двоичные числа в соответствии с логическими правилами, а не прямым подсчетом. Прототип оказался успешным. При повороте диска памяти (розовое колесо), на каждой стороне которого конденсаторы хранили по одному 25-разрядному двоичному числу, одна логическая схема (внизу посередине) складывала или вычитала числа, записанные в памяти на противоположных сторонах диска. Одновременно с тем, как логическая схема выполняла вычисления над очередным разрядом чисел (запоминая в процессе разряд переноса или заема или считывая его из конденсатора переноса), схема регенерации (слева внизу) обновляла содержимое памяти.
Поскольку современные компьютеры по-прежнему оперируют двоичными разрядами, хранимыми в памяти, согласно логическим правилам, а функции вычисления и (регенерируемой) памяти разделены, основополагающие решения Атанасова стоят того, чтобы рассмотреть их более детально. Почему, например, цифровая машина предпочтительнее аналоговой для вычислительных приложений?
Мудрость решения, принятого на этот счет Атанасовым, лучше всего можно проиллюстрировать, сравнивая компьютер "АВС" с дифференциальным анализатором Буша, являвшимся в то время самым эффективным вычислительным устройством для научно-технических расчетов. Помимо того что он был по существу механическим устройством, дифференциальный анализатор представлял собой аналоговую вычислительную машину: его результаты представлялись углом поворота валиков.
Аналоговые компьютеры являются неплохим средством для многих применений, но, поскольку вместо операций над числами в них производятся измерения физических величин, точность вычислений неизбежно теряется, Цифровой компьютер Атанасова легко достигал точности в 1000 раз выше по сравнению с точностью дифференциального анализатора. Более того, в случае надобности точность компьютера можно было легко повысить, добавив еще несколько разрядов. У аналоговых компьютеров повышение точности достигается с большим трудом и обходится очень дорого. Например, чтобы повысить точность логарифмической линейки, скажем, в 10 раз, во столько же раз придется увеличить ее длину.
В наши дни цифровые вычисления основаны на двоичной системе счисления. Разумеется, Атанасов был не единственным человеком, кому пришла в голову эта идея; несколько первых электромеханических компьютеров были также двоичными, однако Атанасов был первым, кто решил воспользоваться электронными устройствами для операций над двоичными разрядами. Как выглядит число по основанию 2? В десятичной системе каждый разряд числа представляет справа налево определенное цифрой в "том разряде количество единиц, десятков сотен, тысяч и т.д. Следовательно, обозначение 237 представляет 2 раза по 102, плюс 3 раза по 101, плюс 7 раз по 100 (всякое число в степени 0 равно 1). В двоичном представлении каждый разряд, или бит, как его называют, означает определенное число (нуль или один) единиц, двоек (21), четверок (22), восьмерок (23), 16 (24) и т.д. Таким образом, десятичное число 237 в двоичной системе счисления будет представлено как 11101101. Подсчитаем это число слева направо. Оно "содержит" по одному числу 27 (т.е. 128 в десятичной системе), 26 (64), 25 (32), 23 (8), 23 (4) и 20 (1) и ни одного числа 24 или 21.
Для человека двоичная система, очевидно, неудобна, но, поскольку все числа в ней можно представить при помощи лишь двух символов, 1 и 0, она дает очень важные преимущества при работе с машиной, поскольку позволяет программисту представлять любое число в виде последовательности элементов в одном из двух состояний, таких как заряженное и незаряженное сотояние конденсаторе компьютере Атанасова или направление намагниченности, "вверх" или "вниз", участков поверхности магнитного диска.
Атанасов решил хранить разряды двоичных чисел в конденсаторах, рассмотрев предварительно несколько альтернативных возможностей, например использование электронных вакуумных ламп и ферромагнитных материалов (в которых можно менять ориентацию магнитных частиц, прикладываямагнитное поле). Он выбрал конденсаторы, потому что они относительно недороги и могли посылать сигналы арифметическому устройству без дополнительного усиления. Этот выбор, равно как идея периодической перезарядки ячеек памяти, продолжает доминировать в конструкции современных компьютеров. Сегодня конденсаторы являются важнейшими элементами интегральных микросхем, играющих роль динамической памяти компьютера, а регенерация, придуманная Атанасовым, представляет важнейшую особенность функционирования запоминающих устройств.
Решение реализовать запоминающее устройство на конденсаторах, конечно, имело важное значение, но самым значительным достижением Атанасова явилось, пожалуй, создание сложного электронного переключателя - логической схемы. Сидя в придорожной иллинойсской таверне, он мысленно представил себе две ячейки памяти, которые назвал счетами. Затем он представил себе то, что называл "черным ящиком" - логическую схему, в которую будут поступать числа, хранящиеся в памяти. В соответствии с "запаянными" в нем логическими правилами этот черный ящик должен выдавать правильные результаты при сложении или вычитании чисел, считываемые с его выводов.
Атанасов решил построить свой черный ящик из электронных ламп. Они будут получать сигналы от конденсаторов блока памяти, образующих два устройства, названные им клавиатурной памятью и памятью счетчика по аналогии с клавишами и движущейся кареткой - счетчиком - популярного в то время механического калькулятора. Лампы должны также получать сигналы и от других конденсаторов, хранивших разряды переноса (в случае сложения) или разряды заема (в случае вычитания). "Обученная человеком с паяльником" логическая схема должна выбрать правильный ответ и заменить содержимое счетчика результатом операции. Электронные лампы обрабатывали данные с очень высокой скоростью и могли многократно выполнять сложение или вычитание над различными разрядами двух произвольных чисел, хранившихся в двух ячейках памяти. В наше время логические схемы скрыты в крошечных интегральных микросхемах, работающих значительно быстрее электронных ламп, но по существу они выполняют те же функции, которыми их наделил Атанасов.
А какова судьба других конструктивных решений Атанасова, например о разделении памяти и процессора? И здесь его наследие продолжает жить. В современных вычислительных машинах, таких как настольный микрокомпьютер, можно выделить три самостоятельных функциональных элемента: система ввода-вывода, состоящая в основном из клавиатуры, экрана и печатающего устройства (в свое время Атанасов решил вводить и выводить информацию в виде перфокарт, уже получивших тогда распространение в калькуляторах); центральное процессорное устройство, в котором осуществляется управление работой компьютера и арифметические операции; и память - внутренняя и внешняя (диски).
Хотя Атанасов был уверен, что нашел правильные принципы построения вычислительной машины, он знал, что реализация этих принципов на практике потребует немалых усилий. В этом смысле ему очень помог Берри, который так же, как и сам Атанасов, был одержим идеей создания электронной вычислительной машины. Атанасов позже вспоминал, что оба они были очень заняты на своей основной работе, но все же, говорит он: "Я не помню ни единого случая, чтобы кто-нибудь из нас не мог найти времени для компьютера. В эту затею мы вкладывали всю свою душу".
В качестве первого шага они решили построить маленький прототип машины, на котором можно было бы практически проверить основные положения концепции Атанасова: электронную логическую схему и регенерируемую двоичную память. С этой задачей они справились, на удивление, быстро. К октябрю 1939 г. опытный образец уже работал. У него было два запоминающих устройства, расположенные на противоположных сторонах пластмассового диска. Каждое устройство памяти состояло из 25 конденсаторов и поэтому могло хранить число, состоящее из 25 двоичных разрядов, что эквивалентно 8-разрядному десятичному числу. Атанасов и Берри вводили двоичные числа в запоминающие устройства вручную, заряжая конденсаторы, представлявшие цифру 1, и оставляя незаряженными те, которые представляли 0. При нажатии кнопки диск поворачивался на одну позицию. При этом электронная логическая схема, состоявшая из 8 электронных ламп, считывала данные с конденсаторов памяти. С учетом сигнала от конденсатора, хранившего разряд переноса, схема складывала очередные два числа и помещала ответ в запоминающее устройство, называемое счетчиком, которое хранило результат. Одновременно число, хранящееся на "клавишном" запоминающем устройстве, регенерировалось при помощи специальной электрической схемы.
Компьютер Атанасова-Берри ("АВС") был построен в период с 1937 по 1942 г. Атанасовым, в то время профессором физики в Колледже шт. Айова (теперь Университет шт. Айова) и его помощником, аспирантом Клиффордом Берри. "АВС" был не первым в истории цифровым компьютером; до него уже было создано несколько машин, также оперировавших непосредственно числами, а не физическими величинами, такими как угол поворота стрелки. Однако "АВС" был первым компьютером, в котором для выполнения цифровых арифметических операций были применены электронные элементы - вакуумные лампы (некоторые из таких ламп показаны справа внизу). Особенностью "АВС" было и то, что запоминающие и обрабатывающие устройства в нем были разделены. Блок памяти представлял собой набор конденсаторов, установленных на больших барабанах (на заднем плане). Ввод информации осуществлялся перфокарточными считывающими устройствами.
Конечно, этот прототип едва ли можно было назвать компьютером - вычислять карандашом на бумаге было быстрее и удобнее. И все же он имеет такое же отношение к электронным вычислительным машинам, какое имеет, к примеру, самолет братьев Райт к аэронавтике. Продемонстрировав принципы Атанасова в действии, прототип открыл дорогу, которая привела к современному компьютеру.
Теперь Атанасов был готов приступить к созданию машины "АВС", которую он строил с 1939 по 1942 г. Она была предназначена для решения часто встречающейся в физике и технике задачи - алгебраической системы линейных уравнений. Примером такой системы является пара уравнений вида 2x + 5у = 9 и х + 2у = 4, где х и у - неизвестные переменные. Обозначим первое уравнение а, и второе - b.
Как известно всякому, кто изучал алгебру в школе, такая система уравнений решается так называемым методом исключения Гаусса: сложением или вычитанием одного уравнения из другого с предварительным умножением их на определенные коэффициенты, так чтобы в результирующем уравнении одна из переменных пропала. В данном примере, вычитая умноженное на 2 уравнение b из уравнения а, мы сводим коэффициент при х к 0 и получаем уравнение у = 1. Теперь, если подставить 1 вместо у в первое уравнение а, то в результате получим х = 2. Заметим, что мы могли бы дважды вычесть уравнение b из уравнения а, что экивалентно умножению уравнения b на 2 с последующим его вычитанием из а, в конце концов умножение - это лишь многократное сложение.
Атанасов, разумеется, нацелился на решение более сложной задачи: он хотел, чтобы машина решала n уравнений с n неизвестными, а именно 29 уравнений с 29 неизвестными от х до х29. Такие системы уравнений решаются тем же способом, который мы рассмотрели применительно к простенькому примеру из двух уравнений. Здесь также нужно взять два уравнения, например
2x1 + 5x2 - 3x3 + 7x4 + ... +6x29 = 9
и
x1 + 2x2 + 4x3 - 2x4 + ... +8x29 = 4
и вычесть одно уравнение, умноженное на какое-то подходящее число, из другого, так чтобы исключить одно из неизвестных. Скажем, для того чтобы исключить x1, мы должны умножить второе уравнение на 2 и вычесть его из первого, после чего мы получим уравнение с одним исключенным неизвестным:
x2 - 11x3 + 11x4 + ... +10x29 = 1.
Повторяя ту же процедуру с другими парами уравнений, можно получить 28 уравнений с исключенным неизвестным x1. Теперь все повторяется для этих 28 уравнений, из которых мы получим 27 уравнений с исключенными неизвестными x1 и x2 и т.д., пока не останется одно уравнение с одним неизвестным. Затем, имея значение этого неизвестного и возвращаясь по иерархии уравнений, легко определит значения остальных неизвестных.
Метод довольно прост, но видно, что требует огромного количества арифметических операций. Атанасов оценил совершенно реалистично, что для решения системы из 29 уравнений при помощи старомодного настольного калькулятора потребовалось бы около 10 недель изнурительной, отупляющей работы, в то время как его компьютер должен был справиться с этой задачей за одну-две недели.
Каждая логическая схема выполняла сложение двух чисел, как в рассмотренном здесь примере (а) в соответствии с правилами, представленными в таблице (b). Допустим, нужно сложить двоичный эквивалент числа 19 в счетчике с эквивалентомчисла 11 на клавиатуре. После того как эти числа преобразованы в двоичную форму, т.е. разложены по степеням двойки (20, 21, 22, 23, или 1,2,4,8), их можно записать как 10011(16+0+0+2+1) и 01011 (0+8+0+2+1). Логическая схема начнет выполнять операцию со сложения разрядов в крайнем правом столбце (2°). При этом она определит, что сочетание разрядов в счетчике, на клавиатуре и в бите переноса - 1,1,0 соответствует третьей от конца строчке в таблице. (Исходное значение бита переноса всегда равно 0.) Согласно графе "выход" в таблице, схема (с) пошлет сигнал 0 {черный) на счетчик (где фиксируются результаты), заменяя старое значение 1. Сигнал 1 {красный) будет послан в ячейку переноса. Эта процедура эквивалентна подсчету "1 плюс 1 равно 2" при условии, что это число 2 по основанию 2 записывается как 10. Аналогичным образом схема сложит затем последовательно разряды в остальных колонках, пока не будет получен окончательный результат.
Для достижения своей цели - решения системы многих уравнений со многими неизвестными - Атанасов поместил запоминающие устройства "клавиатуры" и "счетчика" уже не на диске, а на больших барабанах. Каждый барабан мог хранить 30 двоичных чисел, состоящих из 50 разрядов.
Компьютер "АВС" выполнял процедуру исключения Гаусса каждый раз для двух уравнений. Их коэффициенты, закодированные предварительно на перфокартах в десятичном виде, преобразовывались в двоичную форму специально сконструированным для этого преобразующим барабаном и записывались в запоминающее устройство. Коэффициенты одного уравнения загружались в барабан счетчика, коэффициенты второго - в барабан клавиатуры. При каждом повороте барабана, занимавшем около одной секунды, логические схемы выполняли одно сложение или вычитание над двумя наборами коэффициентов. Точнее, одна логическая схема, состоящая теперь из 7 ламп, складывала или вычитала коэффициент, скажем при x1 на клавиатурном барабане с коэффициентом при x1 на барабане счетчика, оставляя сумму или разность в счетчике. В то же самое время другие логические схемы аналогичным способом обрабатывали остальные пары коэффициентов. (Такой процесс, в ходе которого ряд идентичных действий выполняется параллельно, называется векторной операцией, а компьютер, выполняющий подобные операции, - векторным процессором.) Одновременно специальные схемы регенерации памяти обновляют содержимое запоминающего устройства "клавиатуры". Позже, после того как многочисленные сложения и вычитания были выполнены и соответствующее неизвестное было исключено, компьютер "АВС" перфорировал набор оставшихся коэффициентов (в уравнении с исключенным неизвестным) на картах в двоичном виде. Эти карты хранились до тех пор, пока вновь не требовались на одном из следующих этапов вычислений. При этом специальное устройство чтения двоичных перфокарт переводило записанную на них информацию в запоминающие устройства компьютера. Когда значения всех неизвестных были вычислены в двоичном виде, устройство чтения десятичных карт осуществляло обратную операцию, переводя двоичные данные в обычные десятичные числа.
Компоненты "АВС" были подобраны так, чтобы машина решала систему из 29 уравнений с 29 неизвестными, от х1 до x29. Такие системы решаются путем повторного прибавления (или вычитания) одного уравнения к другому до тех пор, пока одна из переменных во втором уравнении не будет исключена. Прежде чем получить окончательное решение, т.е. вычислить значения всех переменных, требовалось многократное повторение этого процесса. Для того чтобы выполнить эти вычисления, "АВС" считывал коэффициенты при переменных (например, двойку в члене 2х1) с перфокарт, преобразовывал их в двоичную форму и загружал коэффициенты одного уравнения в барабан "клавиатурного" запоминающего устройства, а коэффициенты другого - в барабан "счетчика". При одном повороте барабанов каждая логическая схема (по семь вакуумных ламп на схему) производила сложение или вычитание коэффициентов, записывая результат в "счетчик". В то же время регенерирующие схемы перезаряжали конденсаторы "клавиатуры". Исключив определенную переменную, машина запоминала остающиеся коэффициенты уравнения на перфокартах, с тем чтобы позднее воспользоваться ими.
Система ввода-вывода на перфокартах хорошо работала во время предварительных испытаний, но когда ее подсоединили к "АВС", стали возникать ошибки, приблизительно одна на каждые 10 000 операций чтения или перфорирования. Это означало, что эта машина без сложной системы перепроверок не могла быть надежным средством решения больших систем уравнений, хотя маленькие системы она решала хорошо. Атанасов и Берри пытались решить эту относительно несложную техническую проблему, но начавшаяся вторая мировая война заставила их бросить работу над компьютером. Берри был переведен на другую работу в ожидании призыва, а Атанасов поступил на военную службу в качестве сотрудника военно-морской артиллерийской лаборатории.
Теперь об оставленом ими компьютере часто говорят как о незавершенной машине. Правильнее было бы охарактеризовать ее как компьютер, функционирующий со сбоями, компьютер, в котором собственно электронная вычисляющая часть была выполнена с блестящим успехом. Учитывая, как удивительно мало времени потребовалось для конструирования и изготовления "АВС", наверное, не будет ошибкой полагать, что проблема, возникшая с перфокарточной системой ввода-вывода, была бы решена очень быстро. В действительности для этих целей вполне подошла бы перфокарточная система, разработанная корпорацией IBM десятилетиями раньше (и, кстати, примененная позже в компьютере "ENIAC"). Более того, продемонстрировав возможности своего компьютера, Атанасов легко бы заручился финансовой поддержкой для завершения проекта.
Если бы Атанасов и Берри смогли продолжить свою работу, то несомненно "АВС" был бы полностью готов к работе в 1943 г. Вместо этого его постигла участь большинства устаревших машин: через некоторое время он был разобран на детали и демонтирован без ведома самого Атанасова.
Но если компьютер "АВС" был так надолго забыт, то каким образом идеи Атанасова повлияли на дальнейшее развитие вычислительной техники? Ответ на этот вопрос заключается в работе Мочли, использовавшего новшества Атанасова в конструкции компьютера "ENIAC".
"ENIAC", конечно, очень сильно отличался от "АВС". Это был первый универсальный электронный компьютер, в то время как "АВС" был специализированой машиной, рассчитанной на решение одного лишь класса задач. ("ENIAC" можно было перепрограммировать для решения различных задач, изменяя коммутацию проводников на панели управления.) Машина Мочли и Экерта была значительно больше "АВС", она насчитывала уже не сотни, а тысячи электронных ламп и обладала значительно большим быстродействием, поскольку ее память была электронной и в ней не было никаких вращающихся барабанов. Более того, "ENIAC" выполняла вычисления прямым подсчетом, а не с помощью логических схем, и вычисления проводились в десятичной системе.
Тем не менее очевидно, что Мочли и Экерт воспользовались придуманными Атанасовым основными принципами построения электронного цифрового компьютера и заложили их в "ENIAC", а позже и в другую машину - "EDVAC". Совершенно ясно, что и в "ENIAC" и "EDVAC" для управления работой компьютера использовались электронные переключающие устройства; "EDVAC" к тому же использовал логические схемы для арифметических операций, выполнявшихся в двоичной системе счисления, и, кроме того, в этой машине использовалась регенерируемая память. Мочли также заимствовал у Атанасова идею о том, что на цифровых электронных элементах можно построить машину, производившую вычисления со значительно большей точностью и скоростью по сравнению с дифференциальным анализатором Буша.
Как вспоминает Атанасов, к маю 1941 г. "мы уже знали, что можем построить машину, способную выполнять любые вычисления". Он решил тогда, что "АВС" можно преобразовать в цифровой электронный дифференциальный анализатор, после того как один из его коллег из Массачусетского технологического института сказал ему, что там группа сотрудников рассматривает возможность реализации новой аналоговой версии анализатора на основе электроники. Атанасов написал о своей идее Мочли, и они подробно обсудили ее, когда Мочли в июне 1941 г. приехал к Атанасову, пробыв у него около недели. Во время этого визита Атанасов продемонстрировал также свой компьютер "АВС", который к тому времени был почти готов к работе. Через четыре года идеи Атанасова нашли воплощение в компьютере "ENIAC".
"ENIAC" и "Colossus", который также был программируемым, подготовили почву для следующего шага в развитии вычислительной техники - размещения программы в памяти компьютера. Эта идея позволила не только облегчить программирование универсальных машин, но и дала тиможность программе менять дальнейший ход действий в зависимости от результатов, получаемых на промежуточных этапах решения задачи.
С тех пор как в конце 40-х годов поя-пились первые компьютеры с хранимыми в памяти программами, вычислительные машины становились все мощнее, но их архитектура не претерпевала коренных изменений. Отзвуки прошлого чувствуются иногда и в современных компьютерах. Например, в последнее время возродился интерес к специализированным вычислительным машинам, особенно среди специалистов, занятых решением частных классов задач. На самом деле "АВС" и современный векторный процессор для решения линейных уравнений удивительно схожи (хотя быстродействие новых машин неизмеримо выше).
Несомненно, заслуги Атанасова были бы признаны значительно раньше, если бы он получил патент на свои изобретения. Как отмечают Берксы, он вполне мог претендовать на авторские права на саму концепцию электронного цифрового компьютера, а также на электронные переключатели в компьютерах, логические схемы сложения и вычитания, раздельное хранение и обработку данных, на память с использованием конденсаторов и барабанов, регенерацию памяти, использование двоичной системы счисления в электронном вычислительном устройстве, на модульность конструкции, векторную обработку и тактируемое управление электронными операциями, а также на ряд других новшеств.
Наверное, мало будет сказать, что это был бы один из важнейших патентов за всю историю авторского права. К сожалению, из-за всеобщего смятения, внесенного войной, и неэффективной работы людей, занятых на патентной работе, ни одна заявка на изобретения Атанасова так и не была подана. Со своей стороны Атанасов в послевоенный период не предпринимал ни одной попытки получить патент, поскольку считал, что "ENIAC" принципиально отличается от "АВС" и послужит прототипом будущих компьютеров, и потому любой патент на принцип действия и конструктивное решение, воплощенные в "АВС", будет устаревшим и бесполезным. К тому же он был очень занят другой работой, а позже созданием собственной научно-технической компании.
История Атанасова не только проливает свет на одно из важнейших достижений техники, но и заставляет задуматься над некоторыми аспектами научно-технического предпринимательства. Во-первых, эта история показывает, насколько тернистым иногда оказывается путь изобретателя. Несмотря на огромные усилия, Атанасов мог собрать на постройку "АВС" лишь 6 тыс. долл., в то время как в "ENIAC" было вложено около полумиллиона, потому что в нем были заинтересованы военные (помимо решения других задач, он рассчитывал таблицы стрельбы для артиллерийских орудий).
Во-вторых, определенные выводы можно сделать относительно природы научного творчества. Озарение, пришедшее к Атанасову в тот зимний вечер 1937 г., ярко показывает, как протекает творческий процесс. Заразившись идеей, Атанасов полностью погрузился во все аспекты автоматизации вычислений. В течение долгого времени он пытался найти решение возникших проблем, все больше раздражаясь отсутствием ощутимых результатов, но его ум продолжал усиленно работать, в значительной мере подсознательно. И вдруг, когда он был занят совершенно другими делами, пришло решение.
Непосвященным 200-мильное путешествие Атанасова к придорожному бару, возможно, покажется совершенно излишним, чтобы найти место, где можно выпить, однако он прекрасно отдавал себе отчет в том, что делал. Он понял, что мозг нуждается в свежих ощущениях и расслаблении, прежде чем настроиться на творческий лад. Почувствовав, как в его мозгу стали формироваться основные принципы воплощения идеи, он целиком отдался течению мыслей и понял, что испытывает какое-то особое состояние, своеобразное озарение. Такая вера в интуицию, быть может, и не согласуется с общепринятым представлением о научном творчестве как чисто рациональном процессе, однако интуиция помогала многим ученым.
Наконец, вряд ли можно считать простым совпадением то, что многие крупнейшие достижения в технике сделаны благодаря ученым: исследовательская работа часто требует изобретения новых инструментов, и ученые, поглощенные целиком и полностью решением научных проблем, могут успешно создавать их. То, что между наукой и техникой существует такая связь, следует понять тем, кто считает, что можно ограничить финансирование фундаментальных научных исследований, не снижая темпов технического прогресса.
Список литературы
Arthur W. Burks and Alice E.Burks. The ENIAC: First general-purpose electronic computer. // In Annals of the Hystory of Computing, Vol. 3, No. 4, pages 310-399; October, 1981.
John Vinsent Atanasoff. Advent of electronic digital computing. // In Annals of the Hystory of Computing, Vol. 6, No. 3, pages 229-282; July, 1984.
Alice R. Burks and Arthur W. Burks. The first electronic computer: the atanasoff story. University of Michigan Press, 1988.
Dark R. Mollenhoff. Atanasoff: Forgotten farther of the computer, Iowa State University Press, 1988.
Allan R. Mackintosh. The first electronic computer. // In Physics Today, Vol. 40, No. 3, pages 25-32; March, 1988.