WoTUG - The place for concurrent processes

The Occam Language

Occam is a parallel processing language designed by a team at INMOS in conjunction with the design of the transputer processor, and based on T. Hoare's ideas of CSP.

Occam incorporates support for very fine grained, easy to use threads and seamless support of multi-processor environments. It can be used with shared or distributed memory systems, and the strong basis in CSP makes it excellent choice when formal proofs of correctness are required.

See the subsections for more information on using occam on your system:

This page contains the following sections describing the occam language itself:

The Occam Language Specification

The occam language is available in versions: 1, 2, 2.1, and 3.

Occam version 1

This version of the language is now obsolete.

Occam version 2

This language was implemented in TDS2 and supported a useful set of types and high level software constructs. It is by far the most commonly used version of the language.

A specification of this language, written by INMOS Ltd., is available as a book published by Prentice-Hall. ISBN: 0136293123

Occam version 2.1

This version of the language was the last implemented the commercial SGS-Thompson (ex INMOS) compiler. It included a small number of new language constructs, such as record types.

Since SGS-Thompson ceased development of the language and compilers, further enhancements have been made by groups at Kent University and elsewhere. These developments are ongoing.

Specifications are available for:

  • The standard 2.1 language in the occam 2.1 Reference Manual [PDF, PostScript] written and kindly made available by SGS-Thomson Microelectronics, Bristol. This book is in the same style as the occam 2 reference manual published by Prentice-Hall. 171 pages.

    There is also an update document, that describes the changes between occam2 and occam 2.1. This is INMOS internal technical document SW-0429-8. It assumes familiarity with occam2 and merely describes the additional features that have been added to the language (user defined data types, records, etc). 15 pages.

  • The extended 2.1 language, incorporating all of the official 2.1 features

Occam version 3

A detailed specification for occam 3 predates occam version 2.1, but the language has never been implemented, and indeed it is unlikely to be implemented in that form.

A specification of this language, the occam 3 reference manual (March 31 1992 draft) [PDF, PostScript], written by Geoff Barrett and donated by SGS-Thomson Microelectronics, Bristol formerly INMOS), is also available. This includes documentation of the standard compiler libraries. 203 pages.

Many of the ideas from occam 3 have inspired occam-pi language features, but there are still many good ideas in occam 3 left to exploit.

The Occam Standard Libraries

The occam language is supplemented by standard libraries, implementing text I/O and advanced mathematics. Documentation for the occam2 libraries is available in the form of Unix man pages and text files. The libraries themselves are distrbuted with the INMOS occam compiler, obtainable in the tds3 source and with the Linux source versions of KRoC.

The Java implementation of Occam

Some of the principles of occam have more recently been implemented in Java libraries, so that it is possible to program in the CSP and occam style while using the syntax and portability of Java. The libraries are called JCSP, CTJ and JavaPP.

See also the articles on the about occam and CSP at SEL-HPC Article Archive.

Page last modified on 17th May 2002
Pages © WoTUG, or the indicated author. All Rights Reserved.
Comments on these web pages should be addressed to: www at wotug.org