List of concurrent and parallel programming languages
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)(Learn how and when to remove this template message)
This article lists concurrent and parallel programming languages, categorizing them by a defining paradigm. A concurrent programming language is defined as one which uses the concept of simultaneously executing processes or threads of execution as a means of structuring a program. A parallel language is able to express programs that are executable on more than one processor. Both types are listed, as concurrency is a useful tool in expressing parallelism, but it is not necessary. In both cases, the features must be part of the language syntax and not an extension such as a library.
The following categories aim to capture the main, defining feature of the languages contained, but they are not necessarily orthogonal.
- 1 Actor model
- 2 Coordination languages
- 3 Dataflow programming
- 4 Distributed computing
- 5 Event-driven and hardware description
- 6 Functional programming
- 7 Logic programming
- 8 Monitor-based
- 9 Multi-threaded
- 10 Object-oriented programming
- 11 Partitioned global address space (PGAS)
- 12 Message passing
- 13 APIs/frameworks
- 14 See also
- 15 References
- Axum - a domain-specific language being developed by Microsoft.
- Elixir (runs on BEAM, the Erlang virtual machine)
- Scala/Akka (toolkit)
- LabVIEW - Labview Actor Framework
- E (also object-oriented)
- Joule (also distributed)
- LabView (also synchronous)
- Lustre (also synchronous)
- Preesm (also synchronous)
- Signal (also synchronous)
- Oz - Multi-paradigm language with particular support for constraint and distributed programming.
Event-driven and hardware description
- Esterel (also synchronous)
- Verilog-AMS - math modeling of continuous time systems
- Cilk Plus
- Fork – programming language for the PRAM model.
- C++ AMP
- D programming language
- Eiffel SCOOP (Simple Concurrent Object-Oriented Programming)
- Emerald (also distributed)
- Join Java - A Java-based language with features from the join-calculus.
Partitioned global address space (PGAS)
- Limbo (also distributed)
- Occam-π - A derivative of Occam that integrates features from the pi-calculus
- XC - A C-based language, integrating features from Occam, developed by XMOS
These application programming interfaces support parallelism in host languages.
- Apache Hadoop
- Apache Spark
- Apache Flink
- Apache Beam
- OpenMP for C, C++, and Fortran (shared memory and attached GPUs)