Date Added: Oct 2009
Orc was originally presented as a process calculus. It has now evolved into a full programming language, which will be described in this paper. The language has the structure and feel of a functional programming language, yet it handles many non-functional aspects effectively. This paper first describes the original concurrency combinators of the process calculus. It them provides details on small functional programming language that forms the core language to follow it up with how the concurrency combinators of the process calculus and the functional core language are integrated seamlessly. The resulting language and its supporting libraries have proven very effective in describing typical concurrent computations. This paper demonstrates how several practical concurrent programming problems are easily solved in Orc. The Orc process calculus was designed to express orchestrations and wide-area computations in a simple and structured manner. Its intent was to overcome some of the problems listed above. It is inherently concurrent and implicitly distributed. It has a clearly specified operational semantics. Human actors and computational processes of varying granularity are treated uniformly. The paper is structured as follows: reviewing the Orc concurrency calculus; presenting the functional core of Orc; followed by a section that integrates the functional core with the concurrency calculus, resulting in the full Orc programming language.