Meetup #67 - Communicating Sequential Processes


Details
Over the last year we discussed Actors (https://www.meetup.com/sc-krk/events/114314972/), Agents (https://www.meetup.com/sc-krk/events/116568962/) and Functional Reactive Programming (https://www.meetup.com/sc-krk/events/145931322/). This time we will expand our knowledge of parallel programming techniques by discussing Communicating Sequential Processes - the model that's behind (among others) Go's Goroutines and Clojure's core.async.
Article to read: Communicating Sequential Processes by C. A. R. Hoare (http://www.cs.cmu.edu/~crary/819-f09/Hoare78.pdf)
Abstract from the paper:
This paper suggests that input and output are basic primitives of programming and that parallel composition of communicating sequential processes is a fundamental program structuring method. When combined with a development of Dijkstra's guarded command, these concepts are surprisingly versatile. Their use is illustrated by sample solutions of a variety of familiar programming exercises.
As always, we will discuss the article over free beer, sponsored by Lunar Logic.
Additional reading (for the interested):
Core.async - Communicating Sequential Processes using Channels, in Clojure (http://www.infoq.com/presentations/core-async-clojure)
The examples from Hoare's paper implemented in Go. (http://godoc.org/github.com/thomas11/csp)
Effective Go - Goroutines (http://golang.org/doc/effective_go.html#sharing)
Communicating Sequential Processes (2001 book by C. A. R. Hoare) (http://www.usingcsp.com/cspbook.pdf)

Meetup #67 - Communicating Sequential Processes