Для чего изначально был создан компьютер
18 великих изобретений в мире компьютеров и программирования
Недавно у нас с коллегами возникла дискуссия на тему первых компьютеров и программ. В разговоре вспомнились не только знаменитые ученые, такие как Чарльз Бэббидж, но и менее известных вроде Ады Лавлейс. В результате возникла идея провести исследование и составить хронологию развития истории компьютеров и программирования.
В процессе изучения различных источников обнаружилось немало любопытных фактов. Например, тот же Бэббидж технически не является изобретателем компьютера, что первым высокоуровневым языком программирования был вовсе не FORTRAN, а для CRT-мониторов использовались стилусы.
1. Первый компьютер: «Машина различий» (1821 г.)
Предшественник Аналитической машины. «Машина различий» была первой попыткой создания механического компьютера. Разработкой проекта занимался ученый Чарльз Бэббидж. Заручившись поддержкой британского правительства, он начал работать над устройством. Но из-за высокой себестоимости, финансирование было остановлено и компьютер так и не построили.
2. Первый компьютер общего назначения: «Аналитическая машина» (1834 г.)
Чарльз Бэббидж продолжил свою работу и, основываясь на полученном опыте, взялся за разработку механического компьютера. Эта машина предназначалась для автоматизации вычислений путем аппроксимации функций многочленами и вычисления конечных разностей. Благодаря возможности приближенного представления в многочленах логарифмов и тригонометрических функций, «аналитическая машина» могла быть универсальным прибором.
3. Первая Компьютерная программа: алгоритм для вычислений числа Бернулли (1841 — 1842 г.)
Математик Ада Лавлейс начала переводить отчеты своего итальянского коллеги — математика Луиджи Менабреа. Для этого она использовала все ту же аналитическую машину Бэббиджа в 1841. Во время перевода женщина заинтересовалась компьютером и оставила примечания. В одной из заметок содержался алгоритм для вычисления числа Бернулли (последовательность рациональных чисел В1, В 2, В3) аналитической машиной, которая, как полагают эксперты, была самой первой компьютерной программой.
4. Первый работающий компьютер: Z3 Конрада Цузе (1941г.)
Немецкий изобретатель Конрад Цузе стал первым, кому удалось создать работающий компьютер Z3. На основе своих первых двух моделей Z1 и Z2 ученый собрал полноценный электромагнитный программирующий компьютер, созданный на базе электронных реле. Z3 имел двоичную систему исчисления, числа с плавающей запятой, арифметическое устройство с двумя 22-разрядными регистрами, управление через 8 канальные ленты.
Предполагалось, что это будет секретный проект немецкого правительства. По большей части он разрабатывался для Института Исследований в области авиации. Правда самого Цузе мало интересовали интересы военных, ему просто хотелось создать работающую ЭВМ.
Оригинал машины Z3 был разрушен во время бомбежки Берлина в 1943 году.
5. Первая электронно-вычислительная машина: Компьютер Атанасова-Берри (Atanasoff-Berry Computer, ABC, 1942 г.)
Первое цифровое вычислительное устройство без движущихся частей. Компьютер был создан Джоном Винсентом Атанасовым и Клиффордом Берри. ABC использовался для поиска решений под одновременные линейные уравнения. Это был самый первый компьютер, который использовал набор из двух предметов, чтобы представлять данные и электронные выключатели вместо механических. Компьютер, однако, не являлся программируемым. В ABC впервые появились более современные элементы, такие как двоичная арифметика и триггеры. Минусом устройства была его особая специализация и неспособность к изменяемости вычислений из-за отсутствия хранимой программы.
6. Первая программируемая электронно-вычислительная машина: «Колосс» (1943 г.)
Компьютер «Колосс» — секретная разработка времен второй мировой войны. Он был создан Томми Флауэрсом совместно с отделением Макса Ньюмана, с целью предоставления помощи британцам в расшифровке перехваченных нацистских сообщений. Они были зашифрованы шифром Лоренца. Действия были запрограммированы электронными выключателями и штепселями. «Колосс» давал время на расшифровку сообщений от нескольких часов до недель. С помощью компьютера было расшифровано немало фашистских шифровок.
7. Первая программируемая электронно-вычислительная машина общего назначения: ENIAC (1946 г.)
ENIAC (Электронный числовой интегратор и вычислитель) — первый электронный цифровой компьютер общего назначения с возможностью перепрограммирования для решения широкого спектра задач. Финансируемый американской армией, ENIAC был разработан Электротехнической школой Мура в университете Пенсильвании. Его создавала команда ученых во главе с Джоном Преспером Экертом и Джоном Уильямом Мокли. ENIAC достигал в ширину 150 футов и мог быть запрограммирован на выполнение сложных операций. Вычисления производились в десятичной системе, компьютер оперировал числами максимальной длиной в 20 разрядов.
Интересным фактом было то, что на программирование задачи на ENIAC могло уходить несколько дней, зато решение выдавалось в считаные минуты. При перекоммутировании ENIAC «превращался» в практически новый специализированный компьютер для решения специфических задач.
8. Первый трекбол (1946/1952 г.)
Трекбол — указательное устройство ввода информации об относительном перемещении для компьютера. По сути, аналог современной компьютерной мыши. По одной из версий он был разработан Ральфом Бенджамином, когда тот работал над системой мониторинга для низколетающего самолета. Изобретение, которое он описал, включало в себя шар для управления координатами X-Y курсора на экране. Дизайн был запатентован в 1947 году, но не выпускался, потому что проект находился под грифом «секретно».
Также трекбол использовался в системе канадского военно-морского флота DATAR в 1952 году. Этот «шаровой указатель» применил Том Крэнстон.
9. Первый компьютер совместного хранения данных и программ в памяти: SSEM (1948 г.)
Манчестерская малая экспериментальная машина (англ. Manchester Small-Scale Experimental Machine, SSEM) — первый электронный компьютер, построенный по принципу совместного хранения данных и программ в памяти. Создатели — Фредерик Уильямс, Том Килберн и Джефф Тутилл были членами Манчестерского университета. Машина задумывалась, как экспериментальный аппарат для изучения свойств компьютерной памяти на ЭЛТ («трубки Уильямса»). Программы были введены в двухчастную форму, используя 32 выключателя, на продукции CRT.
Кстати, успешные испытания SSEM стали началом создания полноценного компьютера на трубках Уильямса — «Манчестерского Марка I».
10. Первый высокоуровневый язык программирования: Планкалкюль (Plankalkül, 1948 г.)
Этот язык был использован Конрадом Цузе (разработчиком первого работающего компьютера Z3). Хотя Цузе и начал создавать Plankalkül еще с 1943 года, впервые он был применен в 1948 году, когда ученый опубликовал работу на тему программирования. Правда данный язык программирования не привлек особого внимания. Первый компилятор для Планкалкюль (для современных компьютеров) был создан лишь в 2000 году профессором Свободного университета Берлина — Йоахимом Хоманом.
11. Первый ассемблер: «Начальные команды» на EDSAC (1949 г.)
Ассемблер — транслятор исходного текста программы, который преобразовывает мнемонику (низкого уровня) в числовое представление (машинный код).
Первый в мире действующий и практически используемый компьютер с хранимой в памяти программой. Программы были в мнемокодах вместо машинных, делая исходный код самым первым ассемблером.
12. Первый персональный компьютер: «Simon» (1950 г.)
Simon стал первым доступным компьютером. Он разработан Эдмундом Беркли, а построен инженером-механиком Уильямом Портером и выпускниками Колумбийского университета Робертом Дженсоном и Робертом Валлом. Simon имел систему команд и мог выполнять девять операций, в том числе два действия арифметики — сложение и вычитание, а также сравнение и выбор аргументов. Числа и команды считывались с перфоленты, а результат высвечивался на индикаторной панели. На вход могли подаваться числа в диапазоне от 1 до 255 в бинарной нотации, набитые на перфоленту.
13. Первый компилятор: A-0 для UNIVAC 1 (1952 г.)
Компилятор — программа, которая преобразовывает язык высокого уровня в машинный код. A-0 Система была программой, созданной легендарной женщиной-программистом Грейс Хоппер. Основной задачей системы было преобразование программы, определенной как последовательность подпрограмм и аргументов в машинный код. A-0 был выпущен клиентам с его исходным кодом, делающим, возможно, самое первое общедоступное программное обеспечение.
В 1952 г. у Хоппер появился готовый к работе компилятор. Ее высказывание по этому поводу:
В это не могли поверить. У меня был работающий компилятор и никто им не пользовался. Ведь мне говорили, что компьютер может выполнять только арифметические операции.
14. Первый автокод: Автокод Гленни (1952 г.)
Автокод — название группы языков программирования высокого уровня, который использует компилятор. Первый автокод был создан для серии компьютеров в университетах Манчестера, Кембриджа и Лондона. Автокод был создан одним из манчестерских сотрудников Тьюринга — Аликом Глени (собственно в его честь и назван).
15. Первая компьютерная мышь (1964 г.)
Идея компьютерной мыши пришла в голову американскому физику Дугласу Энджелбарту во время конференции на тему компьютерной графики. Он придумал устройство с парой маленьких поворачивающихся колес, которые могут использоваться для свободного перемещения курсора по экрану. Прототип был создан его ведущим инженером, Биллом Инглишем, но Инглиш и Энджелбарт никогда не получали лицензионные платежи для дизайна.
16. Первый коммерческий компьютер: Programma 101 (1965 г.)
17. Первый сенсорный экран (1965 г.)
На фото ниже — первый сенсорный экран (хоть он и мало чем похож на современные модели). Это панель с сенсорным экраном без чувствительности давления (в равной степени на любые касания экрана) с единственной точкой для контакта. В дальнейшем концепт использовался воздушными диспетчерами в Великобритании вплоть до 90-х годов.
18. Первый объектно-ориентированный язык программирования: Simula (1967 г.)
Simula — это язык программирования общего назначения, разработанный сотрудниками Норвежского Вычислительного Центра (г. Осло) Кристеном Нюгордом и Оле-Йоханом Далем для моделирования сложных систем. Учения Чарльза Ричарда Хоара про конструкции класса, языков программирования с объектами, классами и подклассами привели к созданию SIMULA 67.
Simula 67 явилась также первым языком с встроенной поддержкой основных механизмов объектно-ориентированного программирования.
Для чего изначально был создан компьютер
Раньше люди делали все свои вычисления только при помощи своих природных данных и подручных средств. Например, узелковый способ счета. Придумали его древние индейцы племени Мая примерно в VIII- VII веках до нашей эры. Это связка нитей, на которых завязывали узелки для подсчетов.
Или, к примеру, абак. Это счетная доска, применявшаяся для арифметических вычислений приблизительно с V века до нашей эры в Древней Греции и Древнем Риме. Таким образом, люди пытались облегчить себе работу с вычислениями.
Если взять более позднюю историю, то мы можем заметить, что способы вычислений начали постепенно упрощаться, а машины для вычислений соответственно усложняться. Из абака, которым пользовались греки и римляне, славяне в XV – XVI веках нашей эры придумали счеты. Это самый долго живущий вычислитель, наверное и сейчас счеты есть у кого-то дома. Это костяшки нанизанные на стержни. На первом стержне костяшки имеют достоинство единиц на втором десятков и т.д.
Но заглянем в более позднюю историю, когда появились первые машины для вычислений. В 1642 году Белз Паскаль придумал свою машину для вычислений. Называлась она «Паскалина». Несмотря на то, что умела она только складывать и вычитать. Паскаль сумел продать около дюжины таких машин. Это была первая попытка механизировать вычисления.
В 1673 году Готфрид Лейбниц создал первую в мире машину, которая могла складывать, вычитать, умножать и делить числа. Это был прототип арифмометра, который использовался в Х IX веке.
В 1822 году Чарльз Бэбидж изобрел разносную машину – это первая попытка создать программируемое вычислительное устройство. Программы для нее написала Ада Лавлейс.
1. Первое поколение (1946-1957). Машины создавались на основе вакуумных электронных ламп; управлять ими можно было с пульта и с помощью перфокарт (картонных карточек с отверстиями, которые кодировали биты данных). Параметры первой такой машины: общая масса – 30 т, количество электронных ламп – 18 тысяч, потребляемая мощность – 150 кВт (такой мощности было достаточно для поддержки небольшого завода).
2. Второе поколение (1958-1963). Вычислительные машины этого типа появились в 1960-х годах. Их элементы были построены на основе полупроводниковых транзисторов. Данные и программы в машины вводили с помощью перфокарт и перфолент (бумажных лент с отверстиями).
3. Третье поколение (1964-1970). Электронно-вычислительные машины этого поколения изготавливали с использованием интегральных схем. Это устройства, состоящие из десятков или тысяч электронных элементов, которые расположены на маленькой (1х1 см) пластине. Управляли работой таких машин с помощью алфавитно-цифровых терминалов. Данные и программы вводили с терминала либо с использованием перфокарт и перфолент.
4. Четвертое поколение (с 1971). Машины создаются на основе больших интегральных схем (плотность электронных элементов – десятки тысяч на кубический сантиметр). Связь с пользователем осуществляется с помощью цветного графического монитора. Самые яркие представители этого поколения ЭВМ – персональные компьютеры (ПК). Один из первых серийных ПК был создан6 в 1981 году компанией IB М РС.
5. Пятое поколение (сейчас и в будущем). ЭВМ этого поколения создаются на основе сверхбольших интегральных схем, которые характеризуются огромной плотностью размещения элементов на кристале.
Как американцы собрали ЭВМ, чтобы «отдокторстрэнджить» все возможные сценарии ядерной войны с СССР.
Фото: Jerry Cooke / Getty Images
История компьютера ENIAC началась в 1930-х, когда американский профессор Джон Мокли захотел предсказывать погоду не на недели, а на годы вперёд. Он считал, что для этого нужно разгадать закономерности вспышек и пятен на Солнце.
У профессора были данные наблюдений метеорологов за много лет. Чтобы проанализировать их, он купил у банков списанные калькуляторы и усадил за работу студентов. Но вычисления шли медленно — информации было много, а студенты часто ошибались.
Мокли понял: чтобы ускорить работу, нужно мощное вычислительное устройство. Тогда он начал разрабатывать машину на радиолампах, которая выдавала бы результат сразу после ввода информации. Но собрать её изобретатель не мог — у него не хватало денег.
В 1941 году Мокли начал преподавать в инженерной школе при университете. Там он познакомился с изобретателем Джоном Эккертом, которого тоже увлекла идея создать электронный компьютер.
Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.
Компьютер для артиллерии
Вскоре у Мокли появилась возможность реализовать идею. В 1942 году союзники высадились в Северной Африке и артиллеристам понадобились баллистические таблицы под местный климат.
Школа, где работал Мокли, сотрудничала с баллистической лабораторией. В ней такие таблицы составляла сотня сотрудников — в основном девушки с высшим математическим образованием.
Девушек в лаборатории называли просто — «компьютеры» (от англ. computer — вычислитель). В Америке тогда царило гендерное неравенство и к инженерным задачам женщин не допускали, а вот кропотливую, трудоёмкую и низкооплачиваемую работу им доверяли. Впрочем, девушки были довольны — это была хорошая альтернатива карьере провинциальной учительницы.
Таблицы составляли для всех снарядов и орудий. Причём для каждого вида нужно было рассчитать около трёх тысяч траекторий полёта и учесть множество факторов: угол возвышения ствола, скорость снаряда, температуру воздуха, атмосферное давление, скорость и направление ветра.
Объём работ был огромным, и люди с ним не справлялись. Тогда Мокли с Эккертом обратились к начальству своего института с предложением создать электронную вычислительную машину, которая сможет ускорить расчёты во много раз. Но их идею не оценили.
В апреле 1943 года Мокли по совету знакомых подал заявку на выделение средств напрямую в баллистическую лабораторию. Он обещал, что построенный компьютер будет вычислять одну траекторию за пять минут.
В описании проекта Мокли схитрил — назвал своё изобретение электронным дифференциальным анализатором, чтобы не вызвать недоверие у военных. Они не любили финансировать всё новое и непроверенное, но анализаторы были вещью знакомой.
У проекта тут же появилось немало противников. Они ворчали, что радиолампы быстро выйдут из строя, а одна перегоревшая деталь остановит всю машину. Даже знаменитый физик Энрико Ферми сказал, что лампы в таком количестве проработают не больше пяти минут. Тем не менее деньги учёным дали.
В 1944 году все чертежи были готовы и группа инженеров под руководством Мокли и Эккерта начала строить компьютер. Начальником проекта стал Мокли, а главным конструктором — Эккерт. Позже в качестве научного консультанта к ним присоединился Джон фон Нейман.
Машина весом в 30 тонн
Осенью 1945 года компьютер построили. Его назвали ENIAC — электронным числовым интегратором и вычислителем. Машина получилась весом в 30 тонн и длиной в 30 метров, в ней было 17 000 радиоламп, 10 000 конденсаторов, 7000 резисторов, 15 000 реле и 6000 переключателей.
Архитектура ENIAC была несовершенной, поэтому на него ушло так много деталей. У компьютера были модули для сложения, умножения, деления и извлечения квадратного корня. Промежуточные результаты передавались от модуля к модулю.
В современных компьютерах числа хранятся в регистрах, обрабатываются в отдельных арифметических модулях, а результаты опять помещаются в регистры, но в ENIAC каждый модуль хранения чисел был одновременно модулем обработки, который мог выполнять арифметические операции.
ENIAC работал не с двоичным кодом, а с десятичными числами. На каждую цифру приходилось 10 ламп: если горела лампа №1 — это был ноль, №2 — единица, №3 — двойка и так далее. Это приводило к огромному расходу электронных элементов. Например, чтобы представить число 1000 в двоичном виде (1111101000), нужно 10 ламп — по одной на каждую цифру в двоичной системе счисления. А в схеме ENIAC для этого требовалось 40 ламп — по 10 на одну цифру.
ENIAC мог совершать 357 операций умножения или 5000 операций сложения в секунду. В его памяти помещалось 20 десятизначных чисел. Компьютер не хранил программы в памяти.
Ни операционных систем, ни языков программирования тогда не было, поэтому всё делали вручную — устанавливали переключатели и присоединяли провода. Данные на перфокартах вводили через кард-ридер IBM, а для вывода результатов использовался перфоратор IBM.
Хотя ENIAC не был таким надёжным, как электромеханический компьютер Mark I Говарда Эйкена, по скорости он превосходил его в тысячу раз. А на траекторию, которую механический дифференциальный анализатор рассчитывал в течение 15 минут, ENIAC тратил всего 20 секунд. Работал он с той же точностью, что и человек с механическим калькулятором.
Расчёты для проектирования водородной бомбы и сверхзвукового самолёта
14 февраля 1946 года ENIAC показали публике (этот день теперь считается Днём программиста). Сначала компьютер за одну секунду посчитал сумму 5000 чисел, а затем — вычислил траекторию полёта снаряда быстрее, чем тот долетает от орудия до цели.
Присутствовавшие удивились. Они видели: чтобы машина ожила и начала вычислять, достаточно было нажать одну кнопку. Восхищённые репортёры называли ENIAC «электронным мозгом», «искусственным мозгом» и «волшебником».
Когда ENIAC был готов, война уже закончилась и артиллерийские расчёты стали не такими актуальными. Для него подобрали новую задачу — проверить один из вариантов устройства водородной бомбы.
Задача требовала огромного объёма вычислений, для которых пришлось бы решать дифференциальные уравнения. Программисты разбивали её на несколько этапов — сначала решения находили вручную, а потом переводили этот алгоритм на язык переключателей и проводов, чтобы всё автоматизировать.
Промежуточные результаты выводили на перфокарты и после перенастройки снова вводили в компьютер. С чем-то похожим тогда не могло справиться ни одно из электромеханических устройств.
ENIAC умел выполнять сложные операции, в том числе циклы, переходы и подпрограммы, но предварительно все уравнения нужно было решить вручную огромное количество раз.
На ENIAC прогнозировали погоду в Советском Союзе, чтобы узнать, где выпадут радиоактивные осадки в случае ядерной войны. Ещё проводили инженерные расчёты, составляли баллистические таблицы, в том числе для атомных боеприпасов. Британский физик Дуглас Хартри рассчитал на ENIAC аэродинамику сверхзвукового самолёта.
Фон Нейман вычислял на ENIAC числа π и е (число Эйлера) с точностью в 2000 знаков после запятой. Он хотел выяснить, как цифры в этих числах распределены статистически, чтобы узнать, могут ли компьютеры генерировать случайные числа. Оказалось, что могут. Позже с группой метеорологов фон Нейман сделал первый численный прогноз погоды.
Невидимые программисты ENIAC
На презентации ENIAC никто не узнал про работу девушек, которые запрограммировали компьютер для демонстрации. Они были на мероприятии, но изображали хозяек — рассаживали гостей, раздавали им перфокарты и бумаги с результатами вычислений.
О команде программистов первой ЭВМ совершенно случайно узнали только в конце восьмидесятых. В 1946 году выпускница Гарварда Кети Клейман нашла фотографии с демонстрации ENIAC, на которых были подписаны только мужчины. Она спросила о женщинах у компьютерного историка, но он ответил, что это refrigerator ladies — так называли моделей, которые позировали для рекламы холодильников и стиральных машин.
Кети не устроил этот ответ, и она нашла сведения о девушках-программистах, которые рассчитывали процесс ядерного синтеза, траектории полётов баллистических ракет и форму крыльев сверхзвукового самолёта. Она даже их разыскала, записала и опубликовала интервью.
Оказалось, что для работы на ENIAC выбрали лучших вычислителей из Лаборатории баллистических исследований: Кей Антонелли, Фрэнсис Билас, Джин Дженнингс, Рут Лихтерман, Бетти Холбертон и Марлин Вескоф. Эти девушки стали первыми в мире программистами ЭВМ.
Их команда программировала и поддерживала ENIAC. Чтобы ввести новую программу, им каждый раз приходилось его перекоммутировать — установить тысячи тумблеров в новое положение и протянуть много проводов. Электронные лампы и конденсаторы перегорали почти каждый день, и для их замены операторы часами искали неисправные элементы. Одна настройка занимала несколько дней, на отладку уходили недели.
Работа девушек не получила особого признания — её называли второстепенной, «женской». Ведущие физики и инженеры проектировали и создавали вычислительное оборудование, это дело считали гораздо более важным.
Конец ENIAC
ENIAC работал до 1955 года. Несмотря на то что компьютер много раз модернизировали, к этому времени он окончательно устарел. Его демонтировали, когда появились более совершенные и мощные ЭВМ.
Машин с похожей архитектурой больше никогда не строили — вскоре в Пенсильванском университете разработали фоннеймановскую архитектуру, которая используется в современных компьютерах.
Значимость ENIAC в том, что это был первый полностью электронный универсальный компьютер, который теоретически мог справиться с любой задачей. Он доказал, что вычислительную машину можно создать на основе электронных элементов и она окупится.