Список параллельных и параллельных языков программирования
В этой статье перечислены параллельные и параллельные языки программирования , классифицирующие их по определяющей парадигме . Языки параллельного и параллельного программирования включают в себя несколько временных рамок. Такие языки предоставляют конструкции синхронизации , поведение которых определяется моделью параллельного выполнения . Язык параллельного программирования определяется как язык, который использует концепцию одновременного выполнения процессов или потоков выполнения в качестве средства структурирования программы. Параллельный язык способен выражать программы, исполняемые более чем на одном процессоре. Оба типа перечислены, поскольку параллелизм — полезный инструмент для выражения параллелизма, но он не обязателен. В обоих случаях функции должны быть частью синтаксиса языка, а не расширением, таким как библиотека (такие библиотеки, как библиотека posix-thread, реализуют модель параллельного выполнения, но не имеют синтаксиса и грамматики, необходимых для языка программирования).
Следующие категории призваны отразить основную, определяющую особенность содержащихся в них языков, но они не обязательно ортогональны.
Языки координации [ править ]
- CnC (параллельные коллекции)
- Гленда
- Язык координации Линды
- Многоножка
Программирование данных потоков
- CAL
- E (также объектно-ориентированный)
- Джоуль (также распространяется)
- LabVIEW (также синхронный, также объектно-ориентированный)
- Блеск (также синхронно)
- Преесм (также синхронно)
- Сигнал (также синхронный)
- СИЗАЛЬ
- БМДФМ
Распределенные вычисления [ править ]
- Цвести
- Изумруд
- Гермес
- Юлия
- Лимбо
- MPD
- Oz — мультипарадигмальный язык с особой поддержкой ограничений и распределенного программирования.
- Секвойя
- СР
Событийное и аппаратное описание [ править ]
- Эстерель (также синхронно)
- СистемаC
- СистемаVerilog
- Верилог
- Verilog-AMS - математическое моделирование систем непрерывного времени
- VHDL
Функциональное программирование [ править ]
- Кложур
- Параллельное машинное обучение
- Эликсир
- Вяз
- Эрланг
- Футарк
- Блеск
- Хаскелл
- Идентификатор
- МультиЛисп
- ПоследовательностьL
Логическое программирование [ править ]
На основе монитора [ править ]
Многопоточный [ править ]
- С=
- Силк
- СилкПлюс
- КОГДА
- С#
- Кложур
- Параллельный Паскаль
- Изумруд
- Форк – язык программирования модели PRAM .
- Идти
- Ява
- ЛабВЬЮ
- ПараСейл
- Ржавчина [2]
- ПоследовательностьL
Объектно-ориентированное программирование [ править ]
- Есть
- С*
- С#
- JavaScript
- Машинопись
- С++ AMP
- Очарование++
- КОГДА
- язык программирования D
- Eiffel SCOOP (Простое параллельное объектно-ориентированное программирование)
- Изумруд
- Фортран из стандарта ISO Fortran 2003
- Ява
- Join Java — язык на основе Java с функциями исчисления соединений .
- ЛабВЬЮ
- ПараСейл
- Питон [3]
- Руби
Разделенное глобальное адресное пространство (PGAS) [ править ]
- Часовня
- Coarray Fortran (включен в стандарт/ISO Fortran с Fortran 2008, дополнительные расширения были добавлены в стандарт Fortran 2018)
- Крепость
- Высокопроизводительный Фортран
- Титан
- Унифицированный параллельный C
- х10
- ЗПЛ
Передача сообщений [ править ]
- Ateji PX — расширение Java с параллельными примитивами, вдохновленное пи-исчислением .
- Ржавчина [4]
- Смолток [5] : стр. 17 Часть IV, см. таблицу после рис. 11–29
Модель актера [ править ]
- Axum — предметно-ориентированный язык, разрабатываемый Microsoft.
- Дарт – использование изолятов
- Elixir (работает на BEAM , виртуальной машине Erlang)
- Эрланг
- Пони (язык программирования)
- Янус
- Красный
- САЛЬСА
- Scala / Akka (инструментарий)
- Смолток
- Akka.NET
- LabVIEW — платформа актеров LabVIEW
На основе CSP [ править ]
- Алеф
- Кристалл [6]
- Простота
- ФортранМ
- Идти
- JCSP
- ДжоКамл
- Джойс
- Лимбо (также распространяется)
- Ньюсквик
- Оккам
- Оккам-π - производная от Оккама , объединяющая функции пи-исчисления.
- PyCSP
- СуперПаскаль
- XC — язык на основе C, интегрирующий функции Occam , разработанный XMOS.
API/фреймворки [ править ]
Эти интерфейсы прикладного программирования поддерживают параллелизм на основных языках.
- Апачский луч
- Апач Флинк
- Апач Хадуп
- Апач Спарк
- ДРУГОЙ
- OpenCL
- OpenHMPP
- OpenMP для C, C++ и Fortran (общая память и подключенные графические процессоры)
- Интерфейс передачи сообщений для C, C++ и Fortran (распределенные вычисления)
- СИКЛ
См. также [ править ]
- Параллельные вычисления
- Список параллельных языков программирования
- Модель параллельного программирования
Ссылки [ править ]
- ^ Том Фрювирт (9 июля 2009 г.). Правила обработки ограничений . Издательство Кембриджского университета. ISBN 978-0-521-87776-3 .
- ^ «Использование потоков для одновременного выполнения кода — язык программирования Rust» . doc.rust-lang.org . Проверено 11 октября 2022 г.
- ^ Документация » Стандартная библиотека Python » Параллельное выполнение
- ^ «Использование передачи сообщений для передачи данных между потоками — язык программирования Rust» . doc.rust-lang.org . Проверено 11 октября 2022 г.
- ^ Алан Кей Ранняя история Smalltalk
- ^ «Язык программирования Crystal — параллелизм» . Проверено 10 августа 2018 г.