Jump to content

Сравнение мультипарадигмальных языков программирования

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

Краткое изложение парадигмы

[ редактировать ]

Краткий справочник парадигм программирования, перечисленных в этой статье.

  • Параллельное программирование . Имейте языковые конструкции для параллельного выполнения, они могут включать в себя многопоточность, поддержку распределенных вычислений, передачу сообщений, общие ресурсы (включая общую память) или фьючерсы.
    • Программирование акторов – параллельные вычисления с акторами , которые принимают локальные решения в ответ на окружающую среду (способны вести себя эгоистично или соревновательно).
  • Программирование с ограничениями - отношения между переменными выражаются в виде ограничений (или сетей ограничений), направляющих допустимые решения (используется удовлетворение ограничений или симплексный алгоритм ).
  • Программирование потоков данных – принудительный пересчет формул при изменении значений данных (например, электронные таблицы )
  • Декларативное программирование - описывает, какие вычисления должны выполняться, без указания подробных изменений состояния в императивном программировании (функциональное и логическое программирование являются основными подгруппами декларативного программирования).
  • Распределенное программирование – поддержка нескольких автономных компьютеров, которые обмениваются данными через компьютерные сети.
  • Функциональное программирование – использует оценку математических функций и избегает состояния и изменяемых данных.
  • Общее программирование - использует алгоритмы, написанные на основе типов, которые будут указаны позже, которые затем создаются по мере необходимости для конкретных типов, предоставляемых в качестве параметров.
  • Императивное программирование - явные операторы, изменяющие состояние программы.
  • Логическое программирование - для программирования используется явная математическая логика.
  • Метапрограммирование - написание программ, которые пишут или манипулируют другими программами (или самими собой) как своими данными или выполняют часть работы во время компиляции, которая в противном случае выполнялась бы во время выполнения.
    • Метапрограммирование шаблонов - методы метапрограммирования, в которых компилятор использует шаблоны для создания временного исходного кода, который компилятор объединяет с остальным исходным кодом, а затем компилирует.
    • Рефлексивное программирование - методы метапрограммирования, при которых программа модифицирует или расширяет себя.
  • Объектно-ориентированное программирование - для разработки программ используются структуры данных, состоящие из полей данных и методов вместе с их взаимодействиями (объектами).
    • На основе классов - объектно-ориентированное программирование, в котором наследование достигается путем определения классов объектов, а не самих объектов.
    • Основанное на прототипах — объектно-ориентированное программирование, которое избегает классов и реализует наследование посредством клонирования экземпляров.
  • Конвейерное программирование — простое изменение синтаксиса для добавления синтаксиса для вложенных вызовов функций в язык, изначально разработанный без него.
  • Программирование на основе правил - сеть практических правил, которые составляют базу знаний и могут использоваться для экспертных систем, а также для вывода и решения проблем.
  • Визуальное программирование – графическое управление элементами программы, а не их текстовое указание (например, Simulink ); также называется диаграммным программированием [ 1 ]

Обзор языка

