Lets start from lambda calculus as we all know lambda calculus is the base of functional programming many functional programming like - Haskell,Erlang are totally based on Lambda calculus(Where everything are in the form of function).
So what is the need of process calculus :
Seeing the modernisation of computer science, we want everything to be as much concurrent in our system as possible. Parallelism is the term which usually confused us with concurrency, the main difference is that in parallel programing we must have more then 1 resources and different process execute on different resource. But In concurrent system we can get feel of parallelism even from one resource. Actually only one process execute at a time but the processes executes in time slice manner.
Hence to describe the architecture of a softwares formally, we need some formal architectural description language. Many modelling language are used but the popular ones among those are - CSP,CCS, LOTOS and Pi calculus. Pi calculus is the one which i will be focussing here together with CCS.
Calculus of communicating System(CCS) given by R. MIlner views the system in the form of component and connection. Component, agent, process are the terms which often used interchangeably. CCS works very fine untill we have our system fixed but it does'nt work for mobile system where the connection between the agent may change dynamically, or new channels may be created according to need. Pi calculus is the one which works here for us. In Pi calculus we can transfer the name of one channel over other channel. For e.g.
(y) x(y,z).'z
This process accept two parameter on channel x(x is free name here namely), and store them on y and z, y is bound variable here which is used just to accept input in it and to forword via port z the output x and y.
Hence here we are transfering one channel name over other channel, this is the power of Pi calculus which gives it edges over all earlier descriptive language.
The tool for testing Pi calculus is MWB(Mobility workbench) which tests the two equallaence namely strong bisimulation and weak bisimulation.
This tool is analogous to the one CWB(Concurreny Work bench) used for CCS,CSP,LOTOS. But it not at all imitate things from MWB. But this tool is still under development. I guess we can't test properties here like we do in MWB using mu-calculus and CTL/GCTL.
So everything in pi-calculus has to be treated as a process even data also.The power of Pi-calculus enable it to repersents three of the building block concept of programming i.e. lambda calculus, Object oriented programming and imperative programming. We can show various data structues like lists using Pi calculus but the key thing is that everything here has to be as one process like class name, object in OOP and list and data in Data structure.
There are programming languages also which implements Pi calculus constructs. Pict is one of them.
No comments:
Post a Comment