HOME

TheInfoList



OR:

In
computer science Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (includi ...
, Linda is a coordination model that aids communication in parallel computing environments. Developed by
David Gelernter David Hillel Gelernter (born March 5, 1955) is an American computer scientist, artist, and writer. He is a professor of computer science at Yale University. Gelernter is known for contributions to parallel computation in the 1980s, and for book ...
, it is meant to be used alongside a full-fledged computation language like Fortran or C where Linda's role is to "''create'' computational activities and to support communication among them".


History

David Gelernter David Hillel Gelernter (born March 5, 1955) is an American computer scientist, artist, and writer. He is a professor of computer science at Yale University. Gelernter is known for contributions to parallel computation in the 1980s, and for book ...
wrote the first version of Linda as a Ph.D. candidate in 1979, naming it after Linda Lovelace, who appeared in the pornographic film '' Deep Throat''. At the time, the main language for parallel processing was
Ada Ada may refer to: Places Africa * Ada Foah, a town in Ghana * Ada (Ghana parliament constituency) * Ada, Osun, a town in Nigeria Asia * Ada, Urmia, a village in West Azerbaijan Province, Iran * Ada, Karaman, a village in Karaman Province, ...
, developed by the
U.S. Department of Defense The United States Department of Defense (DoD, USDOD or DOD) is an executive branch department of the federal government charged with coordinating and supervising all agencies and functions of the government directly related to national secur ...
and a tribute to Ada Lovelace, which Gelernter considered an "inelegant and bulky" language. It was widely released in 1986, when Gelernter, along with his Yale colleague Nicholas Carriero and
Sudhir Ahuja Sudhir R. “Sid” Ahuja is the senior vice president of product development at Caregility, a New Jersey-based Telehealth company, and a Entrepreneur-in-Residence at Stevens Institute of Technology. He is a Bell Labs Fellow holding 23 patents an ...
at AT&T Bell Laboratories, published "Linda and Friends" in an
IEEE The Institute of Electrical and Electronics Engineers (IEEE) is a 501(c)(3) professional association for electronic engineering and electrical engineering (and associated disciplines) with its corporate office in New York City and its operat ...
journal. By the early 1990s, Linda was widely used by corporations to more efficiently conduct big data analyses, including Wall Street
brokerage A broker is a person or firm who arranges transactions between a buyer and a seller for a commission when the deal is executed. A broker who also acts as a seller or as a buyer becomes a principal party to the deal. Neither role should be con ...
s as well as
AT&T AT&T Inc. is an American multinational telecommunications holding company headquartered at Whitacre Tower in Downtown Dallas, Texas. It is the world's largest telecommunications company by revenue and the third largest provider of mobile te ...
,
Boeing The Boeing Company () is an American multinational corporation that designs, manufactures, and sells airplanes, rotorcraft, rockets, satellites, telecommunications equipment, and missiles worldwide. The company also provides leasing and p ...
, and
United Technologies United Technologies Corporation (UTC) was an American multinational conglomerate headquartered in Farmington, Connecticut. It researched, developed, and manufactured products in numerous areas, including aircraft engines, aerospace systems, ...
. There were even companies that specialized in creating specialized parallel computing applications based on Linda, the largest of which was Scientific Computing Associates, a
New Haven New Haven is a city in the U.S. state of Connecticut. It is located on New Haven Harbor on the northern shore of Long Island Sound in New Haven County, Connecticut and is part of the New York City metropolitan area. With a population of 134,023 ...
-based company founded by several Yale computer scientists (Gelernter occasionally consulted for them but did not work there). Interest in Linda dropped in the mid-1990s, only to make a comeback in the late 1990s with several corporations implementing Linda in
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mos ...
, including Sun Microsystems and IBM.


Overview


Model

The Linda model provides a
distributed shared memory In computer science, distributed shared memory (DSM) is a form of memory architecture where physically separated memories can be addressed as a single shared address space. The term "shared" does not mean that there is a single centralized memor ...
, known as a
tuple space A tuple space is an implementation of the associative memory paradigm for parallel/distributed computing. It provides a repository of tuples that can be accessed concurrently. As an illustrative example, consider that there are a group of process ...
because its basic addressable unit is a
tuple In mathematics, a tuple is a finite ordered list (sequence) of elements. An -tuple is a sequence (or ordered list) of elements, where is a non-negative integer. There is only one 0-tuple, referred to as ''the empty tuple''. An -tuple is defi ...
, an ordered sequence of typed data objects; specifically in Linda, a tuple is a sequence of up to 16 typed fields enclosed in parentheses". The tuple space is "logically shared by processes" which are referred to as workers that store and retrieve tuples.


Operations

One of Linda's main advantages is that it's simple, with only six operations that workers perform on the tuples to access tuplespace: * out: Puts a tuple into the tuplespace * in: Takes out a tuple that matches a given pattern from the tuplespace (if there's no match, the operation is blocked) * rd: Copies a tuple that matches a given pattern from the tuplespace (if there's no match, the operation is blocked) * eval: Creates a new process to evaluate tuples * inp: A non-blocking version of in (if there's no match, an error message is returned) * rdp: A non-blocking version of rd (if there's no match, an error message is returned)


Comparison

Compared to other parallel-processing models, Linda is more orthogonal in treating process coordination as a separate activity from computation, and it is more general in being able to 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 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. Criticisms of Linda from the multiprocessing community tend to focus on the decreased speed of operations in Linda systems as compared to Message Passing Interface (MPI) systems. While not without justification, these claims were largely refuted for an important class of problems. Detailed criticisms of the Linda model can also be found in Steven Ericsson-Zenith's book ''Process Interaction Models''. 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 Linda-like systems are parallel and distributed programming models that use unstructured collections of tuples as a communication mechanism between different processes. Examples In addition to proper Linda implementations, these include other ...
and implemented as
orthogonal technology In mathematics, orthogonality is the generalization of the geometric notion of '' perpendicularity''. By extension, orthogonality is also used to refer to the separation of specific features of a system. The term also has specialized meanings in ...
(unlike original version). An example of this is the language Ease designed by Steven Ericsson-Zenith. Linda's approach has also been compared to that of
flow-based programming In computer programming, flow-based programming (FBP) is a programming paradigm that defines applications as networks of "black box" processes, which exchange data across predefined connections by message passing, where the connections are speci ...

Coordination Language
- A small discussion about the differences between the approach of Linda and that of
Flow-based programming In computer programming, flow-based programming (FBP) is a programming paradigm that defines applications as networks of "black box" processes, which exchange data across predefined connections by message passing, where the connections are speci ...


Linda-calculus

The Linda-calculus is a formalisation of the above model with the difference that in the following \mathrm subsumes both out and eval operations.


Syntax

We abstract the concrete representation of tuples. We just assume that we have a set of tuples t \in \mathcal and we are allowed to form and apply a substitution function \sigma on tuples substituting variables for terms that yields a tuple. For example, given we have a tuple t = (\mathit, x), then applying a substitution \sigma = \ on t yields (\mathit, \mathit) The Linda-calculus processes are defined by the following grammar. P,Q ::= t \;, \; \mathrm(P).Q \;, \; \mathrm(t).P \;, \; \mathrm(t).P \;, \; P + Q \;, \; \mathbf X. P \;, \; X The syntax includes the aftermentioned Linda operations, non-deterministic choice, and
recursion Recursion (adjective: ''recursive'') occurs when a thing is defined in terms of itself or of its type. Recursion is used in a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in mathemati ...
. The substitution function is extended to processes recursively.


Semantics

A tuple space is represented as a
multiset In mathematics, a multiset (or bag, or mset) is a modification of the concept of a set that, unlike a set, allows for multiple instances for each of its elements. The number of instances given for each element is called the multiplicity of that e ...
of the processes. We write M \,, \, P for M \uplus \ where M is a multiset, \ a singleton multiset, and \uplus is the multiset union operation. The semantics is then defined as a reduction relation on a multiset M \rightarrow M' as follows. \begin \text & M \,, \, \mathrm(P).Q &\rightarrow& M \,, \, P \,, \, Q & \\ \text & M \,, \, \mathrm(t).P \,, \, t' &\rightarrow& M \,, \, P\sigma \,, \, t' & \text \sigma \text t\sigma = t' \\ \text & M \,, \, \mathrm(t).P \,, \, t' &\rightarrow& M \,, \, P\sigma & \text \sigma \text t\sigma = t' \\ \text & M \,, \, P + Q &\rightarrow& M \,, \, P & \\ \text & M \,, \, P + Q &\rightarrow& M \,, \, Q & \\ \text & M \,, \, \mathbf X. P &\rightarrow& M \,, \, P\ & \\ \end Note that (input) consumes the tuple t' from the tuple space whereas (read) only reads it. The resulting operational semantics is synchronous.


Implementations

Linda was originally implemented in C and Fortran, but has since been implemented in many programming languages, including: * C: C-Linda
TCP-LindaLinuxTuples
*
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...

CppLindaBoreas
* C#
pSpaces
* Erlang
Erlinda
* Go
pSpaces
*
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mos ...
:
JavaSpaces A tuple space is an implementation of the associative memory paradigm for parallel/distributed computing. It provides a repository of tuples that can be accessed concurrently. As an illustrative example, consider that there are a group of process ...

jRESPTSpacesLightTSpSpaces
*
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of websites use JavaScript on the client side for webpage behavior, of ...

pSpaces
* Lisp *
Lua Lua or LUA may refer to: Science and technology * Lua (programming language) * Latvia University of Agriculture * Last universal ancestor, in evolution Ethnicity and language * Lua people, of Laos * Lawa people, of Thailand sometimes referred t ...

LuaTSLua Lanes
*
Prolog Prolog is a logic programming language associated with artificial intelligence and computational linguistics. Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is intended primarily ...

SICStus Prolog Linda
*
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
: PyLinda *
Ruby A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called ...
: Rinda *
Swift Swift or SWIFT most commonly refers to: * SWIFT, an international organization facilitating transactions between banks ** SWIFT code * Swift (programming language) * Swift (bird), a family of birds It may also refer to: Organizations * SWIFT, ...

pSpaces
Some of the more notable Linda implementations include: * C-Linda or TCP-Linda - the earliest commercial and a widespread implementation of virtual shared memory for supercomputers and clustered systems from Scientific Computing Associates, founded by Martin Schultz. *
JavaSpaces A tuple space is an implementation of the associative memory paradigm for parallel/distributed computing. It provides a repository of tuples that can be accessed concurrently. As an illustrative example, consider that there are a group of process ...
- a Java-based tuplespace implementation that helped popularize distributed computing.
TSpaces
- a Java-based tuplespace platform from IBM.


See also

* Dataflow *
Data flow diagram A data-flow diagram is a way of representing a flow of data through a process or a system (usually an information system). The DFD also provides information about the outputs and inputs of each entity and the process itself. A data-flow diagram h ...
*
Dataflow programming In computer programming, dataflow programming is a programming paradigm that models a program as a directed graph of the data flowing between operations, thus implementing dataflow principles and architecture. Dataflow programming languages share s ...
*
Flow-based programming In computer programming, flow-based programming (FBP) is a programming paradigm that defines applications as networks of "black box" processes, which exchange data across predefined connections by message passing, where the connections are speci ...
* Parallel computing


References

{{DEFAULTSORT:Linda (Coordination Language) Concurrent programming languages Programming languages