Найти тему

Как появились компьютеры и языки программирования?

В отличие

Примерно в IV веке до нашей эры люди начали применять абак (аналог современных счётов) в работе, связанной с вычислениями, а спустя чуть менее 25 веков практически все вычисления "переехали" в компьютеры и выполняются автоматически. Давайте взглянем на поэтапное развитие вычислительной и компьютерной техники.

Итак, историю развития вычислительной техники можно разделить на четыре этапа:

  • Ручной этап (IV век до нашей эры)
  • Механический этап (начиная с середины XVII века)
  • Электромеханический этап (начиная с 1888 года)
  • Электронный этап (начиная с 1936 года)

Ручной этап

Примерно к IV веку до нашей эры приурочено изобретение абака — устройства, состоящего из набора костяшек, нанизанных на стержни. Абак позволял лишь запоминать результаты вычислений, но сами вычисления выполнят человек. Это стало одним из самых дальних предвестником того времени, когда основная часть вычислений ляжет на "плечи" техники.

Механический этап

В 1642 году Блез Паскаль изобретает паскалину — механическую машину, способную не только "помнить" числа, но и выполнять простейшую арифметическую операцию над ними — сложение.
(Однако, некоторые подчёркивают, что устройство умело не только складывать, но и вычитать. Могу предположить, что вычитание выполнялось примерно так же, как и в современных процессорах: путём суммирования с дополнительным кодом вычитаемого)

Паскалина
Паскалина

Чуть позже, в 1670 году Готфрид Лейбниц создал первый в мире арифмометр, предназначенный для выполнения четырёх действий арифметики. А в период с 1929 года до 1978 года похожее устройство ("Феликс") выпускалось в СССР общим тиражом в несколько миллионов устройств. Кроме этого было создано более двадцати модификаций "Феликса".

Арифмометр Лейбница
Арифмометр Лейбница

Спустя ещё полтора века, в 1823 году Чарльз Бэббидж предложил [нереализованный] проект аналитической машины, которая состояла из "склада" для хранения чисел, "мельницы" для операций над числами, устройства управления и устройства ввода-вывода.

Аналитическая машина Бэббиджа
Аналитическая машина Бэббиджа

Команды для этой машины вводились при помощи перфокарт.

Ада Лавлейс (английский математик) разработала основные принципы программирования этой машины, а также составила первую в мире программу для неё. Кроме этого, она ввела понятия "цикл" и "рабочая ячейка". Считается первым программистом.

Электромеханический этап

В 1888 году Герман Холлерит в США создаёт табулятор — устройство для расшифровки информации, нанесённой на перфокарты. Табулятор использовался для обработки результатов переписи населения в США.

Табулятор Германа Холлерита
Табулятор Германа Холлерита

В 1892 году Уильям Барроуз выпустил свой первый коммерческий сумматор.

В 1930 году профессор Массачусетского технологического института Ванневар Буш построил дифференциальный анализатор. Именно с его появлением связывают начало современной компьютерной эры. Связано это с тем, что данное устройство было первым устройством, способным производить столь сложные вычисления.

Ванневар Буш со своим дифференциальным анализатором
Ванневар Буш со своим дифференциальным анализатором

Электронный этап

В 1936 году Алан Тьюринг и Эмиль Пост (независимо друг от друга) разработали и выдвинули концепцию абстрактной вычислительной машины, что позволяло не создавать новое устройство для решения новой задачи, а всего лишь написать алгоритм решения этой задачи. Так они доказали принципиальную возможность решения любой задачи компьютерами при условии алгоритмизации решения задачи.

Спустя 3 года профессор физика Джон Атанасофф создал прототип вычислительной машины на базе двоичных элементов.

Спустя ещё пару лет, в 1941 немецкий инженер Конрад Цузе собрал первый универсальный компьютер на электромеханических элементах. Он уже работал с двоичными числами и использовал представление чисел с плавающей точкой.

В 1945 году американский математик Джон фон Нейман сформулировал основные принципы работы компьютеров в отчёте "Предварительный доклад о машине Эдвак". К этим принципам относятся:

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

