Недавно у нас с коллегами возникла дискуссия на тему первых компьютеров и программ. В разговоре вспомнились не только знаменитые ученые, такие как Чарльз Бэббидж, но и менее известных вроде Ады Лавлейс. В результате возникла идея провести исследование и составить хронологию развития истории компьютеров и программирования.

В процессе изучения различных источников обнаружилось немало любопытных фактов. Например, тот же Бэббидж технически не является изобретателем компьютера, что первым высокоуровневым языком программирования был вовсе не 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. Первый высокоуровневый язык программирования: Планкалкюль (Plankalkul, 1948 г.)


Этот язык был использован Конрадом Цузе (разработчиком первого работающего компьютера Z3). Хотя Цузе и начал создавать Plankalkul еще с 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 г.)


Персональный компьютер Programma 101, также известный как Perottina, был первым в мире коммерческим ПК. Он выполнял следующие действия: дополнение, вычитание, умножение, деление, высчитывал квадратный корень, абсолютную величину и часть. Компьютер был оценен в $3,200 и несмотря на дороговизну, неплохо продавался (около 44,000 единиц). Изобрел Programma 101 итальянский инженер Пьер Джорджио Перотто.



17. Первый сенсорный экран (1965 г.)


На фото ниже — первый сенсорный экран (хоть он и мало чем похож на современные модели). Это панель с сенсорным экраном без чувствительности давления (в равной степени на любые касания экрана) с единственной точкой для контакта. В дальнейшем концепт использовался воздушными диспетчерами в Великобритании вплоть до 90-х годов.



18. Первый объектно-ориентированный язык программирования: Simula (1967 г.)


Simula — это язык программирования общего назначения, разработанный сотрудниками Норвежского Вычислительного Центра (г. Осло) Кристеном Нюгордом и Оле-Йоханом Далем для моделирования сложных систем. Учения Чарльза Ричарда Хоара про конструкции класса, языков программирования с объектами, классами и подклассами привели к созданию SIMULA 67.

Simula 67 явилась также первым языком с встроенной поддержкой основных механизмов объектно-ориентированного программирования.

Небольшой пример кода
Begin
   Class Glyph;
      Virtual: Procedure print Is Procedure print;
   Begin
   End;

   Glyph Class Char (c);
      Character c;
   Begin
      Procedure print;
        OutChar(c);
   End;

   Glyph Class Line (elements);
      Ref (Glyph) Array elements;
   Begin
      Procedure print;
      Begin
         Integer i;
         For i:= 1 Step 1 Until UpperBound (elements, 1) Do
            elements (i).print;
         OutImage;
      End;
   End;

Ref (Glyph) rg;
   Ref (Glyph) Array rgs (1 : 4);

   ! Main program;
   rgs (1):- New Char ('A');
   rgs (2):- New Char ('b');
   rgs (3):- New Char ('b');
   rgs (4):- New Char ('a');
   rg:- New Line (rgs);
   rg.print;
End;


Можно много чему научиться у первопроходцев в истории вычисления и создания компьютеров. Работа, проделанная поколениями до нас сподвигла ко многим изменениям, формирующим современный ИТ-мир.

Комментарии (20)


  1. DmitryAnatolich
    02.12.2015 22:45

    В первой компьютерной мыши крышка от консервной банки в качестве колеса?


    1. darkfrei
      03.12.2015 01:32

      скорее шашка из шашек.


    1. olegkrasnov
      03.12.2015 07:26
      +3

      image


      1. DmitryAnatolich
        03.12.2015 10:22
        +1

        Похоже на переплетный нож. Как эту ерунду вообще двигали? Одно колесо должно ведь стопорить другое.


        1. scg
          03.12.2015 10:50
          +2

          Говорят, по диагонали оно не умело.


  1. ufm
    03.12.2015 00:21
    +7

    " программа и данные которого сохранялись на внешних избитых лентах. " — на этом я сломался.


    1. wormball
      03.12.2015 10:47
      +2

      А я просмотрел по диагонали, ибо доселе уже сотни подобных статей читал. Теперь жалею, что пропустил такой шедевр.


    1. dMac
      03.12.2015 14:39
      +3

      Это вообще полуфабрикат какой-то.
      Грейс Купер… Хоппер же!
      операции — дополнение, вычитание, умножение, деление… в оригинале, видимо, было addition — сложение.
      Это только два последних, а перед ними — еще с дюжину ляпов всяких.
      Впечатление такое, что ua-hosting пишут как попало и что попало, лишь бы оставаться в ленте :(, и не вычитывают свои произведения принципиально. Фу такими быть.


    1. DrPass
      03.12.2015 21:42
      +4

      Статья сразу же наносит первый удар, ещё своей «машиной различий». Чувствуется недоброе влияние переводчика Google.


      1. masai
        03.12.2015 23:30

        Это да. :( Хотя, кстати, одноимённый роман Стерлинга и Гибсона очень даже неплох на мой скромный взгляд.


  1. ProgrammerMicrosoft
    03.12.2015 02:37

    Ваши данные не верны так как

    В 1957 году директор Кеплеровского научного центра Франц Гаммер выступил с докладом на семинаре по истории математики, проходившем в Германии. Он сделал сенсационное известие о том, что проект первой счетной машины появился на несколько десятилетий до знаменитых «колесиков» Паскаля. Первое счетное устройство было изобретено еще в середине 1623 года и называлось машиной Шиккарда.

    http://geektimes.ru/company/ua-hosting/blog/266102/


  1. alexanderzaytsev
    03.12.2015 02:47
    +5

    Это машинный перевод? Что ещё за «нота G» и «программирующий компьютер»?


    1. vorphalack
      03.12.2015 05:17
      +4

      Это Елена, человек, владеющий навыками перевода несколько лучше чем матчастью. не в обиду ей, но компании стоит найти человека, который будет вычитывать технические переводы на наличие таких вот ляпов.


      1. miwa
        03.12.2015 10:38
        +1

        Это ж какие надо иметь навыки перевода, чтобы перевести «Note G» именно как «нота G»?


        1. WildHorn
          03.12.2015 13:13
          +5

          Музыкальные?
          Note G


  1. samodum
    03.12.2015 05:42
    +3

    И вряд ли был в то время холивар «Фууу! Ты кодишь на Планкалкюле!»


  1. Fedorkov
    03.12.2015 07:15
    +4

    В разговоре вспомнились не только знаменитые ученые, такие как Чарльз Бэббидж, но и менее известных вроде Ады Лавлейс.
    Имхо, в среде программистов Ада известнее Бэббиджа.

    компьютер совместного хранения данных и программ в памяти
    Обычно это называют архитектурой фон Неймана.

    Первая компьютерная мышь
    В инете есть видео первой презентации мыши. Помимо мыши там же продемонстрировали видеочат, гипертекст и ещё несколько изобретений.


    1. madkite
      07.12.2015 15:58

      Хм… А у них видеочат не тормозил в отличие от современной хрени типа Скайпа.


  1. Dywar
    03.12.2015 21:17

    Первая ОС 1960s, IBM's OS/360


  1. sulnedinfind
    05.12.2015 02:44

    Обзор из 80-х.

    Сейчас в мейнстрим вошли уже функциональное программирование и код как данные.
    Еще немного, и люди перестанут холиварить о статической типизации.

    Lisp, кстати, в 80-е уже давно был и может даже нашлись бы люди, которые уже тогда бы включили его в список «великих изобретений».