List of concurrent and parallel programming languages
List of concurrent and parallel programming languages hakkında detaylı teknik bilgi ve dokümantasyon. Wikipedia tabanlı bilgi bankası.
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
- Binary Modular Dataflow Machine (BMDFM)
- CAL
- E – and object-oriented
- Joule – and distributed
- LabVIEW – and synchronous, object-oriented
- Lustre – and synchronous
- Preesm – and synchronous
- SIGNAL – and synchronous
- SISAL
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
- VHDL
Functional programming
Logic programming
Monitor-based
Multi-threaded
- C=
- Cilk
- Cilk Plus
- Cind
- C#
- Clojure
- Concurrent Pascal
- Delphi
- Emerald
- Fork – programming language for the PRAM model.
- Go
- Java
- LabVIEW
- ParaSail
- Python
- Rust[2]
- SequenceL
Object-oriented programming
- Ada
- C*
- C++
- C#
- JavaScript
- TypeScript
- C++ AMP
- Charm++
- Cind
- D
- Delphi
- Eiffel Simple Concurrent Object-Oriented Programming (SCOOP)
- Emerald
- Fortran – from ISO Fortran 2003 standard
- GDScript[3]
- Java
- Join Java – has features from join-calculus
- LabVIEW
- ParaSail
- Python[4]
- Ruby
Partitioned global address space (PGAS)
- Chapel
- Coarray Fortran (included in standard/ISO Fortran since Fortran 2008, further extensions were added with the Fortran 2018 standard)
- Fortress
- High Performance Fortran
- Titanium
- Unified Parallel C
- X10
- ZPL
Message passing
- Ateji PX - An extension of Java with parallel primitives inspired from pi-calculus.
- Rust[5]
- Smalltalk[6]: p.17 Part IV, see table following fig. 11–29
Actor model
- Axum - a domain-specific language being developed by Microsoft.
- Dart - using Isolates
- Elixir (runs on BEAM, the Erlang virtual machine)
- Erlang
- Pony
- Janus
- Red
- SALSA
- Scala/Akka (toolkit)
- Smalltalk
- Akka.NET
- LabVIEW - LabVIEW Actor Framework
CSP-based
- Alef
- Crystal[7]
- Ease
- FortranM
- Go
- JCSP
- JoCaml
- Joyce
- Limbo (also distributed)
- Newsqueak
- Occam
- Occam-π – a derivative of Occam that integrates features from the pi-calculus
- PyCSP
- SuperPascal
- XC – a C-based language, integrating features from Occam, developed by XMOS
APIs/frameworks
These application programming interfaces support parallelism in host languages.
- Apache Beam
- Apache Flink
- Apache Hadoop
- Apache Spark
- CUDA
- OpenCL
- OpenHMPP
- OpenMP for C, C++, and Fortran (shared memory and attached GPUs)
- Message Passing Interface for C, C++, and Fortran (distributed computing)
- SYCL
See also
References
- ^ Thom Frühwirth (9 July 2009). Constraint Handling Rules. Cambridge University Press. ISBN 978-0-521-87776-3.
- ^ "Using Threads to Run Code Simultaneously - The Rust Programming Language". doc.rust-lang.org. Retrieved 2022-10-11.
- ^ "Using multiple threads". Godot Engine (stable) documentation. Archived from the original on 2026-01-28. Retrieved 2026-01-30.
- ^ Documentation » The Python Standard Library: Concurrent Execution
- ^ "Using Message Passing to Transfer Data Between Threads - The Rust Programming Language". doc.rust-lang.org. Retrieved 2022-10-11.
- ^ Alan Kay The Early History Of Smalltalk
- ^ "Crystal Programming Language – Concurrency". Retrieved 10 August 2018.