通信顺序进程:修订间差异
小无编辑摘要 |
小 →top |
||
第1行: | 第1行: | ||
{{noteTA|G1=IT}} |
{{noteTA|G1=IT}} |
||
'''交-{}-談循序程式'''({{lang-en|Communicating sequential processes}},縮寫為CSP),又譯為'''通-{}-信顺序进程'''、'''交換訊息的循序程式''',一種[[形式語言]],用來描述[[并发性|並行性系統]]間進行互動的[[模式]]。 |
在[[计算机科学]]中,'''交-{}-談循序程式'''({{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>等程序语言。 |
||
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]、RaftLib、Go[4]、 Crystal和Clojure的core.async[5]等程序语言。
CSP最早出現於東尼·霍爾在1978年發表的論文[6],但在之後又經過一系列的改善[7]。CSP已经实际的应用在工业之中,作为一种工具规定和验证各种不同系统的并发状况,比如T9000 Transputer[8],还有安全电子商务系统[9]。CSP的理论自身仍是活跃研究的主题,包括了增加它的实际可应用性的范围(比如增加可以跟踪分析的系统的规模)[10]。
历史
在Hoare的1978年论文中提出的CSP版本在本质上是一种并发编程语言而非一种进程演算。它有着与后来版本的CSP在实质上不同的语法,不拥有数学上定义的语义[11],不能体现无界非确定性[12]。最初的CSP程序被写为一组固定数目的顺序进程的并行复合(composition),它们相互之间严格通过同步消息传递来进行通信。与之相反,后来版本的CSP,每个进程都被赋予了一个显式的名字,通过指定意图发送或接收的进程的名字,定义消息的来源和目标。例如,进程
COPY = *[c:character; west?c → east!c]
重复的从叫做west
的一个进程接收一个字符,接着将这个字符发送到叫做east
的进程。并行复合:
[west::DISASSEMBLE || X::COPY || east::ASSEMBLE]
将名字west
赋予至DISASSEMBLE
进程,名字X
至COPY
进程,east
至ASSEMBLE
进程,并发的执行这三个进程[6]。
在最初版本的CSP出版之后,Hoare、Stephen Brookes和A. W. Roscoe发展并精炼了CSP的理论,使之成为现代的进程代数形式。将CSP发展成进程代数的方式受到Robin Milner关于通信系统演算(CCS)的著作的影响,反之亦然。CSP的理论上的版本最初提出于Brookes、Hoare和Roscoe1984的文章[13],和后来1985年出版的Hoare的书籍《通信顺序进程》中[11]。CSP的理论在Hoare的书籍出版之后仍继续有细小的变更。这些变更大多为CSP进程分析和验证的自动工具的出现所推动。Roscoe的《并发的理论和实践》描述了更新版本的CSP[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.
- ^ INMOS. occam 2.1 Reference Manual (PDF). SGS-THOMSON Microelectronics Ltd. 1995-05-12., INMOS document 72 occ 45 03
- ^ Resources about threaded programming in the Bell Labs CSP style. [2010-04-15].
- ^ Language Design FAQ: Why build concurrency on the ideas of CSP?.
- ^ Clojure core.async Channels.
- ^ 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.
- ^ Abdallah, Ali E.; Jones, Cliff B.; Sanders, Jeff W. Communicating Sequential Processes: The First 25 Years. LNCS 3525. Springer. 2005. ISBN 9783540258131.
- ^ 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.
- ^ 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.
- ^ Creese, S. Data Independent Induction: CSP Model Checking of Arbitrary Sized Networks. D. Phil. Oxford University. 2001.
- ^ 11.0 11.1 Hoare, C. A. R. Communicating Sequential Processes. Prentice Hall. 1985. ISBN 978-0-13-153289-2.
- ^ Clinger, William. Foundations of Actor Semantics. Mathematics Doctoral Dissertation. MIT. June 1981. hdl:1721.1/6935.
- ^ 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.
外部連結
- Hoare, C. A. R. Communicating Sequential Processes (PDF). Prentice Hall International. 2004 [1985]. ISBN 0131532715.
这是一篇電腦科學小作品。你可以通过编辑或修订扩充其内容。 |