Occam (programming language): Difference between revisions

Content deleted Content added
wotug.ukc.ac.uk is no longer maintained. Add wotug.org/occam.
Added brief description of occam 1; various Occam -> occam changes; minor tweaks.
Line 1:
:''Do not confuse it with the [[Ocaml]] language.''
'''Occam''' (officially written in lowercase as '''occam''') is a [[Parallel computing|parallel]] [[programming language]] that builds on [[Communicating Sequential Processes]] (CSP) and shares many of their features. It is named after [[William of Ockham]] of [[Occam's Razor]] fame. Occam is, in a way, a practical executable implementation of CSP.
 
Occam is an [[imperative (programming)|imperative]] [[procedural (programming)|procedural]] language (such as [[Pascal (programming language)|Pascal]]). It was developed by [[InmosINMOS]] as the native programming language for their line of [[Transputertransputer]] [[microprocessor]]s, but implementations for other platforms exist as well.
 
==Overview==
Line 46:
==Language revisions==
 
===Occamoccam 21===
 
'''Occam 1''' was a preliminary version of the language. This supported only the VAR data type, which was an integral type corresponding to the native word length of the target architecture, and one-dimensional arrays.
'''Occam 2''' is an extension produced by INMOS Ltd in 1987 that adds floating-point, functions and more language types like varying sizes of integers (INT16, INT32) and character types.
 
===occam 2===
With this revision Occam became a language capable of expressing useful programs, whereas occam 1 was more suited to examining algorithms and exploring the new language.
 
'''Occam 2''' is an extension produced by INMOS Ltd in 1987 that adds [[floating-point]] support, functions, multi-dimensional arrays and more languagedata types likesuch as varying sizes of integers (INT16, INT32) and character typesbytes.
 
With this revision, Occamoccam became a language capable of expressing useful programs, whereas occam 1 was more suited to examining algorithms and exploring the new language.
 
["occam 2 Reference Manual", [[INMOS]], P-H 1988, ISBN 0-13-629312-3].
 
===Occamoccam 2.1===
 
'''Occam 2.1''' is a second enhancement to occam, produced in 1988 by [[INMOS]] Ltd. It was the last of the series language developments contributed by INMOS. Despite its "incremental" version number, it was a significant upgrade in the usefulness of the language, introducing:
Line 66 ⟶ 70:
* Ability to return fixed-length array from function;
 
For a full list of the changes see Appendix P of the [http://www.wotug.org/occam/documentation/oc21refman.pdf INMOS Occamoccam 2.1 Reference Manual].
 
===Occamoccam 3===
'''Occam 3''' was the name for a proposal for the next-generation occam language, created by one of the senior programmers at INMOS. A specification was created and distributed for community comment. The new language included a large number of changes, many of which were focussed at making code sharing, simultaneous development, and project reuse easier.
 
The [http://www.wotug.org/occam/documentation/oc3refman.pdf Occamoccam 3] specification is available, but no compiler was created for this variant of the language, partly due to problems within [[INMOS]] and its subsequent takeover.
 
Some elements from occam 3 were introduced into the occam 2.1 compiler by other teams, and came to be known as 'occam 2.5' - as in "half-way there"!
 
===Occamoccam 2.5===
'''Occam 2.5''' is the common name for the language compiled by the Kent Retargettable Occamoccam compilerCompiler [[KRoC]]. It contains a significant number of extensions to the occam 2.1 compiler, for example:
 
* nested protocols
Line 86 ⟶ 90:
* extended rendezvous.
 
The KRoC team have made the compiler available on their website. In recent times, the team has decided to rename the compiler to [[Occamoccam-Pipi]], because of the use of theories from the [[Pi-calculus]].
 
==External links==