Годом позднее американцы Преспер Эккерт и Джон Моучли разработали первый электронный цифровой компьютер ЭНИАК (ENIAC – Electronic Numerical Integrator and Computer). Эта машина умела выполнять до 5000 сложений или до 300 умножений в секунду.

В 1948 году физики Уильям Шокли, Уолтер Браттейн и Джон Бардин создали транзистор, выполняющий те же действия, что и миллионы транзисторов в каждом современной вычислительном устройстве.

А спустя год был создан первый полностью электронный компьютер ЭДВАК (EDVAC – Electronic Discrete Variable Automatic Computer). В отличие от ЭНИАК (ENIAC), — это компьютер на двоичной, а не на десятичной основе. Да-да, Эниак работал с десятичной системой счисления.

В том же году был создан ЭДСАК (EDSAC — Electronic Delay Storage Automatic Computer). Этот компьютер хранил свою программу в памяти. Интересно: Как же контролировались действия на предыдущих компьютерах?

В 1951 году, в Институте электротехники в Киеве под руководством Сергея Алексеевича Лебедева была создана МЭСМ (Малая Электронно-Счётная Машина). Это устройство стало первым электронным компьютером в континентальной Европе.

Раз появилась МЭСМ, то появится и БЭСМ (Большая Электронно-Счётная Машина). Сергей Алексеевич Лебедев начал её разработку в 1950 году, а в 1953 машина уже была принята в эксплуатацию Государственной комиссией. Спустя ещё 3 года доклад Лебедева о БЭСМ на международной конференции в Дармштадте произвёл сенсацию, так как БЭСМ была на уровне лучших американских машин и самой быстродействующей в Европе.

Но Лебедев и на этом не остановился. Он взялся за разработку M-20. Число в названии указывает на планируемое быстродействие машины, а именно — 20 000 операций в секунду. Государственная комиссия приняла её и рекомендовала к серийному производству.

В Институте точной механики и вычислительной техники (ИТМиВТ) с 1965 по 1967 годы велась разработка БЭСМ-6 с быстродействием в 1 000 000 операций в секунду. С 1968 по 1987 годы было выпущено 355 единиц БЭСМ-6. Создатели этой машины были удостоены Государственной премии.

В 1964 году IBM объявила о разработке ЭВМ System 360, что стало примером открытого стандарта, когда один производитель мог поставлять устройства, совместимые с машинами других производителей. Через 2 года архитектура System 360 была взята за основу для разработки ЕС ЭВМ в СССР, первые из которых появились в 1971 году, а до 1998 года было выпущено более 15 000 машин.

А что же с языками программирования?

В 1957 году была завершена разработка первого высокоуровневого языка программирования Фортран. Этот язык создавался под руководством Джона Бэкуса. Название Fortran является сокращением от Formula Translator (формульный транслятор).

А в 1958 году вышел в свет язык Algol-58, наследником которого стал Algol-60. Позже постепенно появлялись языки CPL (1963), BCPL (1966) и несколько других, среди которых есть язык Си.

Работа над языком C велась с 1969 по 1973 годы в лабораториях Bell Labs под руководством Денниса Ритчи. А в 1985 году Бьярн Страуструп опубликовал описание созданного им объектно-ориентированного языка C++.

Позже эти языки развивались и улучшались. Существует огромное множество различных компиляторов для C и C++, и несколько стандартов, которые отличаются как функционалом, так и организациями, которые их принимали. К языку C относятся: C89, C90, C99, C11 и C17. К языку C++ относятся: C++98, C++11, C++14, C++17 и C++20.

Заключение

На текущий момент существует около 8000 языков программирования, каждый из которых имеет свои особенности и чем-то отличается от других. Большинство языков имеют "родителей" или просто являются модификациями других языков, реализуя возможности, которых кому-то не хватало ранее. У каждого языка есть своя история, а у некоторых она уходит в далёкое прошлое. Мир развивается, однако новые языки программирования не рассчитаны на написание программ с высоким быстродействием, поэтому иногда всё же приходится обращаться к старым языкам, которые никогда не потеряют свою актуальность.

Если же Вам интересен формат историй языков программирования, то поддержите статью лайком и комментарием по теме, а я, возможно, подготовлю статью об истории одного из других языков, используемых мною в работе)