Мультипарадигмальный язык программирования

Мультипарадигмальный язык программирования — как правило, язык программирования, который был разработан специально как инструмент мультипарадигмального программирования, то есть изобразительные возможности которого изначально предполагалось унаследовать от нескольких, чаще всего не родственных языков.

Иногда термин мультипарадигмальный язык программирования определяют как «язык, который поддерживает больше чем одну парадигму программирования». Такое определение оказывается недостаточно точным в силу того, что само понятие парадигмы программирования различные авторы определяют по-разному. Например, если считать парадигмами программирования рекурсию, структурное программирование и присваивания, то окажется, что под рассматриваемое определение подойдут едва ли не все существующие языки программирования, за исключением некоторых особых случаев (например, языка Haskell, в котором нет присваивания в привычном виде).

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

Один из наиболее амбициозных примеров — Oz, который является логическим языком, функциональным языком, объектно-ориентированным языком, языком конкурентного (параллельного) программирования и т. д. Oz был разработан за десять лет, его цель - объединить понятия, которые традиционно связаны с различными программными парадигмами.

В качестве одного из наиболее успешных мультипарадигмальных языков программирования часто называют язык C++.

Мультипарадигмальные языки

Примеры мультипарадигмальных языков программирования, разделённых по числу поддерживаемых парадигм:

Две парадигмы

  • Функциональная, объектно-ориентированная:
    • Dylan;
    • Scala.
  • Функциональная, процедурная:
    • APL.
  • Функциональная, логическая:
    • AFL;
    • Curry;
    • Mercury.

Три парадигмы

  • Функциональная, процедурная, объектно-ориентированная:
    • Perl; (с версии 5)
    • Python;
    • JavaScript;
    • Tcl;
    • PHP; (с версии PHP 5.3 частично поддерживается функциональное программирование)
    • Ruby.
  • обобщённая, процедурная, объектно-ориентированная:
    • C++;
    • D.

Четыре парадигмы

  • Функциональная, обобщённая, процедурная, объектно-ориентированная:
    • OCaml.
    • Common Lisp;

Пять парадигм

  • Объектно-ориентированная, обобщённая, процедурная, аспектно-ориентированная, конкурентная:
    • Java.

Шесть парадигм

  • Объектно-ориентированная, обобщённая, процедурная, функциональная, событийно-ориентированная, рефлексивная:
    • C#.

Семь парадигм

  • логическая, программирование с ограничениями, функциональная (как ленивые, так и «энергичные» вычисления), процедурная (императивная), объектно-ориентированная, распределённая, параллельная
    • Oz