1. Языки программирования отличаются по области применения

image.png

  1. Уровень абстракцииНизкоуровневые языки ближе к машинному коду и требуют глубокого понимания архитектуры компьютера. Высокоуровневые языки более абстрактны и ближе к человеческому языку, что делает их проще для изучения и использования
  2. Парадигма программированияПроцедурные языки основаны на концепции процедур или функций. Объектно-ориентированные языки основаны на концепции объектов и классов. Функциональные языки основаны на математических функциях. Логические языки основаны на логических выражениях.
  3. Тип компиляцииВ интерпретируемых языках программа выполняется последовательно, строчка за строчкой в соответствии с исходным кодом. Компилируемые языки требуют, чтобы предварительно программист скомпилировал исходный код в машинный или объектный код — и лишь затем происходит запуск программы.
  4. ТипизацияСтатическая типизация определяет типы данных в программе до её запуска (во время компиляции). В динамически-типизированных языках тип переменной определяется во время запуска программы.
  5. Мощность. Характеризуется количеством и разнообразием задач, алгоритмы решения которых можно записать, используя данный язык.
  6. Уровень. Характеризуется сложностью решения задач с помощью этого языка.

Эффективность:

Читабельность • простота, ясность, единообразие понятий языка • ортогональность • структурированность потока управления в программе

Легкость создания программ • Концептуальная целостность языка • Естественность для приложений • Поддержка абстракций • Выразительность

Надежность • Проверка типов • Обработка исключений • Совмещение имен

Стоимость • Стоимость выполнения программы • Стоимость трансляции программы • Стоимость создания, тестирования и использования программы • Стоимость сопровождения программы


Простота, ясность, единообразие понятий языка

Обозначает наличие разумного количество синтаксический сахара. К примеру

x = x + 1
x += 1
x++
++x

В данном случае единичку к числу можно прибавить двумя способами

Ортогональность

Представим, что язык программирования поддерживает три базовых типа данных: целые числа (int), вещественные числа с плавающей точкой (float) и символы (char). Кроме того, в языке есть две конструкции данных: массивы и указатели. Если эти конструкции можно применять не только к базовым типам, но и к самим конструкциям, то говорят, что язык обладает ортогональностью. Это означает, что можно создавать множество различных структур данных, комбинируя базовые элементы языка.