Особенности и применение разных классов языков программирования

Неструктурные языки (широко использовались 40-е годы)

Преимущества

  • Оптимизация программы под аппаратную архитектуру.
  • Как следствие, обеспечение высокой эффективности вычислений.

Недостатки

  • Для каждого типа вычислительной машины должен был быть написан свой вариант исходного кода.

Применение

  • Быстрые численные расчеты
  • Создание драйверов устройств

Примеры языков: Ассемблеры.

Директивные (структурные) языки (появились в 50-е годы)

Преимущества

  • Повторное использование ранее написанных блоков кода.
  • Высокая степень независимости программы от типа вычислительной машины.
  • Повышение эффективности труда разработчиков, в том числе и за счет абстрагирования от конкретных деталей аппаратного обеспечения.

Недостатки

  • Некоторая потеря в скорости вычислений.

Применение

  • Создание операционных систем и системных программ.
  • Разработка небольших пользовательских приложений.
  • Научные расчеты.

Примеры языков: FORTRAN, C, Pascal.

Декларативные (функциональные и логические) языки (зародились в 60-е годы)

Особенность

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

Преимущества

  • Легче формализуется математическими средствами.
  • Как следствие, программы проще тестировать, т.е. проверять на наличие ошибок.
  • Высокая степень абстракции.

Недостатки

  • Снижение скорости работы программы.

Применение

  • Доказательство теорем.
  • Возможность обработки разнородных данных.

a) Функциональные языки

Особенность

  • Программу на функциональном языке можно представить как функцию с одним или несколькими аргументами.

Преимущества

  • Автоматическое динамическое распределение памяти компьютера для хранения данных.
  • Программист получает возможность абстрагироваться от представления данных и других рутинных операциях и сосредоточиться на предметной области.

Недостатки

  • Нелинейная структура программы, следовательно, такое программирование сложно для понимания.
  • Относительно невысокая эффективность вычислений.

Применение

  • Обработка рекурсивных структур данных.
  • Обработка символьной информации.

Примеры языков: Haskell.

b) Логические языки

Особенность

  • Программа представляет собой совокупность правил или логических высказываний.
  • В программе могут быть логические причинно-следственные связи.

Преимущества

  • Возможность откатов, т.е. возвращения к предыдущей подцели при отрицательном результате одного из вариантов в процессе поиска решения. Это избавляет от необходимости поиска решения путем полного перебора вариантов и увеличивает эффективность реализации.

Недостатки

  • Узкий класс решаемых задач.

Применение

  • Эмуляция искусственного интеллекта.
  • Разработка экспертных систем.

Примеры языков: Prolog.

Объектно-ориентированные языки

Особенности

  • Программа представляет собой описание объектов, их свойств (или атрибутов), классов и отношений между ними, способов взаимодействия.

Преимущества

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

Недостатки

  • Сложность полной формализации реального мира создает в дальнейшем трудности тестирования созданного ПО.

Применение

  • Разработка больших пользовательских приложений.

Примеры языков (большинство современных языков программирования поддерживают концепцию объектно-ориентированного программирования): C++, Python.

Языки сценариев

Особенности

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

Преимущества

  • Основные достоинства данного класса языков программирования унаследованы от объектно-ориентированных языков.
  • Легкость использования с инструментальными средствами автоматизированного проектирования и быстрого создания ПО.

Недостатки

  • Сложность тестирования.
  • Большое количество вариантов, которые требуется предусмотреть.
  • Большая вероятность побочных эффектов.

Применение

  • Интернет технологии

Примеры языков: JavaScript, Python, PHP.