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
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
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
- 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,
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
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
CTJ and JavaPP.
See also the articles on the about occam and CSP at
SEL-HPC Article Archive.