История вычислений уходит глубокими корнями в даль веков так же, как и развитие человечества. Накопление запасов, делёж добычи, обмен — все подобные действия связаны со счётом. Для подсчёта люди использовали собственные пальцы, камешки, палочки и узелки. Потребность в поиске решений всё более и более сложных задач и, как следствие, все более сложных и длительных вычислений, поставила человека перед необходимостью находить способы, изобретать приспособления, которые могли бы ему в этом помочь. Исторически сложилось так, что в разных странах возникли собственные денежные единицы, меры веса, длины, объёмов и расстояний. Для перевода из одной системы измерения в другую требовались вычисления, которые чаще всего могли производить специально обученные люди, которых иногда приглашали из других стран. Это естественно привело к созданию изобретений, помогающих счёту.
Одним из первых устройств (VI—V вв. до н. э.), облегчающих вычисления, можно считать специальную доску для вычислений, названную «абак». Вычисления на ней производились перемещением камешков или костей в углубления досок из бронзы, камня или слоновой кости. Со временем эти доски стали расчерчивать на несколько полос и колонок. В Греции абак существовал уже в V веке до н. э., у японцев он назывался «серобян», у китайцев — «суанпан».
В Древней Руси при счёте применялось устройство, похожее на абак, называемое «русский шот». В XVII веке этот прибор уже обрёл вид привычных русских счёт.
В начале XVII столетия, когда математика стала играть ключевую роль в науке, всё острее ощущалась необходимость в изобретении счётной машины. И в середине века молодой французский математик и физик Блез Паскаль создал «суммирующую» машину, названной Паскалиной, которая кроме сложения выполняла и вычитание.
В 1670—1680 гг. немецкий математик Готфрид Лейбниц конструировал счётную машину, которая выполняла все арифметические действия. В течение следующих двухсот лет было изобретено и построено ещё несколько подобных счётных устройств, которые, однако, из-за своих недостатков, в том числе из-за медлительности в работе, не получили широкого распространения.
Лишь в 1878 году русский ученый П. Чебышёв предложил счётную машину, выполнявшую сложение и вычитание многозначных чисел. Наибольшую популярность получил тогда арифмометр, сконструированный петербургским инженером Однером в 1874 году Конструкция прибора оказалась весьма удачной, так как позволяла довольно быстро выполнять все четыре арифметических действия.
В 30-е годы XX столетия в нашей стране был разработан более совершенный арифмометр — «Феликс». Эти счётные устройства использовались несколько десятилетий, став основным техническим средством облегчения человеческого труда.
Создание первых компьютеров
В 1812 году английский математик и экономист Чарльз Бэббидж начал работу над созданием, так называемой «разностной» машины, которая, по его замыслам, должна была не просто выполнять арифметические действия, а проводить вычисления по программе, задающей определённую функцию. В качестве основного элемента своей машины Бэббидж взял зубчатое колесо для запоминания одного разряда числа (всего таких колёс было 18). К 1822 году учёный построил небольшую действующую модель и рассчитал на ней таблицу квадратов.
В 1834 году Бэббидж приступил к созданию «аналитической» машины. Его проект содержал более 2000 чертежей различных узлов. Машина Бэббиджа предполагалась как чисто механическое устройство с паровым приводом. Она состояла из хранилища для чисел («склад»), устройства для производства арифметических действий над числами (Бэббидж назвал его «фабрикой») и устройства, управляющего операциями машины в нужной последовательности, включая перенос чисел из одного места в другое; были предусмотрены средства для ввода и вывода чисел. Бэббидж работал над созданием своей машины до конца своей жизни (он умер в 1871 году), успев сделать лишь некоторые узлы своей машины, которая оказалась слишком сложной для того уровня развития техники.
В 1842 году в Женеве была опубликована небольшая рукопись итальянского военного инженера Л.Ф. Менабреа «Очерк об аналитической машине, изобретённой Чарльзом Бэббиджем», переведённая в последствии ученицей и помощницей Бэббиджа дочерью Дж. Г. Байрона — леди Адой Лавлейс. При содействии Бэббиджа Ада Лавлейс составляла первые программы для решения систем двух линейных уравнений и для вычисления чисел Бернулли. Леди Лавлейс стала первой в мире женщиной-программистом.
После Бэббиджа значительный вклад в развитие техники автоматизации счёта внёс американский изобретатель Г. Холлерит, который в 1890 году впервые построил ручной перфоратор для нанесения цифровых данных на перфокарты и ввёл механическую сортировку для раскладки этих перфокарт в зависимости от места пробива. Им была построена машина — табулятор, которая прощупывала отверстия на перфокартах, воспринимала их как соответствующие числа и подсчитывала их. Табуляторы Холлерита были использованы при переписи населения в США, Австрии, Канаде, Норвегии и в др. странах. Они же использовались при первой Всероссийской переписи населения в 1897 году, причём Холлерит приезжал в Россию для организации этой работы. В 1896 году Холлерит основал всемирно известную фирму Computer Tabulating Recording, специализирующуюся на выпуске счетно-перфорационных машин и перфокарт. В дальнейшем фирма была преобразована в фирму International Business Machines (IBM), ставшую сейчас передовым разработчиком компьютеров.
Новый инструмент — ЭВМ — служит человеку пока лишь чуть больше полвека. ЭВМ — одно из величайших изобретений середины XX века, изменивших человеческую жизнь во многих ее проявлениях. Вычислительная техника превратилась в один из рычагов обеспечивающих развитие и достижения научно-технического прогресса. Первым создателем автоматической вычислительной машины считается немецкий учёный К. Цузе. Работы им начаты в 1933 году, а в 1936 году он построил модель механической вычислительной машины, в которой использовалась двоичная система счисления, форма представления чисел с «плавающей» запятой, трёхадресная система программирования и перфокарты. В качестве элементной базы Цузе выбрал реле, которые к тому времени давно применялись в различных областях техники. В 1938 году Цузе изготовил модель машины Z1 на 16 слов; в следующем году модель Z2, а еще через два года он построил первую в мире действующую вычислительную машину с программным управлением (модель Z3), которая демонстрировалась в Германском научно-исследовательском центре авиации. Это был релейный двоичный компьютер, имеющий память на 64 22-разрядных числа с плавающей запятой: 7 разрядов для порядка и 15 разрядов для мантиссы. К несчастью, все эти образцы машин были уничтожены во время бомбардировок в ходе Второй мировой войны. После войны Цузе изготовил модели Z4 и Z5. К. Цузе в 1945 году создал язык Plankalkul (от немецкого «исчисление планов»), который относится к ранним формам алгоритмических языков. Этот язык был большей степени машинно-ориентированным, но по некоторым возможностям превосходил АЛГОЛ.
Независимо от Цузе построением релейных автоматических вычислительных машин занимались в США Д. Штибитц и Г. Айкен.
Д. Штибитц, тогда работавший в фирме Bell, собрал на телефонных реле первые суммирующие схемы. В 1940 году вместе с С. Уильямсом Штибитц построил «вычислитель комплексных чисел», или релейный интерпретатор, который последствии стал известен как специализированный релейный компьютер «Bell-модель 1». В этом же году машина демонстрировалась на заседании Американского математического общества, где были проведены её первый промышленные испытания. В последующие годы были созданы ещё четыре модели этой машины. Последняя из них разработана Штибитцем в 1946 году (модель V) — это был компьютер общего назначения, содержащий 9000 реле и занимающий площадь почти 90 м2, вес устройства составлял 10 т.
Другую идею релейного компьютера выдвинул в 1937 году аспирант Гарвардского университета Г. Айкен. Его идеей заинтересовалась фирма IBM. В помощь Айкену подключили бригаду инженеров во главе с К. Лейком. Работа по проектированию и постройки машины, названной «Марк-1», началась в 1939 году и продолжалась 5 лет. Машина состояла из стандартных деталей, выпускаемых IBM в то время. Электронные лампы при создании вычислительной машины были впервые применены американским профессором физики и математики Д. Атанасовым. Атанасов работал над проблемой автоматизации решения больших систем линейных уравнений. В декабре 1939 году Атанасов окончательно сформулировал и осуществил на практике свои основные идеи, создав вместе с К. Берри работающую настольную модель машины. После этого он приступил к созданию машины, способной решить систему с 29 неизвестными.
Память машины была энергоёмкая — использовалось 1632 бумажных конденсатора. Всего использовалось 300 электронных ламп. К весне 1942 г. когда монтаж машины был почти завершен, США уже находилось в состоянии войны с Германией, и, к несчастью, проект был свёрнут.
В 1942 году профессор электротехнической школы Мура Пенсильванского университета Д. Маучли представил проект «Использование быстродействующих электронных устройств для вычислений», положивший начало созданию первой электронной вычислительной машины ENIAC. Около года проект пролежал без движения, пока им не заинтересовалась Баллистическая исследовательская лаборатория армии США. В 1943 году под руководством Д. Маучли и Д. Эккерта были начаты работы по созданию ENIAC, демонстрация состоялась 15 февраля 1946 года. Новая машина имела «впечатляющие» параметры: 18000 электронных ламп, площадь 90 × 15 м2, весила 30 т и потребляла 150 кВт. ENIAC работала с тактовой частотой 100 кГц и выполняла сложение за 0,2 мс, а умножение — за 2,8 мс, что было на три порядка быстрее, чем это могли делать релейные машины. По своей структуре ЭВМ ENIAC напоминала механические вычислительные машины.
Долгое время считалось, что ENIAC единственный электронный компьютер, но в 1975 году Великобритания сообщила о том, что уже с декабря 1945 года в государственном институте Блетчли-Парк работал первый программируемый ЭВМ «Колосс», но для правильной оценки компьютера Англия не предоставила много данных.
С точки зрения архитектуры ЭВМ с хранимой в памяти программой революционными были идеи американского математика, Члена Национальной АН США и американской академии искусств и наук Джона фон Неймана (1903—1957). Эти идеи были изложены в статье «Предварительное рассмотрение логической конструкции электронного вычислительного устройства», написанная вместе с А. Берксом и Г. Голдстайном и опубликованная в 1946 году.
Вот как представлял фон Нейман свою ЭВМ:
Машина должна состоять из основных органов: орган арифметики, памяти, управления и связи с оператором, чтобы машина не зависела от оператора.
Она должна запоминать не только цифровую информацию, но и команды, управляющие программой, которая должна проводить операции над числами.
ЭВМ должна различать числовой код команды от числового кода числа.
У машины должен быть управляющий орган для выполнения команд, хранящихся в памяти.
В ней также должен быть арифметический орган для выполнения арифметических действий.
И, наконец, в её состав должен входить орган ввода-вывода.
В 1945 г. Англия приступила к созданию первой машины с неймовским типом памяти. Работа была возглавлена Т. Килбрном из Манчестерского университета и Ф. Вильямсем из Кембриджского. Уже 21 июня 1948 года Т. Килбрн и Ф. Вильямс просчитали первую программу на ЭВМ «Марк-1» (одинаковое название с машиной Айкена).
Другая группа во главе с М. Уилксом 6 мая 1949 года произвела первые расчёты машине того же типа — EDSAC.
Вскоре были построены ещё машины EDVAC (1950 г.), BINAC и SEAC.
В ноябре месяце того же года в Киевской лаборатории моделирования и вычислительной техники Института электротехники АН СССР под руководством академика С. А. Лебедева была создана первая советская ЭВМ — МЭСМ. МЭСМ была принципиально новой машиной, так как профессор Лебедев применил принцип параллельной обработки слов.
Ламповые ЭВМ
Разработка первой серии электронной машины UNIAC (Universal Automatic Computer) начата примерно в 1947 году. Д. П. Эккертом и Д. Мочли, основавшими фирму Eckert-Mauchly. Первый образец UNIAC-1 был построен для Бюро переписи США в 1951 г. UNIAC был создан на базе ЭВМ ENIAC и EDVIAC. Работала с тактовой частотой 2,25 МГц и содержала около 5000 электронных ламп. Емкость памяти — 1000 12-разрядных десятичных чисел.
Следующим шагом было увеличение быстродействие памяти, для чего учёные стали исследовать свойства ферритовых колец. Впервые память на магнитных сердечниках была применена в машине «Whirlwind-1». Она представляла собой два куба с 32 × 32 × 17 сердечниками, обеспечивающих хранение 2048 слов для 16-разрядных двоичных чисел.
В разработку электронных компьютеров включилась и фирма IBM, которая в 1952 году выпустила первый промышленный компьютер IBM-701. Машина содержала 4000 электронных ламп и 12 000 германиевых диодов. В 1956 году IBM выпустила новый серийный компьютер — IBM-704, отличавшийся высокой скоростью работы.
После ЭВМ IBM-704 была выпущена машина IBM-709, в архитектурном плане приблизившаяся к машинам второго и третьего поколения.
В 1956 году IBM разработала плавающие магнитные головки на воздушной подушке, изобретение которых позволило создать новый тип памяти — дисковые запоминающие устройства (ЗУ). Впервые ЗУ на дисках появились в машине IBM-305 и RAMAC-650, которая имела пакет из 50 металлических дисков с магнитным покрытием, вращающиеся со скоростью 1 200 об/мин. На поверхности диска размещалось 100 дорожек для записи данных 10 000 знаков каждая.
Вслед за первым серийным компьютером UNIAC-1 фирма REMINGTON-RAND в 1952 году выпустила ЭВМ UNIAC-1103, которая работала в 50 раз быстрее.
В октябре 1952 году группа сотрудников фирмы REMINGTON-RAND предложила алгебраическую форму записи алгоритмов; на основе этого офицер военно-морских сил США и руководитель группы программистов, капитан Грейс Хопперт разработала первую программу-компилятор A-0.
Фирма IBM также сделала первые шаги в области автоматизации программирования, создав в 1953 году для машины IBM-701 «Систему быстрого кодирования». В 1957 году группа Д. Бэкуса завершила работу над ставшим впоследствии популярным языком программирования высокого уровня ФОРТРАНОМ. Он способствовал расширению сферы деятельности компьютеров.
В 1951 году фирма Ferranti стала выпускать машину «Марк-1». А через 5 лет выпустила ЭВМ «Pegasus», использующую концепцию регистров общего назначения.
В СССР в 1948 году проблемы развития вычислительной техники становятся общегосударственной задачей.
В 1950 году в Институте точной механики и вычислительной техники (ИТМ и ВТ АН СССР) организован отдел цифровой ЭВМ для разработки и создания большой ЭВМ. Эту работу возглавил С. А. Лебедев (1902—1974). В 1951 году здесь была спроектирована машина БЭСМ, а в 1952 году началась её эксплуатация.
В проекте вначале предлагалось использовать трубки Вильямса, но до 1955 г. в качестве элемента памяти использовали ртутные линии. БЭСМ могла совершать 8 000 оп/с. Серийно она стала выпускаться с 1956 года под названием БЭСМ-2.
Транзисторные ЭВМ
В середине 50-ых гг. XX века, когда ламповые компьютеры достигли «насыщения», ряд фирм объявил о работах по созданию транзисторных ЭВМ. Первоначально это вызвало скептицизм из-за того, что производство полупроводников будет сложным и дорогостоящим. Однако этого не случилось — постоянно совершенствовались методы производства транзисторов. В 1955 году в США было объявлено о создании цифрового компьютера TRADIC, построенного на 800 транзисторах и 11 000 германиевых диодах. В этом же году фирма объявила о создании полностью транзисторной ЭВМ. Первая такая машина «Philco-2000» была сделана в ноябре 1958 года, она содержала 56 тыс. транзисторов, 1 200 диодов, но всё же в её составе было 450 электронных ламп. «Philco-2000» выполняла сложение за 1,7 мкс, умножение — за 40,3 мкс.
В Англии транзисторная ЭВМ «Elliot-803» была выпущена в 1958 году, в ФРГ — «Simens-2002» и в Японии H-1 — в 1958 году, во Франции и Италии — в 1960 году. В СССР группа разработчиков во главе с Е. Л. Брусиловским в 1960 году в НИИ математических машин в Ереване завершила разработку полупроводниковой ЭВМ «Раздан-2», её серийный выпуск начат в 1961 году. В это же время появились компьютеры и не на полупроводниках. Так, в Японии была выпущена ЭВМ «Senac-1» на параметронах, в СССР — «Сетунь», а во Франции — CAB-500 на магнитных элементах. «Сетунь», разработанная в МГУ под руководством Н. П. Брусенцова, стала единственной серийной ЭВМ, работавшая в троичной системе счисления.
Значительным событием в конструировании машин второго поколения стали ЭВМ «Atlas» (выпущена в Англии в 1961 году), в которой были применены концепции виртуальной (кажущейся) памяти, «Stretch» и CDC-6600 (США) и БЭСМ-6 (СССР).
В 1960 году фирма IBM разработала мощную вычислительную систему «Stretch» (IBM-7030), разработчики которой добились 100-кратного увеличения быстродействия: в её состав входило 169 тыс. дрейфовых транзисторов с тактовой частотой переключения в 100 МГц.
Большой вклад в развитие компьютеров второго поколения внесла фирма Control Data, разработавшая в 1960 году ЭВМ CDC-6600 (первый образец был установлен в Лос-Анжелесе в 1964 г.).
В архитектуре CDC-6600 было использовано новое решение — многопроцессорная обработка: многочисленные арифметико-логические устройства с десятью периферийными процессорами, что обеспечивало машине производительность более чем 3 млн. оп/с.
В СССР после выпуска первой серийной ЭВМ второго поколения «Раздан-2» было разработано ещё около 30 моделей по такой же технологии. Минским заводом вычислительной техники им. Серго Орджоникидзе в 1963 году была выпущена первая транзисторная ЭВМ «Минск-2», а затем её модификации: «Минск-22», «Минск-22М», «Минск-23» и в 1968 году — «Минск-32», которые долгое время играли главную роль в автоматизации различных отраслей народного хозяйства.
В Институте кибернетики АН УССР под руководством В. М. Глушкова в 60-е гг. ХХ века разработан ряд различных малых машин: «Проминь» (1962 г.), «Мир», «Мир-1» (1965 г.) и «Мир-2» (1969 г.) — впоследствии применяемых в вузах и научно-исследовательских организациях.
В 1964 году в Ереване также были созданы малые ЭВМ серии «Наири», отличающихся от ЭВМ «Мир» некоторыми структурными особенностями.
В том же году в Пензе была разработана и пущена в производство серия машин «Урал» (главный конструктор Б. И. Рамеев), позже в 1965 и 1967 гг. появились модификации — «Урал-11» и «Урал-16». ЭВМ серии «Урал» имели унифицированную систему связи с периферийными устройствами.
Машина МЭСМ-6 состояла из 60 тыс. транзисторов и 200 тыс. полупроводниковых диодов, имела высокую надёжность и высокое быстродействие — 1 млн. оп/с.
При появлении ЭВМ второго поколения разработчики занялись разработкой и создание языков программирования, обеспечивающих удобный набор программ.
Одним из первых языков программирования был АЛГОЛ (создан группой ученых американской Ассоциацией по вычислительной техники)..