List of concurrent and parallel programming languages
Encyclopedia
This article lists concurrent and parallel programming languages, categorising them by a defining paradigm. A concurrent 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.
The following categories aim to capture the main, defining feature of the languages contained, but they are not necessarily orthogonal.
Actor Model
- AxumAxum (programming language)Axum is a domain specific concurrent programming language, based on the Actor model, being developed by Microsoft...
- a domain-specific language being developed by Microsoft. - Erlang (also functional)
- JanusJanus (programming language)The name Janus refers to at least two computer programming languages or partial descriptions of possible computer programing languages:-Concurrent Constraint Programming:...
- SALSA
- Scala
Coordination languages
- Glenda
- Linda coordination languageLinda (coordination language)In computer science, Linda is a model of coordination and communication among several parallel processes operating upon objects stored in and retrieved from shared, virtual, associative memory...
- Millipede
CSP-based
- Alef
- Ateji PXAteji PXAteji PX is an object-oriented programming language extension for Java. It is intended to facilliate parallel computing on multi-core processors, GPU, Grid and Cloud....
- An extension of JavaJava (programming language)Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
with parallel primitives inspired from pi-calculusPi-calculusIn theoretical computer science, the π-calculus is a process calculus originally developed by Robin Milner, and David Walker as a continuation of work on the process calculus CCS...
. - Concurrent PascalConcurrent PascalConcurrent Pascal was designed by Per Brinch Hansen for writing concurrent computing programs such asoperating systems and real-time monitoring systems on shared memorycomputers....
- Ease
- Limbo (also distributed)
- JoyceJoyce (programming language)Joyce is a secure, concurrent programming language designed by Per Brinch Hansen in the 1980s. It is based on the sequential language Pascal and the principles of Communicating Sequential Processes...
- NewsqueakNewsqueakNewsqueak is a concurrent programming language for writing application software for windowing systems. It was designed at Bell Labs by Rob Pike in the late 1980s....
- OccamOccam (programming language)occam is a concurrent programming language that builds on the Communicating Sequential Processes process algebra, and shares many of its features. It is named after William of Ockham of Occam's Razor fame....
- Occam-π
- SuperPascalSuperPascalSuper Pascal is an imperative, concurrent computing programming language developed by Brinch Hansen. It was designed as a publication language: a thinking tool to enable the clear and concise expression of concepts in parallel programming. This is in contrast with implementation languages which are...
- XCXCXC may refer to:* Christogram* 90 in Roman numerals* Cross-country running* Cross-country skiing* Cross-country cycling* Cross-country equestrianism* Cross-country paragliding* XC, a model of the Ford Falcon...
- A C-based language developed by XMOSXMOSXMOS is a fabless semiconductor company that develops multi-core multi-threaded processors designed to execute several real-time tasks, DSP, and control flow all at once.-Company history:...
.
Dataflow
- EE (programming language)E is an object-oriented programming language for secure distributed computing, created by Mark S. Miller, Dan Bornstein, and others at Electric Communities in 1997. E is mainly descended from the concurrent language Joule and from Original-E, a set of extensions to Java for secure distributed...
(also object-oriented) - JouleJoule (programming language)Joule is a concurrent dataflow programming language, designed for building distributed applications. It is so concurrent, that the order of statements within a block is irrelevant to the operation of the block. Statements are executed whenever possible, based on their inputs. Everything in Joule...
(also distributed) - SISALSISALSISAL is a general-purpose single assignment functional programming language with strict semantics, implicit parallelism, and efficient array handling. SISAL outputs a dataflow graph in Intermediary Form 1...
Event-driven & hardware description
- VerilogVerilogIn the semiconductor and electronic design industry, Verilog is a hardware description language used to model electronic systems. Verilog HDL, not to be confused with VHDL , is most commonly used in the design, verification, and implementation of digital logic chips at the register-transfer level...
- VHDL
- SystemCSystemCSystemC is a set of C++ classes and macros which provide an event-driven simulation kernel in C++ . These facilities enable a designer to simulate concurrent processes, each described using plain C++ syntax...
- ParCPARCPARC or Parc may refer to:* PARC , the Palo Alto Research Center * PARC Management, a theme park and entertainment venue operator...
- Parallel C++ through language extensions.
Functional
- Concurrent HaskellConcurrent HaskellConcurrent Haskell extends Haskell 98 with explicit concurrency. The two main concepts underpinning Concurrent Haskell are:* A primitive type MVar α implementing a bounded/single-place asynchronous channel, which is either empty or holds a value of type α....
- Concurrent MLConcurrent MLConcurrent ML is a concurrent extension of the Standard ML programming language.-Sample Code:Here is sample code to print "hello, world" to the console. It spawns a thread which creates a channel for strings. This thread then spawns another thread which prints the first string that is received...
- IdId (programming language)Id is a general-purpose parallel programming language, developed by Arvind and Nikhil, at MIT, in the late 1970 and throughout the 1980s. The major subset of Id is a purely functional programming language with non-strict semantics...
GPU languages
- CUDACUDACUDA or Compute Unified Device Architecture is a parallel computing architecture developed by Nvidia. CUDA is the computing engine in Nvidia graphics processing units that is accessible to software developers through variants of industry standard programming languages...
- OpenCLOpenCLOpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of CPUs, GPUs, and other processors. OpenCL includes a language for writing kernels , plus APIs that are used to define and then control the platforms...
- OpenHMPP
Multi-threaded
- CilkCilkCilk is a general-purpose programming language designed for multithreaded parallel computing. The commercial instantiation is Intel Cilk Plus.-Design:...
- ClojureClojureClojure |closure]]") is a recent dialect of the Lisp programming language created by Rich Hickey. It is a general-purpose language supporting interactive development that encourages a functional programming style, and simplifies multithreaded programming....
- Fork - Programming language for the PRAMPramPram may refer to:*Pram, Austria* Pram , a musical group* Pram , a type of shallow-draught, flat-bottomed ship * A type of dinghy with a flat bow* A type of wheeled baby transport...
model. - GoGo (programming language)Go is a compiled, garbage-collected, concurrent programming language developed by Google Inc.The initial design of Go was started in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. Go was officially announced in November 2009. In May 2010, Rob Pike publicly stated that Go was being...
- Parasail
Object-oriented
- AdaAda (programming language)Ada is a structured, statically typed, imperative, wide-spectrum, and object-oriented high-level computer programming language, extended from Pascal and other languages...
- C*
- Charm++Charm++Charm++ is a parallel object-oriented programming language based on C++ and developed in the Parallel Programming Laboratory at the University of Illinois. Charm++ is designed with the goal of enhancing programmer productivity by providing a high-level abstraction of a parallel program while at the...
- Emerald (also distributed)
- SCOOP (Simple Concurrent Object-Oriented Programming)SCOOP (software)SCOOP stands for Simple Concurrent Object Oriented Programming. It is a concurrency model designed for the Eiffel programming language, conceived by Eiffel's creator and designer, Bertrand Meyer....
Partitioned global address space (PGAS)
- ChapelChapel programming languageChapel is a new parallel programming language developed by Cray. It is being developed as part of the Cray Cascade project, a participant in DARPA's High Productivity Computing Systems program, which has the goal of increasing supercomputer productivity by the year 2010...
- Co-array FortranCo-array FortranCo-array Fortran , formerly known as F--, is an extension of Fortran 95/2003 for parallel processing created by Robert Numrich and John Reid in 1990s...
- Fortress
- High Performance FortranHigh Performance FortranHigh Performance Fortran is an extension of Fortran 90 with constructs that support parallel computing, published by the High Performance Fortran Forum . The HPFF was convened and chaired by Ken Kennedy of Rice University...
- Titanium
- Unified Parallel CUnified Parallel CUnified Parallel C is an extension of the C programming language designed for high-performance computing on large-scale parallel machines, including those with a common global address space and those with distributed memory...
- X10X10 (programming language)X10 is a programming language being developed by IBM at the Thomas J. Watson Research Center as part of the Productive, Easy-to-use, Reliable Computing System project funded by DARPA's High Productivity Computing Systems program...
- ZPL
Unsorted
- NESLNESLNESL is a parallel programming language developed at Carnegie Mellon by the SCandAL project and released in 1993. It integrates various ideas from parallel algorithms, and functional programming and array programming languages....
- OrcOrc (programming language)Orc is a concurrent, nondeterministic computer programming language created by Jayadev Misra at the University of Texas at Austin. It's based on a Kleene algebra model.-Bibliography:...
- OzOz (programming language)Oz is a multiparadigm programming language, developed in the Programming Systems Lab at Université catholique de Louvain, for programming language education. It has a canonical textbook: Concepts, Techniques, and Models of Computer Programming....
- Multi-paradigm language with particular support for constraint and distributed programming.