Traditionally, the inclusion of concurrency into programming languages has been done in a somewhat ad hoc manner; the general paradigm has been to augment sequential languages such as C with facilities for using operating-system-supplied primitives such as process creation and semaphores. This meant that programs written in these programs were not portable across different operating systems; in addition, the low-level nature of system calls led to programs that were difficult to maintain.
Programming language researchers have over the past decade begun to investigate
the design of programming constructs based on models of concurrency described
above as a means of remedying this problem. Examples include OCCAM,
which arose out of the work done on CSP; CML and Facile, which were inspired in
part by the constructs included in the CCS process algebra; and Pict, which is
based on the
-calculus. Other languages, such as Linda and NESL, have
been given rigorous semantics using techniques borrowed from concurrency
theory.