Communicating Sequential Processes
ホーアの1978年の論文で提示されたCSPは、プロセス計算というよりも本質的には並行プログラミング言語であった。後のCSPとは構文が著しく異なり、数学的に定義された意味論を持っておらず、無制限の非決定性を表現することはできなかった。本来のCSPでは、並列に動作する有限個の逐次プロセスが同期式のメッセージパッシングで相互に通信するという形式でプログラムを記述していた。その後のCSPとは対照的に、各プロセスには名前が付けられ、メッセージには送信元と送信先の名前が指定されている。たとえば次のプロセス
は、west という名前のプロセスから文字を繰り返し受信し、その文字を east という名前のプロセスに送信する。並列合成
では、west という名前を DISASSEMBLE プロセスに割り当て、X という名前を COPY プロセスに割り当て、east という名前を ASSEMBLE プロセスに割り当て、これらを並行に実行する。
CSP の影響を受けているその他の形式手法や仕様記述言語として、以下のものがある。
Timed CSP, リアルタイムシステム用にタイミング情報を追加したCSP
Receptive Process Theory, 非同期(ブロックしない)送信操作を追加したCSP
Wright, アーキテクチャ記述言語
TCOZ, Timed CSP と Object Z(オブジェクト指向を導入したZ言語)を統合したもの
Circus, Z言語 と CSP を統合したもの
CspCASL, CASL に CSP を統合したもの