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: C: C-Linda, TCP-Linda, LinuxTuples C++: CppLinda, Boreas C#: pSpaces Erlang: Erlinda Go: pSpaces Java: JavaSpaces, jRESP, TSpaces, LightTS, LIME, pSpaces JavaScript: pSpaces Lisp Lua: LuaTS Lua Lanes Prolog: SICStus Prolog Linda Python: PyLinda Ruby: Rinda 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 Java-based tuplespace implementation that helped popularize distributed computing. TSpaces - a Java-based tuplespace platform from IBM. See also Dataflow Data flow diagram Dataflow programming Flow-based programming Parallel computing References Concurrent programming languages Programming languages