Linda is a "coordination language." The main idea of coordination languages is that parallel programs should be written with two languages, a sequential language, where the actual computation is defined for each processor, and a coordination language, which coordinates communication between processors. Linda uses the idea of tuple spaces as a mechanism for coordinating processes.
The idea behind Linda is a very simple one, coordination is done through a tuple space. A process can either place data (called a tuple), or remove data in a tuple space. For example, we can place two strings "hello" and "world" into the tuple space by simply saying:
out("hello", "world");
If we wanted to get the tuple back from the stuple space, we simply say:
in("hello","world");
If the tuple that matches ("hello", "world") is in the tuple space, we get the tuple back. If the tuple is not in the space, then the program blocks until the tuple that matches is placed in the space. A system for partial matches is also implemented. Using these (and a few other) simple primitives, we can implement different synchronization and message passing protocols.
Linda has several advantages over other explicit systems. One is that its simple primitives allows it to have language bindings for several mainstream languages, like C, Fortran, and Java. Linda is also easy to program in: In a comparison of five languages1 that includes PARLOG, a logic programming language, Linda was deemed the easiest to code for. However, the idea of a shared space between distributed memory machines may create inefficiencies by needing to fetch a tuple from non-local memory. The low level nature of Linda's tuple space has also been criticized.
References:
David Edward Bakken, Supporting Fault Tolerant Parallel Programming in Linda, PhD Dissertation, University of Arizona, 1994.
Henri E. Bal, A Comparative Strudy of Five Parallel Programming Languages, 1991.