通信顺序进程:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
无编辑摘要
第1行: 第1行:
{{noteTA|G1=IT}}
{{noteTA|G1=IT}}
'''交-{}-談循序程式'''({{lang-en|Communicating sequential processes}},縮寫為CSP),又譯為'''通-{}-信顺序进程'''、'''交換訊息的循序程式''',一種[[形式語言]],用來描述[[并发性|並行性系統]]間進行互動的[[模式]]。最早起源於[[東尼·霍爾]]在1978年發表論文。交談循序高度影響了[[Occam]]的設計,也影響了[[Limbo (程式语言)|Limbo]][[Go]]等程式語言。
在[[计算机科学]]中,'''交-{}-談循序程式'''({{lang-en|Communicating sequential processes}},縮寫為CSP),又譯為'''通-{}-信顺序进程'''、'''交換訊息的循序程式''',一種[[形式語言]],用來描述[[并发性|並行性系統]]間進行互動的[[模式]]<ref name="roscoe">{{cite book|first=A. W.|last=Roscoe|authorlink=Bill Roscoe|title=The Theory and Practice of Concurrency|publisher=[[Prentice Hall]]|isbn=978-0-13-674409-2|year=1997|url-access=registration|url=https://archive.org/details/theorypracticeof00rosc}}</ref>它是叫做进程代数或[[进程演算]]的关于[[并发计算|并发]]的数学理论家族的一员,基于了通过{{en-link|通道 (编)|Channel (programming)|通道}}的[[消息传递]]]。CSP高度影響了[[Occam]]的設計<ref name="roscoe" /><ref>{{cite book|last=INMOS|authorlink=INMOS|url=http://www.wotug.org/occam/documentation/oc21refman.pdf|title=occam 2.1 Reference Manual|publisher=SGS-THOMSON Microelectronics Ltd.|date=1995-05-12}}, INMOS document 72 occ 45 03</ref>,也影響了[[Limbo (程式语言)|Limbo]]<ref>{{cite web|title=Resources about threaded programming in the Bell Labs CSP style|url=http://swtch.com/~rsc/thread/|accessdate=2010-04-15}}</ref>、[[RaftLib]]、[[Go]]<ref name="golang">{{cite web |title=Language Design FAQ: Why build concurrency on the ideas of CSP? |url=http://golang.org/doc/go_faq.html#csp}}</ref>、 [[Crystal (编程语言)|Crystal]]和[[Clojure]]的core.async<ref name="clojure-core-async">{{cite web |title=Clojure core.async Channels |url=https://clojure.org/news/2013/06/28/clojure-clore-async-channels#_history}}</ref>等程序语言。


交談循序程式最早出現於[[東尼·霍爾]]在1978年發表的論文,但在之後又經過一系列的改善。在出現之後,就成為描敍並行程式設計中常用的形式語言。
CSP最早出現於[[東尼·霍爾]]在1978年發表的論文<ref name="hoare1978">{{cite journal|last=Hoare
|first=C. A. R.
|authorlink=C. A. R. Hoare
|title=Communicating sequential processes
|journal=[[Communications of the ACM]]
|volume=21
|issue=8
|pages=666–677
|year=1978
|doi=10.1145/359576.359585}}</ref>,但在之後又經過一系列的改善<ref name="25years">{{cite book
|last=Abdallah | first = Ali E.| last2 = Jones | first2 = Cliff B. | last3 = Sanders | first3 = Jeff W.
|title=Communicating Sequential Processes: The First 25 Years
|series=[[LNCS]]
|volume=3525
|publisher=Springer
|year=2005
|url=https://www.springer.com/computer/theoretical+computer+science/foundations+of+computations/book/978-3-540-25813-1| isbn = 9783540258131}}</ref>。CSP已经实际的应用在工业之中,作为一种工具[[形式规定|规定和验证]]各种不同系统的并发状况,比如T9000 [[Transputer]]<ref name="barrett">{{cite journal|last=Barrett
|first=G.
|title=Model checking in practice: The T9000 Virtual Channel Processor
|journal=IEEE Transactions on Software Engineering
|volume=21
|issue=2
|pages=69–78
|year=1995
|doi=10.1109/32.345823}}</ref>,还有安全电子商务系统<ref name="hall">{{cite journal|last = Hall
|first=A
| first2 = R. | last2 = Chapman
|url=http://www.anthonyhall.org/c_by_c_secure_system.pdf
|title=Correctness by construction: Developing a commercial secure system
|journal=IEEE Software
|volume=19
|issue=1
|pages=18–25
|year=2002
|doi=10.1109/52.976937|citeseerx=10.1.1.16.1811
}}</ref>。CSP的理论自身仍是活跃研究的主题,包括了增加它的实际可应用性的范围(比如增加可以跟踪分析的系统的规模)<ref>{{Cite journal| last = Creese | first = S.|title=Data Independent Induction: CSP Model Checking of Arbitrary Sized Networks|version=D. Phil.|publisher=[[Oxford University]]|year=2001}}</ref>。


== 历史 ==
== 历史 ==

2020年5月3日 (日) 10:17的版本

计算机科学中,交談循序程式(英語:Communicating sequential processes,縮寫為CSP),又譯為通信顺序进程交換訊息的循序程式,是一種形式語言,用來描述並行性系統間進行互動的模式[1]。它是叫做进程代数或进程演算的关于并发的数学理论家族的一员,基于了通过通道消息传递]。CSP高度影響了Occam的設計[1][2],也影響了Limbo[3]RaftLibGo[4]CrystalClojure的core.async[5]等程序语言。

CSP最早出現於東尼·霍爾在1978年發表的論文[6],但在之後又經過一系列的改善[7]。CSP已经实际的应用在工业之中,作为一种工具规定和验证各种不同系统的并发状况,比如T9000 Transputer[8],还有安全电子商务系统[9]。CSP的理论自身仍是活跃研究的主题,包括了增加它的实际可应用性的范围(比如增加可以跟踪分析的系统的规模)[10]

历史

在Hoare的1978年论文中提出的CSP版本在本质上是一种并发编程语言而非一种进程演算。它有着与后来版本的CSP在实质上不同的语法,不拥有数学上定义的语义[11],不能体现无界非确定性英语unbounded nondeterminism[12]。最初的CSP程序被写为一组固定数目的顺序进程的并行复合(composition),它们相互之间严格通过同步消息传递来进行通信。与之相反,后来版本的CSP,每个进程都被赋予了一个显式的名字,通过指定意图发送或接收的进程的名字,定义消息的来源和目标。例如,进程

COPY = *[c:character; west?c → east!c]

重复的从叫做west的一个进程接收一个字符,接着将这个字符发送到叫做east的进程。并行复合:

[west::DISASSEMBLE || X::COPY || east::ASSEMBLE]

将名字west赋予至DISASSEMBLE进程,名字XCOPY进程,eastASSEMBLE进程,并发的执行这三个进程[6]

在最初版本的CSP出版之后,Hoare、Stephen Brookes和A. W. Roscoe发展并精炼了CSP的理论,使之成为现代的进程代数形式。将CSP发展成进程代数的方式受到Robin Milner关于通信系统演算英语Calculus of Communicating Systems(CCS)的著作的影响,反之亦然。CSP的理论上的版本最初提出于Brookes、Hoare和Roscoe1984的文章[13],和后来1985年出版的Hoare的书籍《通信顺序进程》中[11]。CSP的理论在Hoare的书籍出版之后仍继续有细小的变更。这些变更大多为CSP进程分析和验证的自动工具的出现所推动。Roscoe的《并发的理论和实践》描述了更新版本的CSP[1]

引用

  1. ^ 1.0 1.1 1.2 Roscoe, A. W. The Theory and Practice of Concurrency需要免费注册. Prentice Hall. 1997. ISBN 978-0-13-674409-2. 
  2. ^ INMOS. occam 2.1 Reference Manual (PDF). SGS-THOMSON Microelectronics Ltd. 1995-05-12. , INMOS document 72 occ 45 03
  3. ^ Resources about threaded programming in the Bell Labs CSP style. [2010-04-15]. 
  4. ^ Language Design FAQ: Why build concurrency on the ideas of CSP?. 
  5. ^ Clojure core.async Channels. 
  6. ^ 6.0 6.1 Hoare, C. A. R. Communicating sequential processes. Communications of the ACM. 1978, 21 (8): 666–677. doi:10.1145/359576.359585. 
  7. ^ Abdallah, Ali E.; Jones, Cliff B.; Sanders, Jeff W. Communicating Sequential Processes: The First 25 Years. LNCS 3525. Springer. 2005. ISBN 9783540258131. 
  8. ^ Barrett, G. Model checking in practice: The T9000 Virtual Channel Processor. IEEE Transactions on Software Engineering. 1995, 21 (2): 69–78. doi:10.1109/32.345823. 
  9. ^ Hall, A; Chapman, R. Correctness by construction: Developing a commercial secure system (PDF). IEEE Software. 2002, 19 (1): 18–25. CiteSeerX 10.1.1.16.1811可免费查阅. doi:10.1109/52.976937. 
  10. ^ Creese, S. Data Independent Induction: CSP Model Checking of Arbitrary Sized Networks. D. Phil. Oxford University. 2001. 
  11. ^ 11.0 11.1 Hoare, C. A. R. Communicating Sequential Processes. Prentice Hall. 1985. ISBN 978-0-13-153289-2. 
  12. ^ Clinger, William. Foundations of Actor Semantics. Mathematics Doctoral Dissertation. MIT. June 1981. hdl:1721.1/6935. 
  13. ^ Brookes, Stephen; Hoare, C. A. R.; Roscoe, A. W. A Theory of Communicating Sequential Processes. Journal of the ACM. 1984, 31 (3): 560–599. doi:10.1145/828.833. 

外部連結