Linda (coordination language)

Last updated
Linda
Paradigm Multi-paradigm [1]
FamilyCoordination language
Designed by David Gelernter
Developer Scientific Computing Associates
First appeared1986;38 years ago (1986)
Website lindaspaces.com
Influenced
Java [2]

In computer science, Linda is a coordination model that aids communication in parallel computing environments. Developed by David Gelernter, 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". [3] [4] [5]

Contents

History

David Gelernter 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, developed by the U.S. Department of Defense and a tribute to Ada Lovelace, which Gelernter considered an "inelegant and bulky" language. [6]

It was widely released in 1986, when Gelernter, along with his Yale colleague Nicholas Carriero and Sudhir Ahuja at AT&T Bell Laboratories, published "Linda and Friends" in an IEEE journal. [7]

By the early 1990s, Linda was widely used by corporations to more efficiently conduct big data analyses, including Wall Street brokerages as well as AT&T, Boeing, and United Technologies. 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-based company founded by several Yale computer scientists (Gelernter occasionally consulted for them but did not work there). [6] Interest in Linda dropped in the mid-1990s, only to make a comeback in the late 1990s with several corporations implementing Linda in Java, including Sun Microsystems and IBM. [3]

Overview

Model

The Linda model provides a distributed shared memory, known as a tuple space because its basic addressable unit is a tuple, 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. [8]

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: [9]

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 concurrencyuniprocessor, multi-threaded multiprocessor, or networkedunder 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.[ citation needed ] While not without justification, these claims were largely refuted for an important class of problems. [10] Detailed criticisms of the Linda model can also be found in Steven Ericsson-Zenith's book Process Interaction Models. [11]

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.[ citation needed ] Researchers have also experimented with various means of implementing the virtual shared memory for this model.[ citation needed ] Many of these researchers proposed larger modifications to the original Linda model, developing a family of systems known as Linda-like systems and implemented as orthogonal technology (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. [12]

Linda-calculus

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

Syntax

We abstract the concrete representation of tuples. We just assume that we have a set of tuples and we are allowed to form and apply a substitution function on tuples substituting variables for terms that yields a tuple. For example, given we have a tuple , then applying a substitution on yields

The Linda-calculus processes are defined by the following grammar.

The syntax includes the aftermentioned Linda operations, non-deterministic choice, and recursion. The substitution function is extended to processes recursively.

Semantics

A tuple space is represented as a multiset of the processes. We write for where is a multiset, a singleton multiset, and is the multiset union operation. The semantics is then defined as a reduction relation on a multiset as follows.

Note that (input) consumes the tuple 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:

Some of the more notable Linda implementations include:

See also

Related Research Articles

<span class="mw-page-title-main">Permutation</span> Mathematical version of an order change

In mathematics, a permutation of a set is, loosely speaking, an arrangement of its members into a sequence or linear order, or if the set is already ordered, a rearrangement of its elements. The word "permutation" also refers to the act or process of changing the linear order of an ordered set.

In mathematics, a tuple is a finite sequence or ordered list of numbers or, more generally, mathematical objects, which are called the elements of the tuple. An n-tuple is a tuple of n elements, where n is a non-negative integer. There is only one 0-tuple, called the empty tuple. A 1-tuple and a 2-tuple are commonly called respectively a singleton and an ordered pair.

In database theory, relational algebra is a theory that uses algebraic structures for modeling data, and defining queries on it with a well founded semantics. The theory was introduced by Edgar F. Codd.

In computer science, communicating sequential processes (CSP) is a formal language for describing patterns of interaction in concurrent systems. It is a member of the family of mathematical theories of concurrency known as process algebras, or process calculi, based on message passing via channels. CSP was highly influential in the design of the occam programming language and also influenced the design of programming languages such as Limbo, RaftLib, Erlang, Go, Crystal, and Clojure's core.async.

Grammar theory to model symbol strings originated from work in computational linguistics aiming to understand the structure of natural languages. Probabilistic context free grammars (PCFGs) have been applied in probabilistic modeling of RNA structures almost 40 years after they were introduced in computational linguistics.

In automata theory, a finite-state machine is called a deterministic finite automaton (DFA), if

Latent semantic analysis (LSA) is a technique in natural language processing, in particular distributional semantics, of analyzing relationships between a set of documents and the terms they contain by producing a set of concepts related to the documents and terms. LSA assumes that words that are close in meaning will occur in similar pieces of text. A matrix containing word counts per document is constructed from a large piece of text and a mathematical technique called singular value decomposition (SVD) is used to reduce the number of rows while preserving the similarity structure among columns. Documents are then compared by cosine similarity between any two columns. Values close to 1 represent very similar documents while values close to 0 represent very dissimilar documents.

A finite-state transducer (FST) is a finite-state machine with two memory tapes, following the terminology for Turing machines: an input tape and an output tape. This contrasts with an ordinary finite-state automaton, which has a single tape. An FST is a type of finite-state automaton (FSA) that maps between two sets of symbols. An FST is more general than an FSA. An FSA defines a formal language by defining a set of accepted strings, while an FST defines relations between sets of strings.

<span class="mw-page-title-main">Multigraph</span> Graph with multiple edges between two vertices

In mathematics, and more specifically in graph theory, a multigraph is a graph which is permitted to have multiple edges, that is, edges that have the same end nodes. Thus two vertices may be connected by more than one edge.

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 processors that produce pieces of data and a group of processors that use the data. Producers post their data as tuples in the space, and the consumers then retrieve data from the space that match a certain pattern. This is also known as the blackboard metaphor. Tuple space may be thought as a form of distributed shared memory.

The notion of institution was created by Joseph Goguen and Rod Burstall in the late 1970s, in order to deal with the "population explosion among the logical systems used in computer science". The notion attempts to "formalize the informal" concept of logical system.

In theoretical computer science and mathematical logic a string rewriting system (SRS), historically called a semi-Thue system, is a rewriting system over strings from a alphabet. Given a binary relation between fixed strings over the alphabet, called rewrite rules, denoted by , an SRS extends the rewriting relation to all strings in which the left- and right-hand side of the rules appear as substrings, that is , where , , , and are strings.

In computer science, in particular in automata theory, a two-way finite automaton is a finite automaton that is allowed to re-read its input.

A queue machine, queue automaton, or pullup automaton (PUA) is a finite state machine with the ability to store and retrieve data from an infinite-memory queue. It is a model of computation equivalent to a Turing machine, and therefore it can process the same class of formal languages.

An embedded pushdown automaton or EPDA is a computational model for parsing languages generated by tree-adjoining grammars (TAGs). It is similar to the context-free grammar-parsing pushdown automaton, but instead of using a plain stack to store symbols, it has a stack of iterated stacks that store symbols, giving TAGs a generative capacity between context-free and context-sensitive grammars, or a subset of mildly context-sensitive grammars. Embedded pushdown automata should not be confused with nested stack automata which have more computational power.

In the fields of computer vision and image analysis, the Harris affine region detector belongs to the category of feature detection. Feature detection is a preprocessing step of several algorithms that rely on identifying characteristic points or interest points so to make correspondences between images, recognize textures, categorize objects or build panoramas.

In computer science, more specifically in automata and formal language theory, nested words are a concept proposed by Alur and Madhusudan as a joint generalization of words, as traditionally used for modelling linearly ordered structures, and of ordered unranked trees, as traditionally used for modelling hierarchical structures. Finite-state acceptors for nested words, so-called nested word automata, then give a more expressive generalization of finite automata on words. The linear encodings of languages accepted by finite nested word automata gives the class of visibly pushdown languages. The latter language class lies properly between the regular languages and the deterministic context-free languages. Since their introduction in 2004, these concepts have triggered much research in that area.

Membrane systems have been inspired from the structure and the functioning of the living cells. They were introduced and studied by Gh.Paun under the name of P systems [24]; some applications of the membrane systems are presented in [15]. Membrane systems are essentially models of distributed, parallel and nondeterministic systems. Here we motivate and present the mobile membranes. Mobile membranes represent a variant of membrane systems inspired by the biological movements given by endocytosis and exocytosis. They have the expressive power of both P systems and process calculi with mobility such as mobile ambients [11] and brane calculi [10]. Computations with mobile membranes can be defined over specific configurations, while they represent also a rule-based formalism.

In artificial intelligence and related fields, an argumentation framework is a way to deal with contentious information and draw conclusions from it using formalized arguments.

In physics and mathematics, the Klein–Kramers equation or sometimes referred as Kramers–Chandrasekhar equation is a partial differential equation that describes the probability density function f of a Brownian particle in phase space (r, p). It is a special case of the Fokker–Planck equation.

References

  1. Ciancarini, Paolo. "Lecture 3: Coordination languages" (PDF). University of Bologna. Retrieved 9 January 2022.
  2. "David Gelernter, B.A. & M.A. '76". Yale Scientific. 14 February 2011. Retrieved 8 January 2022.
  3. 1 2 Wells, George (July 2005). "Coordination Languages: Back to the Future with Linda" (PDF). Conference: 2nd International Workshop on Coordination and Adaptation Techniques for Software Entities. Rhodes University. Archived from the original (PDF) on 19 December 2009.
  4. Gelernter, David; Carriero, Nicholas (February 1992). "Coordination Languages and their Significance" (PDF). Communications of the ACM. 35 (2): 97–107. doi:10.1145/129630.129635. S2CID   7748555.
  5. Carriero, Nicholas; Gelernter, David (1985-01-01). "The S/Net's Linda kernel (Extended abstract)". Proceedings of the tenth ACM symposium on Operating systems principles - SOSP '85. SOSP '85. New York, NY, USA: ACM. pp. 160–. doi: 10.1145/323647.323643 . ISBN   978-0897911740. S2CID   6922183.
  6. 1 2 Markoff, John (19 January 1992). "David Gelernter's Romance With Linda". The New York Times. Archived from the original on 30 December 2019. Retrieved 8 January 2022.
  7. Ahuja, Sudhir; Carriero, Nicholas; Gelernter, David (August 1986), "Linda and Friends", Computer, IEEE, 19b (8): 26–34, doi:10.1109/mc.1986.1663305, S2CID   5155678
  8. John H. Reynolds (December 2002). "Linda arouses a Sleeping Barber" (PDF). Proceedings of the Winter Simulation Conference. Vol. 2. San Diego, CA: IEEE. pp. 1804–1808. doi:10.1109/WSC.2002.1166471. ISBN   0-7803-7614-5. S2CID   62584541 . Retrieved 8 January 2022.
  9. Masatoshi Seki (February 2017). The dRuby Book: Distributed and Parallel Computing with Ruby (0.1 ed.). Pragmatic Programmers. Retrieved 9 January 2022.
  10. Carriero; et al. (1 April 1994). "The Linda Alternative to message-passing systems" (PDF). Parallel Computing. 2 (4): 633–655. doi:10.1016/0167-8191(94)90032-9.
  11. Ericsson-Zenith (1992). Process Interaction Models. Paris University.
  12. J. Paul Rodker Morrison (2 July 2004). "Coordination Language". Archived from the original on 2023-09-28. Retrieved 9 January 2022.
  13. Cridlig, Régis; Goubault, Eric (1993). "Semantics and analysis of linda-based languages". Lecture Notes in Computer Science, vol 724. Springer, Berlin, Heidelberg. doi:10.1007/3-540-57264-3_30. ISBN   978-3-540-57264-0.