trying to explain some words

Paul Dufresne dufrp@oricom.ca
Thu, 15 Jul 1999 19:06:49 -0400


On Thu, Jul 15, 1999 at 08:47:04PM +0200, LeDudu@gmx.net wrote:
> Hi there
> Cool all that thing bout CALM JOE and Pi Calcululus, but what does it
> mean???
First, it is CAML not CALM.
It is not JOE, but join-calculus.

CAML is an implementation of the ML
language. ML is a functionnal language, but is not that far of
plain procedural language that you may know like C. It has normal
looping, and you can have affectations (like a=4). But a functionnal
language is different from procedural language like C,C++,Pascal, etc.
by the fact that you can have functions that receive functions as
parameters, return them (not just pointers to functions but really
functions), you can store functions in variables, lists, etc.

ML is not object-oriented. ML used to be a big compiler, but
some have made a much less bigger one, CAML. (pronounce like camel).

Later some have made an object-oriented version of it, called OCAML
(Objective CAML).

Functionnal programming langages are based on something that mathematicians
called lambda-calculus. This is merely a mathematical notation that let
you express the fact that you create a function, that you execute it 
(function application), etc. Lambda Calculus appeared in mathematics in
about 1920, but it is only 'recently' that some programming language
begin to allow all what the lambda calculus let you do.

PI calculus is a mathematical notation that let you express multiple
process running at the same time and speaking each other through
channels. Pict is a programming language based on Pi-calculus.
Pi-Calculus appeared in 1989 I think.

What Fare was telling me, is that there is a new mathematical-model
called join-calculus that could be seen as a new kind of pi-calculus.
And with it a new language Jo(in-calculus)ML that is a kind of 
ML in which you can easily express communication between process along
channels. Af first glance the main difference with pi-calculus is
that it integrate better with functions in the language (that is
with lambda-calculus, but I may be wrong on that since I am just
beginning to read about it.

In JoML (or was it JoCAML), you can program functions on your machine
that will be able to be called from an other machine elsewhere on the
Internet. This is what the join-calculus have made easier in ML. So,
pi or join-calculus are related to distributed stuff (programs or
databases that have different parts running on different computers on
a network).