List of concurrent and parallel programming languages
This article lists concurrent and parallel programming languages, categorizing them by a defining paradigm. Concurrent and parallel programming languages involve multiple timelines. Such languages provide synchronization constructs whose behavior is defined by a parallel execution model. 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 (libraries such as the posix-thread library implement a parallel execution model but lack the syntax and grammar required to be a programming language).
The following categories aim to capture the main, defining feature of the languages contained, but they are not necessarily orthogonal.
Coordination languages
CnC (Concurrent Collections)
Glenda
Linda coordination language
Millipede
Dataflow programming
CAL
E (also object-oriented)
Joule (also distributed)
LabVIEW (also synchronous, also object-oriented)
Lustre (also synchronous)
Preesm (also synchronous)
Signal (also synchronous)
SISAL
BMDFM
Distributed computing
Bloom
Emerald
Hermes
Julia
Limbo
MPD
Oz - Multi-paradigm language with particular support for constraint and distributed programming.
Sequoia
SR
Event-driven and hardware description
Esterel (also synchronous)
SystemC
SystemVerilog
Verilog
Verilog-AMS - math modeling of continuous time systems