[ редактировать ]

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ на основе рандеву и монитора
  2. ^ Перейти обратно: а б с д и ж г час я дж к л м н тот п д р с т в v В х и С аа аб и объявление но из в ах есть основанный на классе
  3. ^ Перейти обратно: а б с д и template metaprogramming
  4. ^ Перейти обратно: а б с использование потока данных TPL
  5. ^ поддержка только лямбда-выражений (ленивое функциональное программирование)
  6. ^ Перейти обратно: а б с использование реактивных расширений (Rx)
  7. ^ множественная отправка, комбинации методов
  8. ^ Перейти обратно: а б с д и актерское программирование
  9. ^ обещания, собственные расширения
  10. ^ с использованием Node.js модуля кластерного или метода child_process.fork , веб-воркеров в браузере и т. д.
  11. ^ Перейти обратно: а б с д На основе прототипа
  12. ^ использование реактивных расширений (RxJS)
  13. ^ в Node.js через событий модуль
  14. ^ в браузерах через собственный EventTarget API
  15. ^ Перейти обратно: а б с чисто функциональный
  16. ^ параметризованные классы
  17. ^ неизменяемый
  18. ^ множественная рассылка, а не традиционная одиночная
  19. ^ Akka. Архивировано 19 января 2013 г. в Wayback Machine.
  1. ^ Брэгг, SD; Дрискилл, К.Г. (20–22 сентября 1994 г.). «Диаграммно-графические языки программирования и DoD-STD-2167A». Материалы AUTOTESTCON '94 (IEEEXplore) . Институт инженеров по электротехнике и электронике (IEEE). стр. 211–220. дои : 10.1109/AUTEST.1994.381508 . ISBN  978-0-7803-1910-3 . S2CID   62509261 .
  2. ^ Справочное руководство Ada, ISO/IEC 8652:2005(E) Ed. 3 , Раздел 9: Задачи и синхронизация
  3. ^ Справочное руководство Ada, ISO/IEC 8652:2005(E) Ed. 3 Приложение E: Распределенные системы
  4. ^ Справочное руководство Ada, ISO/IEC 8652:2005(E) Ed. 3 , Раздел 12: Общие единицы измерения
  5. ^ Справочное руководство Ada, ISO/IEC 8652:2005(E) Ed. 3 , Раздел 6: Подпрограммы
  6. ^ Справочное руководство Ada, ISO/IEC 8652:2005(E) Ed. 3 , 3.9 Типы с тегами и расширения типов
  7. ^ Поддержка темы
  8. ^ Поддержка атомики
  9. ^ Модель памяти
  10. ^ Закодировано
  11. ^ СистемаC
  12. ^ Boost.Iostreams
  13. ^ Булинк
  14. ^ «АраРат» (PDF) . Архивировано из оригинала (PDF) 19 августа 2019 г. Проверено 15 сентября 2019 г.
  15. ^ OpenMPI
  16. ^ Повышение.MPI
  17. ^ Boost.MPL
  18. ^ ЛК++
  19. ^ Кастор. Архивировано 25 января 2013 г. в Wayback Machine.
  20. ^ Библиотека отражения
  21. ^ N3534
  22. ^ Повышение.Дух
  23. ^ Clojure — параллельное программирование
  24. ^ Clojure — core.async
  25. ^ Clojure — функциональное программирование
  26. ^ Clojure — Макросы
  27. ^ Clojure - core.logic
  28. ^ Clojure — Руководство по потоковым макросам
  29. ^ «Световой стол» . 08.04.2019.
  30. ^ Мультиметоды и иерархии
  31. ^ Агенты и асинхронные действия
  32. ^ [1] многие парадигмы параллелизма реализованы как расширения языка.
  33. ^ [2] программирование ограничений внутри CL через расширения
  34. ^ [3] расширение потока данных
  35. ^ [4] путем создания DSL с использованием встроенного метапрограммирования; см. также примечание о функциональных парадигмах, ограничениях и логике, которые являются частью декларативной парадигмы.
  36. ^ [5] MPI и т. д. через языковые расширения
  37. ^ template metaprogramming using macros (see C++)
  38. ^ [6] [7] [8] Пролог реализован как расширение языка.
  39. ^ Объектная система Common Lisp, см. статью в Википедии о CLOS, объектной системе Common Lisp.
  40. ^ реализовано пользователем с помощью короткого макроса, пример реализации
  41. ^ - Инструмент визуального программирования на основе Common Lisp.
  42. ^ [9] расширение программирования на основе правил
  43. ^ [10] Архивировано 26 апреля 2018 г. на Wayback Machine через протокол метаобъектов.
  44. ^ D Таблица функций языка
  45. ^ Стандартный алгоритм Фобоса
  46. ^ Строковые миксины языка D
  47. ^ Маленький JavaScripter демонстрирует фундаментальную общность с функциональным языком Scheme.
  48. ^ Объектно-ориентированное программирование на JavaScript. Архивировано 10 февраля 2019 г. на Wayback Machine. В нем представлен обзор методов объектно-ориентированного программирования на JavaScript.
  49. ^ «React — библиотека JavaScript для создания пользовательских интерфейсов» . 08.04.2019.
  50. ^ «ТНГ-Крючки» . Гитхаб . 08.04.2019.
  51. ^ «Документация Лодаша» . 08.04.2019.
  52. ^ «мори» . 08.04.2019.
  53. ^ «Световой стол» . 08.04.2019.
  54. ^ «ТНГ-Крючки» . Гитхаб . 08.04.2019.
  55. ^ «Встраивание Пролога» . Хаскелл.орг .
  56. ^ «Функциональное реактивное программирование» . ХаскеллВики .
  57. ^ Облачный Хаскелл
  58. ^ «Шаблон Хаскелла» . ХаскеллВики .
  59. ^ «Логикта: монада логического программирования с возвратом» . Хаскелл.орг .
  60. ^ Коллмансбергер, Стив; Эрвиг, Мартин (30 мая 2006 г.). «Правила Haskell: встраивание систем правил в Haskell» (PDF) . Университет штата Орегон .
  61. ^ https://jcp.org/en/jsr/detail?id=331 JSR 331: API программирования с ограничениями
  62. ^ https://github.com/GoogleCloudPlatform/DataflowJavaSDK SDK потока данных Google Cloud Platform.
  63. ^ "JuliaOpt/JuMP.jl" . Гитхаб . ЮлияОпт. 11 февраля 2020 г. Проверено 12 февраля 2020 г.
  64. ^ «GitHub — MikeInnes/DataFlow.jl» . Гитхаб . 15 января 2019 г.
  65. ^ «GitHub — JuliaGizmos/Reactive.jl: примитивы реактивного программирования для Julia» . Гитхаб . 2018-12-28.
  66. ^ https://github.com/davidantthoff/Query.jl Запрашивайте практически все в Julia.
  67. ^ https://github.com/lilinjn/LilKanren.jl Коллекция реализаций Kanren в Julia.
  68. ^ «GitHub — abeschneider/PEGParser.jl: Парсер PEG для Джулии» . Гитхаб . 03.12.2018.
  69. ^ «GitHub — gitfoxi/Parsimonious.jl: генератор парсера PEG для Julia» . Гитхаб . 03.08.2017.
  70. ^ Ленивый https://github.com/MikeInnes/Lazy.jl
  71. ^ «Выполнять итерации цикла параллельно» . mathworks.com . Проверено 21 октября 2016 г.
  72. ^ «Написать ограничения» . mathworks.com . Проверено 21 октября 2016 г.
  73. ^ «Начало работы с SimEvents» . mathworks.com . Проверено 21 октября 2016 г.
  74. ^ «Выполнять итерации цикла параллельно» . mathworks.com . Проверено 21 октября 2016 г.
  75. ^ «Выполнить выражение MATLAB в тексте — MATLAB eval» . mathworks.com . Проверено 21 октября 2016 г.
  76. ^ «Определить класс объекта» . mathworks.com . Проверено 21 октября 2016 г.
  77. ^ «Метаданные класса» . mathworks.com . Проверено 21 октября 2016 г.
  78. ^ «Объектно-ориентированное программирование» . mathworks.com . Проверено 21 октября 2016 г.
  79. ^ «Симулинк» . mathworks.com . Проверено 21 октября 2016 г.
  80. ^ потоки на основе интерпретатора
  81. ^ Perl высшего порядка
  82. ^ Руководство по PHP , Глава 17. Функции
  83. ^ Руководство по PHP , Глава 19. Классы и объекты (PHP 5)
  84. ^ Руководство по PHP , Анонимные функции
  85. ^ «Параллельная обработка и многопроцессорность в Python» . Питон Вики . Проверено 21 октября 2016 г.
  86. ^ «threading — интерфейс потоков более высокого уровня» . docs.python.org . Проверено 21 октября 2016 г.
  87. ^ «ограничение Python» . pypi.python.org . Проверено 21 октября 2016 г.
  88. ^ «Распределенное программирование» . Питон Вики . Проверено 21 октября 2016 г.
  89. ^ «Глава 9. Метапрограммирование» . chimera.labs.oreilly.com . Архивировано из оригинала 23 октября 2016 года . Проверено 22 октября 2016 г.
  90. ^ «Метапрограммирование» . readthedocs.io . Проверено 22 октября 2016 г.
  91. ^ «PEP 443 — универсальные функции для одной диспетчеризации» . python.org . Проверено 22 октября 2016 г.
  92. ^ «PEP 484 – Подсказки по типу» . python.org . Проверено 22 октября 2016 г.
  93. ^ «Пидаталог» . Проверено 22 октября 2016 г.
  94. ^ «Световой стол» . 08.04.2019.
  95. ^ «Будущеевселенная» .
  96. ^ «будущие пакетные инструменты» .
  97. ^ «Магриттр: передовой оператор трубы для R» . cran.r-project.org\access-date=13 июля 2017 г. 17 ноября 2020 г.
  98. ^ Руководство по рэкету: параллелизм и синхронизация
  99. ^ Руководство по розетке
  100. ^ FrTime: язык для реактивных программ
  101. ^ Руководство по рэкету: Распределенные места
  102. ^ Ленивая ракетка
  103. ^ Каналы и другие механизмы
  104. ^ «Модуль решения проблем» .
  105. ^ Оператор подачи
  106. ^ https://github.com/perl6/doc/issues/1744#issuecomment-360565196 Модуль Cro.
  107. ^ «Метапрограммирование: Что, почему и как» . 14 декабря 2011 г.
  108. ^ https://perl6advent.wordpress.com/2009/12/18/day-18-roles/ Параметризованные роли
  109. ^ «Метаобъектный протокол (MOP)» .
  110. ^ https://docs.perl6.org/language/classtut Классы и роли.
  111. ^ «Руководство по макросам Rust» . Ржавчина . Проверено 19 января 2015 г.
  112. ^ «Руководство по плагинам компилятора Rust» . Ржавчина . Проверено 19 января 2015 г.
  113. ^ Справочник по ржавчине §6.1.3.1
  114. ^ Обзор языка программирования Scala
  115. ^ Спецификация языка Scala
  116. ^ «Программирование/Введение в Tcl» . ru.wikibooks.org . Проверено 22 октября 2016 г.
  117. ^ «TCLLIB — Стандартная библиотека Tcl: snitfaq» . sourceforge.net . Проверено 22 октября 2016 г.
  118. ^ Заметки для экспертов по языкам программирования , Документация по языку Wolfram.
  119. ^ Внешние программы , Документация по языку Wolfram.
  • Джим Коплиен, Мультипарадигмальный дизайн для C++ , Addison-Wesley Professional, 1998.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: dc7fa567b101e23d08e04e15619f450e__1721670780
URL1:https://arc.ask3.ru/arc/aa/dc/0e/dc7fa567b101e23d08e04e15619f450e.html
Заголовок, (Title) документа по адресу, URL1:
Comparison of multi-paradigm programming languages - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)