В 1939 году Атанасофф вместе со своим ассистентом - Клиффордом Э.Берри построил и испытал первую вычислительную машину. Называлась она ABC ( Atanasoff Berry Computer ). Из-за недостатка средств и отсутствия заинтересованности со стороны академической среды им пришлось прервать работу, которую позже довели до конца другие. Во время военной неразберихи безрезультатно закончились и попытки Атанасоффа запатентовать свое изобретение.
Примечание автора 2002г.
Когда я писал эту статью, мне не были известны результаты
работ немецких и английских конструкторов в конце 30-х - начале 40-х годов по созданию
действовавших релейно-механических компьютеров. Сегодня немцы и англичане оспаривают приоритет
создания релейно-механических компьютеров у американцев.
Я отнюдь не апологет американской науки и техники, поэтому обязуюсь дополнить данную статью,
снабдив её необходимыми ссылками на ресурсы в Интернет. Тем не менее, американцам удалось не
только выиграть вторую мировую войну, но и в полной мере использовать свою победу для
бурного развития научно-технического прогресса в Америке, а также занять лидирующее положение в ключевых отраслях
экономики постиндустриального общества. Русская пехота, запросто справлявшая нужду в заснеженных окопах,
сумела взять Берлин. Но немецкий технический гений в условиях "коричневого" социализма,
оказался ничуть не продуктивнее русского технического гения в условиях социализма "красного".
Журнал “Компьютер”, N1, 1990г.
ИХ МОГ ВИДЕТЬ ПЕТР-I !
" Первая вычислительная машина, производившая суммирование чисел, была изобретена Блезом Паскалем в 1642 году, а в 1674 году Лейбницем была сконструирована машина, выполнявшая основные арифметические действия и извлекавшая квадратные корни. Однако попытка создать машину, которая может считаться прототипом современных компьютеров принадлежит англичанину Чарльзу Бэббиджу(1792-1871). В 1822г. он приступил к разработке машины, названной им аналитической. В машине Бэббиджа данные, вводимые с перфокарт, должны были обрабатываться в арифметических устройствах, производящих соответствующие вычисления. Результаты предполагалось печатать и перфорировать на картах.В машине предполагалось запоминающее устройство для хранения 1000 чисел на перфокартах. Карточки из картона с нанесёнными на них отверстиями уже около ста лет до этого применялись для управления ткацкими станками, но идея их применения в качестве носителя информации в вычислительной машине принадлежит Бэббиджу. Идеи Бэббиджа намного опередили время и технические возможности той эпохи.
Распространение в технике связи различных методов передачи информации с помощью электричества нашло свое отражение и в методах переработки данных. Таким образом, исторически компьютеры и связь идут рука об руку. В 1884 году американец Герман Холлерит использовал для обработки результатов переписи населения электромеханическое устройство. Как только штырек попадал в отверстие, он касался ртути и замыкал электрическую цепь, что вызывало увеличение показаний соответствующего счетчика на единицу. В начале XX столетия бурно развивается теория релейных схем, в которой в качестве математического аппарата используется алгебра логики, разработанная в середине XIX века английским математиком Дж. Булем. Все это подготовило почву для возврата к идеям Бэббиджа. В 1936 году в журнале Лондонского математического общества появилась статья английского математика Алана Тьюринга, в которой он доказал, что любой алгоритм может быть реализован при помощи универсального дискретного автомата. Тьюринг предложил абстрактную схему такого автомата "машина Тьюринга" ), который обеспечивал решение любой задачи,поддающейся алгоритмизации. Тем самым был поставлен вопрос о создании автоматических ЦВМ, способных реализовывать преобразования данных, теоретически выполнимых для машины Тьюринга.
"Отец всех народов" весьма скептически отнесся к компьютерам, что предопределило их судьбу в нашей стране в период с середины 40-х до начала 50-х. Тогда приоритет в бериевских "шарашках" отдавался созданию ядерного оружия. Советские люди продолжали умирать от голода( послевоенный голод на Украине ), надрываться на восстановлении разрушенного войной"народного" хозяйства.
Тем не менее, уже в 1946 году в Киеве, в институте электротехники АН УССР по инициативе академика C.А. Лебедева были развернуты работы по созданию ЦВМ... В 1947 им была предложена функциональная структура малой электронной счетной машины( МЭСМ ). Машина выполняла 13 различных по типу команд, в том числе команду условного перехода. Она имела быстродействие 50 опер./сек. Емкость оперативного запоминающего устройства на электронных лампах была рассчитана на 31 число и 63 команды. Имелось такой же емкости долговременное ЗУ на штекерах, и была предусмотрена возможность подключения дополнительной памяти на магнитном барабане на 5 тыс. слов. В 1950 г. состоялся пуск МЭСМ и решение на ней простейших тестовых задач. В 1951 г. после ряда усовершенствований она была передана для эксплуатации. На МЭСМ был проведен расчет линии электропередачи Куйбышев( Самара ) - Москва, решены некоторые задачи по ядерной физике и ракетной баллистике. После достигнутых успехов ведущие ученые в СССР осознали важность интенсивного развития вычислительной техники и в ряде регионов СССР ( Минск, Москва, Новосибирск, Ереван, Ленинград( Санкт-Петербург) )независимые коллективы ученых, инженеров и конструкторов начали развивать различные семейства компьютеров первого поколения ( "БЭСМ", "Сетунь", "Минск", "Урал")
Первым нетриггерным ОЗУ, получившим широкое применение в ЦВМ, были акустические ртутные линии задержки. В ЦВМ УНИВАК USA использовались 18 трубок, каждая из которых могла сохранять 1152 двоичных сигналов. Удавалось сохранять импульсы до 1 мкс. Неудобство ЛЗ состояло в невозможности произвольной выборки информации, поскольку они являлись по сути кольцевыми буферами. Изменить состояние того, или иного сигнала было возможным, только в дискретное время, приблизительно равное удвоенной длительности импульса, умноженной на количество хранимых в одной трубке сигналов. Металлическая или стеклянная трубка диаметром 1-2 см. и длиной 30-100 см. могла хранить до 1000 импульсов длительностью 1 мкс. Время выборки составляло около 2 мсек. Более быстродействующие ОЗУ строились на электронно-лучевых трубках. В этих устройствах с произвольной выборкой информации время записи и считывания составляло несколько микросекунд. На первом этапе развития компьютеров(до 1955 года) ЭЛТ были основным видом ОЗУ. В ЦВМ "Стрела" ОЗУ на 43 ЭЛТ служило для записи 2048 40-разрядных чисел. Начиная с 1955 года, эти виды памяти постепенно вытесняются ЗУ на магнитных сердечниках с прямоугольной петлей гистерезиса, работающих по схеме совпадения токов. Этот тип памяти открыл новую эпоху в развитии компьютеров и обладал такими несомненными преимуществами, что оставался популярным до конца семидесятых годов. В СССР на ЦВМ типа "ЕС", "СМ-4" модули с ферритовой памятью использовались вплоть до 1985 г. Этот тип ЗУ обладал высоким быстродействием, надежностью,экономичностью, относительно малым потреблением энергии, был технологичен.
Перейдем теперь к рассмотрению устройств внешней памяти. Это магнитные барабаны, ленты и диски. Отмечая достоинства таких устройств видный советский специалист в области ЗУ ЦВМ проф. Л.П. Крайзмер писал: "Столь широкое и многообразное применение ЗУ, основанных на магнитной записи, объясняется рядом преимуществ по сравнению с другими видами. Они являются наиболее компактными, дешевыми и весьма надежными накопителями информации...В процессе эксплуатации потребляют относительно мало энергии, сохраняют очень большое количество информации практически неограниченное время, не требуя регенерации и при выключенном питании." В ЦВМ первого поколения плотность записи на магнитную поверхность составляла всего 3-10 знаков/мм. Магнитные барабаны представляли из себя циллиндры диаметром 50-1200 мм. и длиной 100-900 мм. Вдоль образующей барабана размещался ряд ( а в отдельных конструкциях два и три ряда ) магнитных головок. Емкость барабанов в ЦВМ первого поколения была доведена до 1.5 - 2 млн. бит. Время обращения при этом составляло 10-40 мс, в лучших образцах единицы мс. Широкое распространение получили накопители на магнитных лентах ( НМЛ ). Сменность лент практически снимало ограничение на объём хранимой в подобных ЗУ информации. Плотность записи в НМЛ составляла 8-10 знаков/мм. при ширине дорожки 2-3 мм.
Более поздним типом ЗУ с записью на магнитной поверхности явились магнитные диски - предшественники современных винчестеров. Первое ЗУ такого типа, разработанное IBM, позволяло хранить на 50 дисках до 40 млн. бит. Время обращения было около 0.5 сек. Для всех ЗУ с записью на магнитной поверхности характерен один недостаток : необходимость движущихся механических частей. Это снижает надежность и ограничивает быстродействие.Связь человека с ЦВМ первого поколения осуществлялась через пульт, а также через устройства ввода и вывода информации. Пульт был многоцелевым. Он позволял осуществлять проверку технического состояния компьютера, следить за ходом выполнения программы, выполнять отладку программ. С помощью клавиатуры пульта можно было посмотреть и изменить содержимое любой ячейки ОЗУ. Однако такой ручной ввод был неэффективен и вызывал непроизводительные простои компьютера. Для повышения эффективности были созданы устройства ввода и вывода информации. В качестве машинных носителей информации использовались бумажные карты ( перфокарты ) и ленты ( перфоленты ). Выше упоминалось, что они были созданы задолго до появления компьютеров. Информация на них предварительно переносилась с помощью устройств подготовки данных. Оператор получал от программиста на бумаге машинные коды, с помощью клавиатуры УПД набивал их на бумажные носители, контролировал правильность введенной информации, затем загружал ее в компьютер, отлаживал программу по шагам ( при необходимости ), запускал программу на исполнение и выводил результаты её действия на устройства вывода( поначалу на те же перфокарты или перфоленты ). Для удобства анализа и обработки результатов стали использоваться печатающие устройства. Печатающие устройства барабанного типа обеспечивали скорость печати до 20-30 символов в секунду. Скорость считывания у фотоэлектрических устройств ввода с перфоленты достигала в тот период достигала 500-700 знаков в секунду, а при вводе с перфокарт 400-600 карт в минуту( одна перфокарта состояла из 80 колонок в 12 строк ).
Кроме несовершенных средств ввода и вывода компьютеры первого поколения не обладали ни необходимым системным программным обеспечением, ни достаточными ресурсами памяти, поэтому в каждый момент времени оператор ( а также и компьютер ) мог вводить только одну программу. Не могло быть и речи об отладке ПО в том виде, как мы это представляем себе сейчас. Оператор, непосредственно наблюдавший за работой компьютера, не имел подчас ни малейшешего представления о загружавшейся программе, поэтому он возвращал программисту, разрабатывавшему программу и подготавливающему данные к вводу, полученный результат ( положительный или отрицательный ) в виде as is. Программист же должен был анализировать эти результаты и исправлять ошибки не только семантические( алгоритмические ), но и синтаксические в течение нескольких заходов на оператора. Пользователь, таким образом, был оторван от компьютера и взаимодействовал с ним через оператора. Всё это так сильно усложняло и затягивало процесс разработки программы, что программист был вынужден отлаживать свою программу в голове( или на листке бумаги ) и предоставлять оператору уже вполне отлаженную программу. К тому же в те времена один компьютер обслуживал, как правило, целое научно-производственное, или учебное заведение ( это в лучшем случае - в худшем несколько научных центров или вузов ). Поэтому в машинные залы ( там, где находились компьютер и оператор ) выстраивалась толпа пользователей. Сначала программы писались в машинных кодах. Потом появились первые машинные языки -ассемблеры( или автокоды, как их называли в России ). Программисты составляли блок-схемы алгоритма программы, а затем и саму программу в виде таблицы. В первой колонке записывался номер ячейки памяти ( программы тогда были еще неперемещаемые ), затем код операции машинной команды, затем операнды. В конце следовало пояснение того, какое действие производит данная команда. Узнаете современные комментарии?
Первыми серийными универсальными транзисторными ЦВМ ( второго поколения ) были: "ФИЛКО-2000-210" ( США, 1958г. ), "Сименс-2002"( ФРГ, 1958г. ),"Эллиот-803"( Англия, 1959г. ), IBM-7090 ( США, 1959г. )Больший срок службы транзисторов ( в среднем он в 100-1000раз больше) означал возрастание надежности ЦВМ, собранных на транзисторных схемах. Снижение мощности, происходившее при переходе на транзисторные схемы ( в 10 и более раз ) предрешили судьбу ламповых мастодонтов. Но электронная лампа умирала мучительно и долго. Сказалось и несовершенство первых серийных транзисторов и прогресс в технике ламповой миниатюризации. Однако со временем характеристики транзисторов значительно улучшились, что практически вытеснило электронные лампы из сферы компьютеров.
Но произошли не только качественные изменения в аппаратуре компьютеров второго поколения. Прежде всего сменилась форма представления информации. Если раньше разрядность данных и форма представления существенно варьировалась от изготовителя к изготовителю, то теперь она была унифицирована. Наименьшая адресуемая единица информации получила название байт ( byte ). Поначалу не все байты содержали привычные нам 8 бит двоичной информации. Так "Минск-22" имел 6-битный, а "Минск-32" 7-битный байты. Но постепенно законодателем мод на рынке компьютеров становилась американская корпорация IBM. Они сделали очень многое для унификации и стандартизации в сфере информатики. С тех пор в байте 8, а не другое колличество бит. Возросшие в связи с усовершенствованием элементной базы аппаратные возможности компьютеров ( увеличение объёма памяти, быстродействие центрального процессора ) были немедленно поддержаны со стороны программного обеспечения. С одной стороны стремление упростить жизнь оператора вызвало к жизни системные управляющие программы - мониторы( затем постепенно развившиеся в операционные системы ), с другой - для упрощения жизни разработчиков прикладного программного обеспечения были созданы программы-трансляторы с языков высокого уровня. Поначалу это были прообразы современных ассемблеров -языки символического кодирования. Например, ССК для ЦВМ "Минск-22". Лексические единицы подобных языков были привязаны к русскому. У ССК были такие операции, как НАЧ ( начало программы ), КОН ( конец программы ), ОСТ ( останов ), УПЗ ( умножение с плав. зпт. ) и т.д. Переменные также могли быть заменены идентификаторами. Хотя языки, подобные ССК, не давали выигрыша в размере программы и были жестко привязаны к системе команд конкретного процессора, тем не менее это было шагом вперед в развитии интерфейса между компьютером и пользователем. Большинство людей плохо запоминают числа, но гораздо лучше запоминают слова, что совершенно естественно ( вследствие практики каждодневного языкового общения.) Преобразовывать же символический текст в последовательность машинных кодов можно поручить специальной программе. При переносе одной и той же программы на символическом языке с компьютера одного типа на другой возникает проблема перевода, так как различные компьютеры имеют различную архитектуру и нет полного совпадения в наборах их команд. Возникла потребность в создании языков высокого уровня, которые позволили бы решить данную проблему и легко устанавливать алгоритмически отлаженные программы на различные системы. Появляются проблемно-ориентированные языки высокого уровня, как универсальные( Фортран, Алгол ), так и специализированные. Выяснилось, что программы, преобразующие команды ЯВУ в машинные, могут быть двух типов: одни ( трансляторы ) преобразуют весь исходный текст целиком, связывая созданные объекты и размещая их в памяти вполне определенным образом; другие ( интерпретаторы или динамические трансляторы ) преобразуют в машинные коды и запускают на выполнение лишь небольшие фрагменты исходной программы, шаг за шагом выполняя всю программу. Таковы по сути и современные многочисленные скрипт-языки ( только в них процесс трансляции доходит до команд некоего препроцессора или виртуальной машины, она же в свою очередь работает как интерпретатор). Иногда это оказывается очень удобным, так как сильно упрощает процесс отладки. Но сама программа выполняется при этом медленнее. Заметим, что современные компьютеры обладают столь колоссальным быстродействием и такой огромной памятью, что преимущества и недостатки этих двух различных методов трансляции нивелируются. Но во времена компьютеров второго поколения различия были весьма ощутимыми. Языки высокого уровня сделали очень многое для становления индустрии разработки и сопровождения программного обеспечения, поскольку программы сделались "понятными" не только компьютерам различных типов ( семейств ), но также и людям, непосредственно не разрабатывавшим данное ПО, но осуществляющим его сопровождение и модернизацию. Появилась возможность совместной работы больших коллективов программистов, что было совершенно необходимым в создании сложных и больших по объёму программ таких как,например, операционные системы или те же компиляторы ЯВУ. История универсальных ЯВУ начинается с ФортранаFORTRAN - Formula Translation. Он был создан в 1956 году группой американских специалистов, возглавляемой профессором Дж. Бэкусом и получил широкое распространение в Америке и Европе, а затем и во всём мире. FORTRAN дожил до наших дней, хотя и уступил ведущие позиции Java, С и другим более современным языкам. FORTRAN лёгкий в изучении язык, а трансляторы для него экономичны, что было чрезвычайно важным для не столь уж мощных компьютеров конца 50-х, начала 60-x годов XX столетия. Другие собратья FORTRAN-а, такие как ALGOL, COBOL, не стали долгожителями и скорее мертвы, чем живы, но на их основе были созданы другие языки, которые продолжают использоваться, хотя и не столь интенсивно как в первые десятилетия после их возникновения. За 50 лет развития программного обеспечения были созданы и использованы в той или иной мере многие сотни ЯВУ. Именно во втором поколении компьютеров программное обеспечение стало неотъемлемой и очень важной частью компьютеров и даже термин Software имел тот же корень, что и Hardware. Как отмечал американский учёный А. Оплер в обзоре, посвящённом развитию средств программного обеспечения в 1960-66гг., за период существования второго поколения ЦВМ "произошла техническая революция, в результате которой средства программного обеспечения превратились из полезных, но вспомогательных средств программирования и эксплуатации компьютеров в равноправного партнёра аппаратуры" ( в наши дни чаша весов давно склонилась в пользу Software, однако не в России, где до сих пор пышным цветом расцветает пиратство ). Это подтверждается и следущими цифрами. В США в начале 60-х затраты на программное обеспечение составляли около 40% от общих расходов на ЦВТ, а уже к середине 60-х они превысили 50%( в начале 80-х - 75% ). Поскольку программист ( да и пользователь в наши дни ) видит машину через призму( доступного ему ) программного обеспечения, то оно представляется ему неотъемлемой частью компютера. ( С развитием микроконтроллеров и программируемой логики ощутить грань между Hardware и Software в каждом отдельно взятом компьютере стало нелегко даже специалисту в области IT ). В те годы было принято разделять ПО на общее и специальное. В общее ПО входят:Компьютер БЭСМ-6 не уступал по своим возможностям некоторым распространённым в конце 80-х. персональным компьютерам. Но если им в середине и даже в конце 60-х обладало учебное(научно-исследовательское) заведение или промышленное предприятие, это было заслуженной гордостью руководства. Вот как всё меняет научно-технический прогресс в течение каких-нибудь двадцати лет.
Третье поколение компьютеров связано с появлением цифровых интегральных схем. Первые экспериментальные полупроводниковые ИС были получены ещё в конце 50-х годов Дж. Килби в США и Г. Даммером в Англии. Одна из первых ИС представляла собой триггерную схему, выполненную на кремниевой пластине 6.3x6.3x3.15 мм. В начале 60-х появились первые промышленные серийные образцы: "Micrologic"от Fairchild Semiconductor и Texas Instruments. В течение 1963-65гг. производство микросхем было развёрнуто в большинстве стран Европы и Японии. Если первая ИС содержала всего один логический элемент, то в 1964г. уже 2-4, а годом позже 6-8 лог. элементов. Таким образом плотность упаковки или степень интеграции возрастала с каждым годом ( в начале 80-х достигнута степень интеграции 10^6 ). ИС, содержащие до 10 ЛЭ, относили к классу малых интегральных схем МИС, от 10 до 100 ЛЭ - СИС. К концу 60-х началу 70-х стали выпускаться именно такие схемы. В 70-х появились БИС ( 100 - 10 000 ЛЭ ).Применение ИС в ЦВМ совпало с пришествием на рынки микросхем транзисторно-транзисторной логики ( знаменитое семейство 54/74 Texas Instruments ). Некоторое количество корпусных микросхем ТТЛ, установленных на печатную плату, именовали типовым элементом замены (ТЭЗ). Из ТЭЗов и строились основные узлы компьютеров третьего поколения. ИС имеют во много раз лучшие показатели по плотности монтажа, размерам, массе, потребляемой мощности по сравнению со схемами на дискретных компонентах. Так плотность упаковки на электронных лампах составляла 0.1 эл./см.^3, а интегральная технология начала 70-х позволяла получать плотность упаковки до 10000 эл./см.^3 при высокой надёжности и малой стоимости. Разработанная технология изготовления интегральных микросхем позволила резко увеличить их выпуск и одновременно снизить себестоимость.
Вот мы и добрались до новой истории компьютеров. Всё привычно, всё узнаваемо. Различные числа имеют разные форматы представления. Также претерпела существенные изменения и структура команд. Байт стал основной образующей единицей не только обрабатываемой, но и командной информации. Команды ЕС ЭВМ могли состоять из двух, четырёх или шести байтов. Введение базирования адресов обусловлено возросшим объёмом ЗУ. Относительная адресация тоже берет начало в этой эпохе.