fbpx
维基百科

occam

occam,一種并发程式語言,主要基於通信顺序进程程式代數[1],以及它的許多特色而實作。它的名稱來自於奥卡姆的威廉提出的奥卡姆剃刀(Occam's razor)原則。

occam
编程范型指令式, 过程式, 并发
設計者David May英语David May (computer scientist)
實作者Inmos英语Inmos
发行时间1983年,​40年前​(1983
衍生副語言
occam-π英语occam-π
啟發語言
通信顺序进程
影響語言
Ease英语Ease (programming language), Go, Handel-C, XC

occam是一種類似於Pascal的指令式过程式編程語言。這個語言於1983年出現,由英國計算機科學家David May英语David May (computer scientist),以及Inmos英语Inmos公司的科學家,在東尼·霍爾提供顧問意見後,共同研發而成。

概述

在下列例子中,缩进和格式对于分析代码是关键性的:表达式以行结束来终止,表达式的列表需要在缩进的相同水平上。这个特征叫做越位规则,也能在其他语言比如HaskellPython中见到。occam有指令式语言的基本要素和常规构造:变量,数据类型,表达式,条件构造IF,选择构造CASE,重复构造WHILE,作为命名进程的过程,和作为值过程的函数,过程不可以递归

在进程之间的通信使用命名的通道完成的。通道是有类型的,定义了两个进程间的通信协议,可以作为参数传递给过程,可以建立通道的阵列。一个进程通过!向一个通道输出数据,而另一个进程用?从它输入数据。输入和输出不能进行,直到另一端已经准备好接受或提供数据。进程在不能进行的情况下,经常称呼为它阻塞在这个通道之上,它不会阻塞其他独立进程的运行。阻塞行为不会是自旋(spin)或轮询(poll),而会是其他机制如等待(wait)、挂起(hang)或让位(yield)。下举一例,其中c是变量:

 keyboard ? c screen ! c 

occam还有对应通信顺序进程的如下构造和机制:

SEQ

SEQ 顺序构造,介入要被顺序求值的表达式的一个列表。顺序执行不是隐含的,大多数其他语言无这种显式构造。例如:

 SEQ x := x + 1 y := x * x 

ALT

ALT交替英语Alternation (formal language theory)(alternation)构造,指定有守卫的命令的一个列表。守卫(guard)起源于Edsger W. Dijkstra在1976年提出的守卫命令语言[2],是一个布尔条件和一个输入表达式的组合(二者都是可选的)。其条件为真并且输入通道已经就绪的守卫是成功的。选择一个成功的交替者(alternative)来执行,如果没有成功者则等待;如果有多个成功,语言不明确规定会执行其中哪一个,这不同于选择构造。例如:

 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 

它将从通道c1或c2读取数据(哪个就绪了都行)并把它传递到叫作合并的通道。如果countN达到100,从对应通道的读取将停用。在叫作状态的通道读取要求,将通过输出这些计数来回答。

PAR

PAR 并行(parallel)构造,开始一个可以被并发(concurrent)求值的表达式的列表。并行构造可溯源至Edsger W. Dijkstra在1965年提出的“协同顺序进程”(cooperating sequential processes)[3],例如:

 PAR p() q() 

复制

构造SEQ IF ALT PAR,都是可以复制的。复制的PAR的例子:

 PAR farmer() PAR i = 0 FOR 4 worker(i) 

它产生5个并发的求值,等价于:

 PAR farmer() PAR worker(0) worker(1) worker(2) worker(3) 

参见

引用

  1. ^ occam 2.1 Reference Manual (PDF). SGS-Thomson Microelectronics Ltd. 1995-05-12 [2020-05-05]. (原始内容 (PDF)于2020-08-01).  Inmos document 72 occ 45 03
  2. ^ Edsger W. Dijkstra, Guarded commands, nondeterminacy and formal derivation of programs. (页面存档备份,存于互联网档案馆) August 1975. Communications of the ACM.
    Dijkstra, Edsger W. A Discipline of Programming. Prentice Hall. 1976. ISBN 978-0132158718. 
  3. ^ Edsger W. Dijkstra, Cooperating sequential processes (页面存档备份,存于互联网档案馆).January 1965.Technical Report EWD-123.

延伸阅读

外部链接

  • Information, compilers, editors and utilities at the WoTUG occam pages(页面存档备份,存于互联网档案馆
  • Compilers, documentation, examples, projects and utilities at the Internet Parallel Computing Archive(页面存档备份,存于互联网档案馆) (no longer maintained)
  • Occam books on Transputer.net(页面存档备份,存于互联网档案馆
  • The occam-pi language(页面存档备份,存于互联网档案馆).
  • Tock occam compiler(页面存档备份,存于互联网档案馆) – (translator from occam to C from Kent) a Haskell-based compiler for occam and related languages.

本條目部分或全部内容出自以GFDL授權發佈的《自由線上電腦詞典》(FOLDOC)。

occam, 提示, 此条目的主题不是ocaml, 一種并发程式語言, 主要基於通信顺序进程的程式代數, 以及它的許多特色而實作, 它的名稱來自於奥卡姆的威廉提出的奥卡姆剃刀, occam, razor, 原則, 编程范型指令式, 过程式, 并发設計者david, 英语, david, computer, scientist, 實作者inmos, 英语, inmos, 发行时间1983年, 40年前, 1983, 衍生副語言, 英语, 啟發語言通信顺序进程影響語言ease, 英语, ease, programmin. 提示 此条目的主题不是OCaml occam 一種并发程式語言 主要基於通信顺序进程的程式代數 1 以及它的許多特色而實作 它的名稱來自於奥卡姆的威廉提出的奥卡姆剃刀 Occam s razor 原則 occam编程范型指令式 过程式 并发設計者David May 英语 David May computer scientist 實作者Inmos 英语 Inmos 发行时间1983年 40年前 1983 衍生副語言occam p 英语 occam p 啟發語言通信顺序进程影響語言Ease 英语 Ease programming language Go Handel C XCoccam是一種類似於Pascal的指令式过程式編程語言 這個語言於1983年出現 由英國計算機科學家David May 英语 David May computer scientist 以及Inmos 英语 Inmos 公司的科學家 在東尼 霍爾提供顧問意見後 共同研發而成 目录 1 概述 1 1 SEQ 1 2 ALT 1 3 PAR 1 4 复制 2 参见 3 引用 4 延伸阅读 5 外部链接概述 编辑在下列例子中 缩进和格式对于分析代码是关键性的 表达式以行结束来终止 表达式的列表需要在缩进的相同水平上 这个特征叫做越位规则 也能在其他语言比如Haskell和Python中见到 occam有指令式语言的基本要素和常规构造 变量 数据类型 表达式 条件构造IF 选择构造CASE 重复构造WHILE 作为命名进程的过程 和作为值过程的函数 过程不可以递归 在进程之间的通信使用命名的通道完成的 通道是有类型的 定义了两个进程间的通信协议 可以作为参数传递给过程 可以建立通道的阵列 一个进程通过 向一个通道输出数据 而另一个进程用 从它输入数据 输入和输出不能进行 直到另一端已经准备好接受或提供数据 进程在不能进行的情况下 经常称呼为它阻塞在这个通道之上 它不会阻塞其他独立进程的运行 阻塞行为不会是自旋 spin 或轮询 poll 而会是其他机制如等待 wait 挂起 hang 或让位 yield 下举一例 其中c是变量 keyboard c screen c occam还有对应通信顺序进程的如下构造和机制 SEQ 编辑 SEQ 顺序构造 介入要被顺序求值的表达式的一个列表 顺序执行不是隐含的 大多数其他语言无这种显式构造 例如 SEQ x x 1 y x x ALT 编辑 ALT交替 英语 Alternation formal language theory alternation 构造 指定有守卫的命令的一个列表 守卫 guard 起源于Edsger W Dijkstra在1976年提出的守卫命令语言 2 是一个布尔条件和一个输入表达式的组合 二者都是可选的 其条件为真并且输入通道已经就绪的守卫是成功的 选择一个成功的交替者 alternative 来执行 如果没有成功者则等待 如果有多个成功 语言不明确规定会执行其中哪一个 这不同于选择构造 例如 ALT count1 lt 100 amp c1 data SEQ count1 count1 1 merged data count2 lt 100 amp c2 data SEQ count2 count2 1 merged data status request SEQ out count1 out count2 它将从通道c1或c2读取数据 哪个就绪了都行 并把它传递到叫作合并的通道 如果countN达到100 从对应通道的读取将停用 在叫作状态的通道读取要求 将通过输出这些计数来回答 PAR 编辑 PAR 并行 parallel 构造 开始一个可以被并发 concurrent 求值的表达式的列表 并行构造可溯源至Edsger W Dijkstra在1965年提出的 协同顺序进程 cooperating sequential processes 3 例如 PAR p q 复制 编辑 构造SEQ IF ALT PAR 都是可以复制的 复制的PAR的例子 PAR farmer PAR i 0 FOR 4 worker i 它产生5个并发的求值 等价于 PAR farmer PAR worker 0 worker 1 worker 2 worker 3 参见 编辑XC 编程语言 它基于occam但具有C风格语法 Handel C 并发编程语言引用 编辑 occam 2 1 Reference Manual PDF SGS Thomson Microelectronics Ltd 1995 05 12 2020 05 05 原始内容存档 PDF 于2020 08 01 Inmos document 72 occ 45 03 Edsger W Dijkstra Guarded commands nondeterminacy and formal derivation of programs 页面存档备份 存于互联网档案馆 August 1975 Communications of the ACM Dijkstra Edsger W A Discipline of Programming Prentice Hall 1976 ISBN 978 0132158718 Edsger W Dijkstra Cooperating sequential processes 页面存档备份 存于互联网档案馆 January 1965 Technical Report EWD 123 延伸阅读 编辑Roscoe Andrew William Hoare Charles Antony Richard The Laws of Occam Programming Programming Research Group Oxford University 1986 2020 05 05 原始内容存档于2012 12 07 外部链接 编辑Information compilers editors and utilities at the WoTUG occam pages 页面存档备份 存于互联网档案馆 Compilers documentation examples projects and utilities at the Internet Parallel Computing Archive 页面存档备份 存于互联网档案馆 no longer maintained Occam books on Transputer net 页面存档备份 存于互联网档案馆 The occam pi language 页面存档备份 存于互联网档案馆 Tock occam compiler 页面存档备份 存于互联网档案馆 translator from occam to C from Kent a Haskell based compiler for occam and related languages 本條目部分或全部内容出自以GFDL授權發佈的 自由線上電腦詞典 FOLDOC 取自 https zh wikipedia org w index php title Occam amp oldid 73519413, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。