Introduction to Occam

Matthew Woitaszek
Programming Language Concepts
4003-709-01 Spring 2001-3

Occam 2:
Concurrent and Parallel Programming with the Inmos Transputer

Ockham's Razor:
"Plurality should not be assumed without necessity."
Loosely translated: Keep it simple! (Beckett, 1994)

picture of William of Ockham William of Ockham, a member of the Franciscan order, was born in Surrey, England, circa 1285 and died in Munich around 1349. An active participant in papal politics, Ockham disputed the canon view of apostolic poverty leading the pope to condemn the Franciscans and forcing Ockham to seek the protection of Emperor Louis IV. In his writings against papal power, Ockham dismissed many of his opposition's explanations with demands for simplicity through the statement which would later become Ockham's razor. To this day, "his name, spelled Occam, lives on in the names of streets and restaurants in Munich... and in the brave new world of high performance safety critical parallel computing" (Beckett, 1994).

In the early 1980s, Inmos Limited developed a new computing platform named the transputer. Short for "transistor computer," the transputer system used VLSI technology to place an entire computer processor system on a single chip. Individual transputers were simple microprocessors, but possessed one unique ability: each transputer could be connected to four other transputers through dedicated communication channels. Transputers directly supported concurrent and parallel software. Maintaining his tenet of simplicity, Inmos Ltd adopted Occam's name to identify the new high-level assembly language designed for the transputer.

The first section of this introduction to occam describes process-based concurrent and parallel programming on the Inmos transputer. The second section provides a basic semiformal introduction to the language, describing primitive processes, constructions, data types, and functions. Small code snippets and occam peculiarities are interspersed liberally. Finally, several examples show occam in action.

Concurrent Programming on the Transputer
  1. Process-based Concurrent Programming
  2. Transputer Networks
Overview of occam 2
  1. Processes
  2. Constructions
  3. More Communications
  4. Data Types, Arrays, and Records
  5. Procedures and Functions
Selected occam Examples
  1. The KRoC occam compiler
  2. Simple input and output
  3. Parallel sorting example
References and Useful Links

RIT's Department of Computer Engineering maintained an array of 4 transputers in the early 1990s for a thesis project, but they seem to have been lost over the years.