TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Pi Calculus

12 pointsby imbover 11 years ago

3 comments

juliangambleover 11 years ago
To give this some context and some application today:<p>The Pi Calculus is a form of Process Calculus which is a Mathematical tool for modelling concurrent systems. (One might argue that concurrency is still a hard problem in Computer Science - but I&#x27;ll leave that to the reader):<p><a href="http://en.wikipedia.org/wiki/Process_calculus" rel="nofollow">http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Process_calculus</a><p>This led to Robin Milners work on the Calculus of Communicating Systems (CCS). (Milner was trying to invent an automated theorem prover - and invented ML (Haskell precursor) and CCS along the way). Milner rocks.<p><a href="https://en.wikipedia.org/wiki/Calculus_of_Communicating_Systems" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Calculus_of_Communicating_Syst...</a><p>CCS Lead to the PI Calculus (which is what is linked).<p>Communicating Sequential Processes (CSP) also came out of the Process Calculi. (Philip Wadler described CSP as the &#x27;moral equivalent&#x27; of CCS).<p><a href="http://en.wikipedia.org/wiki/Communicating_Sequential_Processes" rel="nofollow">http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Communicating_Sequential_Proces...</a><p>The great thing about CSP is that they&#x27;re used in modern programming languages today to solve concurrency problems in async operations. We see this with the C# compiler and the Async primitive:<p><a href="http://msdn.microsoft.com/en-au/vstudio/jj573641.aspx" rel="nofollow">http:&#x2F;&#x2F;msdn.microsoft.com&#x2F;en-au&#x2F;vstudio&#x2F;jj573641.aspx</a><p>What is even more interesting is that CSP is used in Clojure in core.async. core.async is a macro that writes a state machine around blocking macros. (Similar in function to the C# compiler primitive). The benefit for this for ClojureScript is that you can write concurrent blocking operations that run in a single threaded environment. All this is done not with compiler changes, but with a deep walking macro written by Rich Hickey and Timothy Baldridge.<p><a href="http://www.slideshare.net/borgesleonardo/intro-to-clojures-coreasync" rel="nofollow">http:&#x2F;&#x2F;www.slideshare.net&#x2F;borgesleonardo&#x2F;intro-to-clojures-c...</a><p><a href="http://swannodette.github.io/2013/08/02/100000-processes/" rel="nofollow">http:&#x2F;&#x2F;swannodette.github.io&#x2F;2013&#x2F;08&#x2F;02&#x2F;100000-processes&#x2F;</a><p>So is the Pi Calculus interesting and relevant to today? Yes! (But you have to jump a few links to understand why.)
评论 #6909086 未加载
yodsanklaiover 11 years ago
It&#x27;s a nice model of concurrency that had been extensively studied by researchers but (I believe) never really had much practical impact.<p>Basically, it&#x27;s a very small programming or modeling language based on concurrent message passing with a simple formal semantics. Pretty much in the same way that the lambda calculus is a small language based on functions.<p>There&#x27;s no mainstream programming language based on it, unlike the lambda calculus that inspired LISP, ML and so on...
评论 #6909076 未加载
thewarriorover 11 years ago
I read the whole article and didn&#x27;t understand anything.