Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
Get a full dump of the dictionary:
List of Names
- Language type:
P - Parallel or Multi-programming
Occam is a simple parallel computing language
developed to express many kinds of
parallel programs easily and directly.
Originally intended for the INMOS Transputer,
a chip built to support fine-grain
multi-processing, Occam has been implemented
for several processor and software architectures.
Syntactically, Occam is quite simple,
structure is expressed with a few simple
keywords and with indentation. Occam
supports a modest set of data types:
ints, reals, bytes, strings, and arrays.
version of Occam didn't support reals.) In
addition to simple data types, Occam defines
some kinds of parallel computing primitives
as types: channels and timers.
The semantics of Occam are based on the notion
of 'processes'. A process can be any
kind of computation (e.g. a := b + 6) and
can run in parallel with other processes.
The language provides structure to allow
processes to execute in parallel or
sequentially. Parallel processes
communicate with channels; these channels
must be declared, like variables, and
can enforce synchronizations (something
like an Ada rendezvous, but simpler and
more flexible). The language also
includes advanced facilities for multiplexing
channels and replicating processes.
Occam's model for parallel computation is
based on the seminal research by C.A.R. Hoare
and his language CSP.
The current version of the Occam language
definition is 2.1. Previously available only
as a commercial system from INMOS, various
free implementations of Occam are now
available for various platforms. Check
the links below for information and downloads.
Some of the available compilers are really
occam->C translators. Occam reference
manuals and examples are available for
David May et al 1982, 1987.
- See Also:
Occam is a fascinating little language, with
a very lean and spare set of features that
result in a powerful whole.
included special features for making occam
programs efficient on the Transputer
architecture, but they're very cleanly
integrated with the rest of the syntax.
When INMOS was acquired by SGS-Thompson,
the parent company donated a lot of the
occam technology to the research community,
including utility libraries for the language.
The occam For All project, begun
in 1995, aims to provide free and
architecture-neutral occam systems and tools
for programming researchers and industry.
Occam is considered to be a good language
for learning parallel computing concepts.
It is high-level enough to be usable,
general enough for the knowlege to be
transferable to other system, and low-level
enough that you can still get into trouble.
- Sample code:
-- Pipelined parallel sort in occam
--(from Pountain and May, A Tutorial
-- Introduction to Occam Programming)
VAL numbers IS 100 :
[numbers + 1] CHAN OF INT pipe:
PAR i = 0 FOR numbers
input IS pipe[i] :
output IS pipe[i+1] :
INT highest :
input ? highest
SEQ j = 0 FOR numbers - 1
input ? next
next <= highest
output ! highest
next > highest
output ! highest
highest := next
SEQ i = 0 FOR numbers -- get unsorted
INT unsortednumber : -- numbers
input ? unsortednumber
pipe ! unsortednumber
SEQ i = 0 FOR numbers -- dump sorted
INT sortednumber : -- numbers
pipe[numbers] ? sortednumber
output ! sortednumber
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is firstname.lastname@example.org
[Ziring MicroWeb Home]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.