|
Occam is a 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. Parallel computing is the simultaneous execution of the same task (split up and specially adapted) on multiple processors in order to obtain faster results. ...
A programming language or computer language is a standardized communication technique for expressing instructions to a computer. ...
In computer science, Communicating Sequential Processes (CSP) is a language for describing patterns of interaction. ...
Hello, I am Sam, Sam I am. ...
Occams Razor (also spelled Ockhams Razor), is a principle attributed to the 14th-century English logician and Franciscan friar, William of Ockham. ...
Occam is an imperative procedural language (such as Pascal). It was developed by Inmos for their line of Transputers, but implementations for other platforms exist as well. In computer science, imperative programming, as opposed to declarative programming, is a programming paradigm that describes computation in terms of a program state and statements that change the program state. ...
Procedural programming is a programming paradigm based upon the concept of the modularity and scope of program code (i. ...
Pascal is one of the landmark computer programming languages on which generations of students cut their teeth and variants of which are still widely used today. ...
The INMOS Transputer was a pioneering parallel computing microprocessor design of the 1980s from INMOS, a small English company. ...
The INMOS Transputer was a pioneering parallel computing microprocessor design of the 1980s from INMOS, a small English company. ...
Overview
In the following examples indentation and formatting are critical for parsing the code: expressions are terminated by the end of the line, lists of expressions need to be on the same level of indentation (this feature is also found in other languages, such as Python, Haskell, Icon, Miranda, and ABC). Python is an interpreted programming language created by Guido van Rossum in 1990. ...
Haskell logo Haskell is a standardized pure functional programming language with non-strict semantics. ...
Icon is a very high-level programming language featuring goal directed execution and excellent facilities for managing strings and textual patterns. ...
Miranda is a non-strict purely functional programming language developed by Professor David Turner as a successor to his earlier programming languages SASL and KRC, using some concepts from ML and Hope. ...
ABC is an imperative general-purpose programming language and programming environment from CWI, Netherlands. ...
Communication between processes work through named channels. One process outputs data to a channel via ! while another one inputs data with ?. Input and output will block until the other end is ready to accept or offer data. Examples (c is a variable): keyboard ? c screen ! c SEQ introduces a list of expressions that are evaluated sequentially. This is not implicit as it is in most other programming languages. Example: SEQ x := x + 1 y := x * x PAR begins a list of expressions that may be evaluated concurrently. Example: PAR x := x + 1 y := y * 2 ALT specifies a list of guarded commands. The guards are combination of a boolean condition and an input expression (both optional). Each guard for which the condition is true and the input channel is ready is successful. One of the successful alternatives is selected for execution. Example: ALT count1 < 100 & c1 ? data SEQ count1 := count1 + 1 merged ! data count2 < 100 & c2 ? data SEQ count2 := count2 + 1 merged ! data status ? request SEQ out ! count1 out ! count2 This will read data from channels c1 or c2 (whichever is ready) and pass it into a merged channel. If countN reaches 100, reads from the corresponding channel will be disabled. A request on the status channel is answered by outputting the counts to out.
Language revisions Occam 2 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. 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 Reference Manual", INMOS, P-H 1988, ISBN 0-13-629312-3]. The INMOS Transputer was a pioneering parallel computing microprocessor design of the 1980s from INMOS, a small English company. ...
Occam 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: The INMOS Transputer was a pioneering parallel computing microprocessor design of the 1980s from INMOS, a small English company. ...
- Named data types (DATA TYPE x IS y);
- Named Records;
- Packed Records;
- Relaxation of some of the type conversion rules;
- New operators (e.g. BYTESIN)
- Channel retyping and channel arrays;
- Ability to return fixed-length array from function;
For a full list of the changes see Appendix P of the INMOS Occam 2.1 Reference Manual.
Occam 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 Occam 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. The INMOS Transputer was a pioneering parallel computing microprocessor design of the 1980s from INMOS, a small English company. ...
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"!
Occam 2.5 Occam 2.5 is the common name for the language compiled by the Kent Retargettable Occam compiler KRoC. It contains a significant number of extensions to the occam 2.1 compiler, for example: KRoC KRoC is the Kent Retargettable occam Compiler, a suite of programs that is based on the Inmos Occam Compiler v2. ...
- nested protocols
- run-time process creation
- mobile channels, data, and processes
- recursion;
- protocol inheritance;
- array constructors;
- 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 Occam-Pi, because of the use of theories from the Pi-calculus. Occam-Pi is the new name for the derivation of occam developed by the KRoC team at the University of Kent. ...
In theoretical computer science, the π-calculus is a notation originally developed by Robin Milner, Joachim Parrow and David Walker to model concurrency (just as the λ-calculus is a simple model of sequential programming languages). ...
External links - This article was originally based on material from the Free On-line Dictionary of Computing, which is licensed under the GFDL.
|