FACTOID # 79: Australians are the most likely to join charities, educational organizations, environmental groups, professional organizations, sports groups and unions. But only three percent join political parties.
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
WHAT'S NEW
RECENT ARTICLES
More Recent Articles »
 

FACTS & STATISTICS    Simple view

  1. Select countries to view: (hold down Control key and click to select several)

     

     

    Compare:

     

     

  1. Select fact or statistic: (* = graphable)

     

     

     

  2. (OPTIONAL) Compare to statistic: (both need to be graphable)

     

     

     

  3. View result as:

     

       
(OR) SEARCH ALL encyclopedia, stats & forums:   

Encyclopedia > Concurrent programming language

Concurrent programming languages are programming languages that use language constructs for concurrency. These constructs may involve multi-threading, support for distributed computing, message passing, shared resources (including shared memory) or futures (known also as promises). Other listings of programming languages are: Categorical list of programming languages Generational list of programming languages Chronological list of programming languages Note: Esoteric programming languages have been moved to the separate List of esoteric programming languages. ... In computer science, concurrency is concerned with the sharing of common resources between computations which execute overlapped in time (including running in parallel). ... Many programming languages, operating systems, and other software development environments support what are called threads of execution. ... In computer science, distributed computing studies the coordinated use of physically distributed computers. ... In computer science, message passing programming, as opposed to imperative programming, is a programming paradigm that describes computation in terms of communicating messages among senders and recipients that have local state as opposed to operations that change a global state. ... Sharing is the joint use of a resource. ... PRAM stands for Parallel Random Access Machine, which is an abstract machine for designing the algorithms applicable to parallel computers. ... In computer science, a future (also known as a promise in the E programming language) is a proxy for a result that is not yet known, usually because the computation of its value has not yet completed. ...


