Леонид МаслаковLenpaste

История языков программирования

15.01.2022

Машинные коды

Это инструкции для процессора в виде 0 и 1. И да у каждой архитектуры процессора свой набор инструкций.

Ассемблер

Ассемблер (1949 год) - это не какой-то конкретный язык, это множество диалектов. Для каждой архитектуры процессора писался свой ассемблер, а иногда даже несколько.

Команды ассемблеры соответствуют командам процессора. Одна строка - одна операция, функций в привычном представлении нет. С памятью, жёстким диском и устройствами ввода/вывода нужно работать вручную.

Сейчас ассемблер почти не используется. Это связано с тем что:

  • Мало команд
  • Нет функций
  • Сложно портировать между платформами

Единственные плюсы это:

  • Скорость
  • Минимальный уровень абстракции

Если интересно что писали на ассемблере, то можно посмотреть исходный код “Аполлон 11”.

CPL, BCPL, B и C

Ассемблер был достаточно ограничен и вскоре ему потребовалась замена:

  • CPL (1963 год)
  • BCPL (1966 год)
  • B (1969 год)

Но по настоящему удачным стал C (1972 год), так как:

  • Имел читаемый синтаксис
  • Поддерживал функции, структуры и области видимости
  • Легко портировался

На C написаны такие программы как:

  • UNIX
  • Linux
  • Почти весь пакет утилит GNU
  • X Window System
  • Vulkan API
  • Nginx

Язык жив по сей день, он используется там где нужна скорость.

Из минусов можно отметить: управление зависимостями, сложность кросс компиляции и работы с сетью.

Sh, AWK и Perl

Вскоре компьютеры стали достаточно мощными для работы с скриптовыми языками. И это стали активно применять системные администраторы, разработчики и простые пользователи.

Bourne shell (1977 год) - это не только командная оболочка, но ещё и интерпретатор shell скриптов. Эти скрипты используются везде от системы инициализации до пользовательских утилит.

AWK (1977 год) - скриптовый язык, позволяющий построчно обрабатывать входной поток. Как правило использовался в парсерах.

Perl (1987 год) - унаследовал многое от sh и awk. Основное предназначение - это обработка текста для этого присутствует поддержка регулярных выражений.

C++, Python и Lua

Ниже представлены языки программирования для разных задач, но всех их объединяет одно: объектно-ориентированное программирование.

C++ (1983 год) - обновлённый C, при этом сохранивший частичную совместимость с ним и по прежнему достаточно низкоуровневый.

Python (1991 год) - интерпритируемый язык с хорошей релизацией ООП и поддержкой подключаеммых библеотек.

Lua (1993 год) - скриптовый язык. Достаточно минималистичный, что упрощает обучение. Чаще всего используется для написания плагинов, аддонов и модов для других программ.

Java VM и .NET Framework

Следующим витком эволюции стали языки компилирующийся в байт-код для виртуальной машины. Они были быстрее чем интерпретируемые и работали везде где можно было запустить виртуальную машину.

Java VM (1994 год) - разработана компанией Sun Microsystems для выполнение Java байт-кода. Девиз платформы звучал как: “скомпилируй единожды, запускай везде”. И это действительно работало везде: от кнопочных телефонов до серверов.

.NET Framework (2002 год) - это ответ Microsoft на разработку Sun. Но в отличии от Java VM, .NET Framework работал только на Windows.

PHP и JavaScript

В конце 90-х начале 00-х интернет стал доступен простым пользователям. Были необходимы простые, скриптовые языки для написания веб сайтов.

PHP (1995 год) - посей день чрезвычайно популярен для написания динамических веб сайтов.

JavaScript (1995 год) - тоже активно применяется сейчас. Позволяет создавать интерактивные веб страницы, поддерживается во всех современных браузерах.

Golang

Go (2009 год) был призван заменить C и C++. Над языком работали те же люди что разработали C и UNIX.

И так Golang это:

  • Строгая статическая типизация
  • Автоматическое управление памятью
  • Многопоточность
  • Безопасность
  • Почти полное отсутствие ООП
  • Стандартизированный код стайл
  • Поддержка UTF-8
  • Понятное управление зависимостями
  • Совместимость с библиотеками из C
  • Работа на множестве UNIX-like систем
  • Быстрая компиляция
  • Кросс компиляция

В итоги получился минималистичный язык с поддержкой многопоточности, но при этом простой в освоении.

Dart

Dart (2011 год) - Изначально позиционировался как замена JavaScript. В итоге язык стали использовать: на серверах, в браузерах и смартфонах

Главное преимущество - это производительность.

.NET

Microsoft наконец поняла что желающих использовать .Net Framework не очень много, так и появился .Net (2016 год). В отличии от предшественника он был кросплотформенным.

В итоге на языке C# стали писать программы для всего: серверов, ПК и смартфонов.

Ссылки