- Linda (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.This model is implemented as a "coordination language" in which several primitives operating on ordered sequence of typed data objects, "tuples," are added to a sequential language, such as C, and a logically global associative memory, called a tuplespace, in which processes store and retrieve tuples.The original Linda model requires four operations that individual workers perform on the tuples and the tuplespace:
*in atomically reads and removes—consumes—a tuple from tuplespace
*rd non-destructively reads a tuplespace
*out produces a tuple, writing it into tuplespace
*eval creates new processes to evaluate tuples, writing the result into tuplespaceLinda was developed by
David Gelernter andNicholas Carriero atYale University .Compared to other parallel-processing models, Linda is more orthogonal in that it treats process coordination as a separate activity from computation, and it is more general in that it can subsume various levels of concurrency—uniprocessor, multi-threaded multiprocessor, or networked—under a single model. Its orthogonality allows processes computing in different languages and platforms to interoperate using the same primitives. Its generality allows a multi-threaded Linda system to be distributed across multiple computers, or vice-versa, without change.
Whereas message-passing models require tightly-coupled processes sending messages to each other in some sequence or protocol, Linda processes are decoupled from other processes, communicating only through the tuplespace; a process need have no notion of other processes except for the kinds of tuples consumed or produced (data coupling).
Linda implementations can be found for
Prolog , Ruby (Rinda), Python, C,Smalltalk , Java and Lisp.The earliest commercial and widespread implementation of virtual shared memory for supercomputers and clustered system was C-Linda or TCP-Linda from Scientific Computing Associates, founded by Martin Schultz.IBM also has a tuplespace platform named [http://www.almaden.ibm.com/cs/TSpaces/ TSpaces] .JavaSpaces is an implementation of Linda in Java by Sun, incorporated into theJini project.Researchers have proposed more primitives to support different types of communication and co-ordination between (open distributed) computer systems, and to solve particular problems arising from various uses of the model. Researchers have also experimented with various means of implementing the virtual shared memory for this model.Many of these researchers proposed larger modifications to the original Linda model, developing a family of systems known as
Linda-like systems and implemented asorthogonal technology (unlike original version). An example of this is the language Ease designed bySteven Ericsson-Zenith .Criticisms of Linda from the multiprocessing community tend to focus on the decreased speed of operations in Linda systems as compared to MPI systems.Fact|date=June 2007 Detailed criticisms of the Linda model can also be found in
Steven Ericsson-Zenith 's book "Process Interaction Models"cite book | last=Ericsson-Zenith | authorlink=Steven Ericsson-Zenith | |title=Process Interaction Models|publisher=Paris University|date=1992|] .The language name seems to be a pun on Ada's tribute to
Ada Lovelace , referring toLinda Lovelace who became known as an actress in the porn movie Deep Throat [http://www.kamat.com/vikas/blog.php?BlogID=261]Publications
* cite web
last = Gelernter
first = David
last = Carriero
first = Nicholas
year = 1992
url = http://www.caip.rutgers.edu/~virajb/readinglist/coordinationlang.pdf
title = Coordination Languages and their Significance
publisher = Communications of the ACM
format=PDF
* cite web
last = Wells
first = George
url = http://wcat05.unex.es/Documents/Wells.pdf
title = Coordination Languages: Back to the Future with Linda
publisher = Rhodes University
format=PDF
* cite web
last = Sluga
first = Thomas Arkadius
url = http://www.geocities.com/player_master2000/cpplinda_bsc_thesis.pdf
title = Modern C++ Implementation of the LINDA coordination language
publisher = University of Hannover
format=PDFExternal links
* [https://sourceforge.net/projects/cpplinda/ Linda for C++]
* [http://www.comp.nus.edu.sg/~wongwf/linda.html Linda for C]
* [http://code.google.com/p/erlinda/ Erlinda (for Erlang)]
* [http://www.cs.bris.ac.uk/Publications/Papers/2000380.pdf Linda for Java]
* [http://www.sics.se/sicstus/docs/3.7.1/html/sicstus_29.html Linda for Prolog]
* [http://www-users.cs.york.ac.uk/aw/pylinda/ PyLinda (for Python)]
* [http://segment7.net/projects/ruby/drb/rinda/ Rinda (for Ruby)]
Wikimedia Foundation. 2010.