In some languages communication between concurrent parts of an application is hidden from the programmer (e.g., by using futures), while in others it must be handled explicitly. Explicit communication can be divided into two classes:

  1. Shared-memory communication, in which the concurrent parts communicate by altering the contents of shared memory locations (exemplified by Java and C#). This style of concurrent programming usually requires the application of some form of locking (e.g., mutexes, semaphores, or monitors) to coordinate between threads.
  2. Message-passing communication, in which concurrent parts communicate by exchanging messages (exemplified by Erlang and Occam). The exchange of messages may be carried out asynchronously (i.e. "send, pray, and if no acknowledgment send again"), or may use a rendezvous style in which the sender blocks until the message is received. Message-passing concurrency tends to be far easier to reason about than shared-memory concurrency, and is typically considered a more robust form of concurrent programming. A wide variety of mathematical theories for understanding and analyzing message-passing systems are available, including the Actor model, and various Process calculi.

Today, the most commonly used programming languages that have specific constructs for concurrency are Java and C#. Both of these languages fundamentally use a shared-memory concurrency model, with locking provided by monitors (although message-passing models can and have been implemented on top of the underlying shared-memory model). Java is an object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s. ... The title given to this article is incorrect due to technical limitations. ... Mutual exclusion (often abbreviated to mutex) algorithms are used in concurrent programming to avoid the concurrent use of un-shareable resources by pieces of computer code called critical sections. ... A semaphore is a protected variable (or abstract data type) and constitutes the classic method for restricting access to shared resources (e. ... A monitor is an approach to synchronizing two or more computer tasks that use a shared resource, usually a hardware device or a set of variables. ... Erlang is a general-purpose concurrent programming language and runtime system. ... Occam is a parallel programming language that builds on Communicating Sequential Processes (CSP) and shares many of their features. ... In computer science, the Actor model, first published in 1973, is a mathematical model of concurrent computation. ... The Process calculi (or process algebras) are a diverse family of related approaches to formally modelling concurrent systems. ... Java is an object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s. ... The title given to this article is incorrect due to technical limitations. ... A monitor is an approach to synchronizing two or more computer tasks that use a shared resource, usually a hardware device or a set of variables. ...


Of the languages that use a message-passing concurrency model, Erlang is probably the most widely used in industry at present. Erlang is a general-purpose concurrent programming language and runtime system. ...


Languages where concurrency is important

  • Ada
  • Afnix – concurrent access to data is protected automatically (previously called Aleph, but unrelated to Alef)
  • Alef – concurrent language with threads and message passing, used for systems programming in early versions of Plan 9 (operating system)
  • ChucK – domain specific programming language for audio
  • Cilk – a concurrent C
  • Cω – C Omega, a research language extending C#, uses asynchronous communication
  • Concurrent Pascal – by Brinch-Hansen
  • Corn
  • E – uses promises, ensures deadlocks cannot occur
  • Erlang – uses asynchronous message passing with nothing shared
  • Join Java – concurrent language based on the Java programming language
  • Joule – dataflow language, communicates by message passing
  • Limbo – relative of Alef, used for systems programming in Inferno (operating system)
  • Oz – multiparadigm language, supports shared-state and message-passing concurrency, and futures
  • MultiLispScheme variant extended to support parallelism
  • Occam – influenced heavily by Communicating Sequential Processes (CSP).
    • Occam-pi – a modern variant of Occam, which incorporates ideas from Milner's Pi-Calculus
  • Pict – essentially an executable implementation of Milner's Pi-Calculus
  • SALSA – actor language with token-passing, join, and first-class continuations for distributed computing over the Internet
  • SR – research language

Note that many of these languages are intended more as research languages (e.g., Pict) than as languages for production use. However, several of the examples (such as Erlang, Limbo, and Occam) have seen industrial use at various times in the last 20 years. Ada is a structured, statically typed imperative computer programming language designed by a team lead by Jean Ichbiah of CII Honeywell Bull during 1977–1983. ... Afnix (until 2003 developed under name Aleph) is a multi-threaded functional programming language with dynamic symbol bindings that support the object-oriented programming paradigm. ... The Alef language was designed by Phil Winterbottom of Bell Labs as part of the Plan 9 operating system. ... Plan 9 is an operating system descended from Unix and developed by Bell Laboratories. ... ChucK is a concurrent, strongly-timed audio programming language for real-time synthesis, composition, and performance, which runs on Mac OS X, Linux, and Microsoft Windows. ... Cilk is a general_purpose programming language designed for multi_threaded parallel programming. ... The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language is a standardized imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the Unix operating system. ... Cω (pronounced C omega) is a free extension to the C# programming language, developed by Microsoft Research in the UK. Cω attempts to mix traditional coding structures and methodology with data storage mediums such as databases and XML documents. ... Per Brinch Hansen. ... Corn programming language is designed for modeling concurrency and advanced computation. ... E is an object-oriented programming language for secure distributed computing, created by Mark S. Miller and others at Electric Communities in 1997. ... Erlang is a general-purpose concurrent programming language and runtime system. ... Join Java is a programming language that extends the standard Java Programming language with the Join Semantics of the Join Calculus. ... Java is an object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s. ... Joule is a concurrent dataflow programming language, designed for building distributed applications. ... Limbo is a programming language for writing distributed systems and is the language used to write applications for the Inferno operating system. ... The Alef language was designed by Phil Winterbottom of Bell Labs as part of the Plan 9 operating system. ... Inferno is an operating system for creating and supporting distributed services. ... Oz is a multi-paradigm programming language. ... The Mozart Programming System is a multi-platform implementation of the Oz programming language developed by the Mozart Consortium. ... Multiplatform (or multi-platform) is a term commonly used in the computer world about a project that can be used on multiple platforms. ... MultiLisp is a functional programming language and dialect of the Lisp dialect Scheme, extended with constructs for parallel execution and shared memory; MultiLisp is implemented in Interlisp. ... The Knights of the Lambda Calculus recursive emblem celebrates Schemes theoretical foundation, the lambda calculus. ... Occam is a parallel programming language that builds on Communicating Sequential Processes (CSP) and shares many of their features. ... In computer science, Communicating Sequential Processes (CSP) is a language for describing patterns of interaction. ... Occam-Pi is the new name for the derivation of occam developed by the KRoC team at the University of Kent. ... Occam is a parallel programming language that builds on Communicating Sequential Processes (CSP) and shares many of their features. ... In theoretical computer science, the π-calculus is a notation originally developed by Robin Milner, Joachim Parrow and David Walker to model concurrency (just as the λ-calculus is a simple model of sequential programming languages). ... In theoretical computer science, the π-calculus is a notation originally developed by Robin Milner, Joachim Parrow and David Walker to model concurrency (just as the λ-calculus is a simple model of sequential programming languages). ... The SALSA programming language uses concurrency primitives beyond asynchronous message passing, including token-passing, join, and first-class continuations. ... SR (short for Synchronizing Resources) is a programming language designed for concurrent programming. ...


Many other languages provide support for concurrency in the form of libraries (on level roughly comparable with the above list).


  Results from FactBites:
 
Programming language - Wikipédia (1603 words)
Most languages that are widely used, or have been used for a considerable period of time, have standardization bodies that meet regularly to create and publish formal definitions of the language, and discuss extending or supplementing the already extant definitions.
Type-inferred languages superficially treat all data as not having a type, but actually do sophisticated analysis of the way the program uses the data to determine which elementary operations are performed on the data, and therefore deduce what type the variables have at compile-time.
Programming languages are not error tolerant; however, the burden of recognising and using the special vocabulary is reduced by help messages generated by the programming language implementation.
Concurrent programming language - Wikipedia, the free encyclopedia (483 words)
Concurrent programming languages are programming languages that use language constructs for concurrency.
This style of concurrent programming usually requires the application of some form of locking (e.g., mutexes, semaphores, or monitors) to coordinate between threads.
Today the most commonly used programming lanuages with specific constructs for concurrency are Java and C# with their multi-threading and locking.
  More results at FactBites »


 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments
Please enter the 5-letter protection code

Want to know more?
Search encyclopedia, statistics and forums:

 


Lesson Plans | Student Area | Student FAQ | Reviews | Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms.