|
Co-occurrent programing language come programming languages that use language constructs for concurrency. These constructs might require multi-threading, support for distributed computing, message passing, shared resources (including shared memory) or futures (known also when promises).
By having a few languages communication between coincidental area of an application is hidden from either a computer programmer (e.g., by applying stock), by having others it must exist as handled explicitly. Expressed communication may be divided into 2 classes:
divided-memory communication, in the which co-occurrent area communicate by changing shared memory locations. This style of coincident programming unremarkably takes a application of a select few form of locking (e.g., mutexes, semaphores, or monitors) to coordinate between threads.
Message-passing communication, where messages come sent to recipients when in the Actor model and Process calculi. Message-passing concurrency tends to become far supplementary comfortable to cause astir than shared-memory concurrency, & is often considered the more robust form of genus pan programming. Messages may be asynchronous (aka "send, pray, and if no acknowledgment send again"), when packets on the Internet, or can utilize a rendezvous style where a sender hinders until the message is received, when around TCP on the Internet and synchronous process calculi.
In todays world a virtually all unremarkably utilized programming lanuages by owning specific constructs for concurrency come Java and C# with their multi-threading and lockup. These programing language produce apply of two message-passing & shared-memory communication.
Languages where concurrency is important
Ada
Afnix – concurrent access to data is protected automatically (antecedently known as Aleph, however unrelated to Alef)
Alef – concurrent language with threads & message pass, utilized for systems programming within early versions of Plan 9 (operating system)
ChucK – domain specific programming language for audio
Cilk – a concurrent C
Cω – C Omega, a search language extending C#, utilizes asynchronous communication
Concurrent Pascal – by Brinch-Hansen
Corn
E – uses promises, ensures deadlocks can't occur
Erlang – uses asynchronous message passing with nothing shared
Join Java – concurrent language based on a Java programming language
Joule – dataflow language, communicates by message passing
Limbo – relative of Alef, used for systems programming around Inferno (operating system)
Oz – multiparadigm language, supports shared-state & message-passing concurrency, and futures
Mozart Programming System – multiplatform Oz
MultiLisp – Scheme variant extended to trend lines paralelism
Occam – influenced heavily by Communicating Sequential Processes (CSP).
Pict – essentially an executable implementation of Milner's Pi-Calculus
SALSA – actor language with token-passing, join, & number one-class continuations for distributed computing on top a internet
SR – research language
Note that several one languages come designed supplementary when search languages (e.g., Pict) than when languages for production utilise. Notwithstanding, many of the examples (like Erlang, Limbo, & Occam) keep close at hand seen industrial use at various days in the survive Twenty years.
Numerous more languages provide trend lines for concurency in a form of libraries (in level about corresponding by having the above listings).
|
Petri Nets World
Petri Nets is a formal and graphical appealing language which is appropriate for modelling systems with concurrency.
Esterel
It is one of a family of synchronous languages which are particularly well-suited to programming reactive systems, including real-time systems and control automata
A Distributed Implementation of the C-Linda Programming Language
Language combining C and Linda, gives six functions for concurrent process coordination, can be added to any other sequential language, unlike many other parallel languages, programmers needn't learn a new language. Thesis with essay, bibliography, code samples.
Linda
Simple library implementation of Linda parallel programming system. To write parallel programs with linda, you need know only 6 functions: spawn, out, in, inp, rd, rdp. SourceForge project page: downloads, forum. CVS. [Open Source, GPL]
FT Languages Page
Fault-tolerant projects, goal: enhance language support for distributed programs with FT needs, most high-level languages lack good support for such, more so at system level; 3 projects described, FT-SR, FT-Linda, FTAG.
LoI (Language of Interaction)
Designed to support interaction-oriented programming. This paradigm is especially suitable for the design of reactive component-based systems like distributed and interactive systems.
NesC: Language for Deeply Networked Systems
C extension based on structuring concepts and execution model of TinyOS, an event-driven OS for sensor network nodes with very limited resources: 8K bytes program memory, 512 bytes RAM.
MC# (MCSharp)
A high-level object oriented programming language based on .NET Platform created specially for developing complex industrial program systems that could use multiprocessor architectures.
Corn
This language is designed for modeling concurrency and advanced computation. It provides lazy evaluation between concurrently worked threads, with object-oriented and functional style of semantic. This language can be also used for parallel computation.
Joule: The Great Synthesis
Has Joule Quick Reference 1.0, as HTML page; and The Joule Manual, divided into chapters, as Postscript files. Joule is most direct and important ancestor of E language. [ERights.org]
|
© 2005 GeneralAnswers.org |
|