2016년 4월 19일 화요일

CSP란 무엇인가?

Communicating Sequential Processes 가 무엇인가? 무엇때문에 내가 관심을 가지고 있고 무엇을 기대하고 있는가에 대한 간단한 소개.

위키피디아에서는 CSP를 다음과 같이 소개하고 있다.

In computer science, communicating sequential processes (CSP) is a formal language for describing patterns of interaction in concurrent systems. It is a member of the family of mathematical theories of concurrency known as process algebras, or process calculi, based on message passing via channels.

bullet item으로 만들어보면,

  • formal language
  • describing patterns of interaction in concurrent systems.
  • process algebras, process calcui
  • based on message passing via channels.

CSP 로 기술할 수 있는 세계는 동시성을 가진 object 들이 message passing 방식으로 커뮤니케이션하는 세계이다. CSP는 이러한 상황을 formal language 로 묘사할 수 있게 해준다.

다른 한편으로는 이것은 process algebra 를 가능하게 한다. 어떤 시스템에서 데드락이 발생한다/하지 않는다와 같은 판정을 수식으로 풀어서 증명할 수 있게 해주는 도구가 된다.


만약에 CSP에 충실한 언어가 있다면, 동시성이 발생하는 어떤 시스템을 CSP로 기술하고, 거기서부터 시작해서 수학적으로 문제가 발생할 소지가 있는지를 검증한 후, 이것을 프로그래밍 코드로 전환할 수 있을 것이다. Go, OCAML 등이 CSP에 강한 영향을 받은 언어로 wikipedia에 이름을 올리고 있다.

이러한 접근이 흥미롭게 들린다면 이 책은 읽어볼만한 가치가 있을 것이다.

댓글 없음:

댓글 쓰기