occam

✍ dations ◷ 2025-07-11 01:50:16 #occam

occam,一种并发编程语言,主要基于通信顺序进程的程序代数,以及它的许多特色而实现。它的名称来自于奥卡姆的威廉提出的奥卡姆剃刀(Occam's razor)原则。

occam是一种类似于Pascal的指令式过程式编程语言。这个语言于1983年出现,由英国计算机科学家David May(英语:David May (computer scientist)),以及Inmos(英语:Inmos)公司的科学家,在东尼·霍尔提供顾问意见后,共同研发而成。

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

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

 keyboard ? c screen ! c

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

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

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

ALT

ALT交替(英语:Alternation (formal language theory))(alternation)构造,指定有守卫的命令的一个列表。守卫(guard)起源于Edsger W. Dijkstra在1976年提出的守卫命令语言,是一个布尔条件和一个输入表达式的组合(二者都是可选的)。其条件为真并且输入通道已经就绪的守卫是成功的。选择一个成功的交替者(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 并行(parallel)构造,开始一个可以被并发(concurrent)求值的表达式的列表。并行构造可溯源至Edsger W. Dijkstra在1965年提出的“协同顺序进程”(cooperating sequential processes),例如:

 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
  • 并发编程语言

引用

  1. ^ occam 2.1 Reference Manual (PDF). SGS-Thomson Microelectronics Ltd. 1995-05-12 . (原始内容存档 (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.

延伸阅读

  • Roscoe, Andrew William; Hoare, Charles Antony Richard. The Laws of Occam Programming. Programming Research Group, Oxford University. 1986 . (原始内容存档于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)。

相关

  • 循环性情感症循环性情感症(Cyclothymia)是情感障碍之一、躁郁症的一种形式。在极性病谱中有定义此症。具体而言,此疾患属于较轻微形式的第二型双极性疾患,伴随着时常在欢欣鼓舞与低落沮丧之
  • 燕赵都市报燕赵都市报是隶属于河北日报报业集团的一家都市类报纸,它创刊于1996年,到现在已经有了将近100万的日发行量。燕赵都市报在河北省各市发行,其中在省会石家庄和唐山市各有一个地
  • 深地质处置深地质处置指在稳定的地质构造中开掘的放射性核废料存放场所,一般在地下300米以下。核废料形态、其包装、场地的密封和防渗以及地质条件等诸多因素决定了储放场所成功与否。
  • 伊东祐亨伊东祐亨(1843年6月9日-1914年1月16日)日本军人,海军大将、元帅。曾任联合舰队司令长官,参与甲午战争。后又参与日俄战争。1907年封伯爵。天保14年(1843年)5月12日生,日本华族(贵族),曾
  • 大方南站大方南站,位于中华人民共和国贵州省毕节市大方县,是隆黄铁路上的火车站,建于2015年,2016年10月24日开通客运业务,由成都铁路局管辖。
  • 巴洛德巴洛德(Balod),是印度恰蒂斯加尔邦Durg县的一个城镇。总人口21044(2001年)。该地2001年总人口21044人,其中男性10687人,女性10357人;0—6岁人口2759人,其中男1446人,女1313人;识字率73.
  • 和你在一起《和你在一起》()是中国知名导演陈凯歌2002年的作品,叙述一个父亲带着身为小提琴天才的儿子参加小提琴比赛所发生的事,由少年小提琴演奏家唐韵、刘佩琦、陈红、王志文主演,荣获中
  • 端强实业端强实业股份有限公司(Multipower Enterprise Corp.),台湾企业,于1981年成立,为一家以营养保健食品为主要业务的公司。自2010年起正式加入生达化学制药集团。在1984年及1986年分
  • 哈万士·巴克里阿哈默德·哈万士·宾·巴克里 (马来语:Ahmad Hazwan bin Bakri, 1991年6月19日-) 是出生于纳闽,马来西亚足球运动员,司职前锋或边锋。现时效力于马来西亚超级足球联赛俱乐部柔佛DT同时也代表马来西亚国家足球队参加国际比赛。哈万士·巴克里被吉隆坡的球探发现亚发掘,于是俱乐部邀请他加入青年队,正式展开他的职业生涯。2016年12月23日,哈万士·巴克里与柔佛DT签下为期2年的合约,但并未对外透露转会费,当时媒体估计转会费为65万至100万马币之间。 2017年1月20日,哈万士·巴
  • 昭慈圣献皇后昭慈圣献皇后(1073年-1131年),宋朝人,孟姓,洺州(约在今中国河北省邯郸市永年区)人,是宋哲宗的第一位皇后,曾二度被废、二度复位,并二次于国势危急之下实行垂帘听政。孟皇后出身世家,是曾任宋朝眉州防御使、马军都虞候、赠太尉、赠魏王孟元的曾孙女。宋哲宗幼年即帝位,后来逐渐长大,祖母太皇太后高滔滔替哲宗选了美貌的世家之女百余人入宫,孟皇后是其中之一,当年孟皇后才十六岁。元祐七年(1092年),太皇太后高氏谕宰执:“孟氏子能执妇礼,宜正位中宫。”遂将孟氏封后。宋朝王爵列表好景不常,宋哲宗宠爱上美貌绝伦、姿