История языков программирования
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# стали писать программы для всего: серверов, ПК и смартфонов.
Ссылки
- Исходный код “Аполлон 11”
- Ассемблер - Wikipedia
- “Время UNIX. A History and a Memoir” (Брайан Керниган)
- “Язык программирования Go” (Алан Донован, Брайан Керниган)