Lambda the Ultimate

inactiveTopic Interview with Robin Milner
started 11/28/2003; 5:09:01 AM - last post 12/1/2003; 2:34:12 PM
Ehud Lamm - Interview with Robin Milner  blueArrow
11/28/2003; 5:09:01 AM (reads: 12311, responses: 5)
Interview with Robin Milner
(via Dominic in the LtU discussion group)

A long and interesting interview with Robin Milner. A lot of questoins are related to programming languages, naturally. But my favorites are:

Was this a childhood dream of yours?

No it wasn't a childhood dream of mine. Absolutely not! In particular, I didn't have a childhood dream to move sand. What we were doing was digging holes in the sand.


You didn't have a PhD at the time?

No, I never had a PhD.

But Caml, petri-nets, CCS, pi-calculus, bisimulation are all there.

Read the whole thing.

Posted to general by Ehud Lamm on 11/28/03; 5:11:31 AM

Ehud Lamm - Re: Interview with Robin Milner  blueArrow
11/28/2003; 5:18:11 AM (reads: 666, responses: 0)
Ada had something like the CSP or CCS version of communication, the "alt" command representing waiting for one of several different alternatives to happen, so you could see parallel composition sitting in there behind the scene if you look at it with a benevolent eye.

That should be the "select" command, I guess. Is this an editing mistake, or is't that Robin doesn't know his Ada?

Ehud Lamm - Re: Interview with Robin Milner  blueArrow
11/29/2003; 5:13:04 AM (reads: 536, responses: 0)
I am particularly interested in the application of things like the Pi-Calculus to biological theory.

Ehud Shapiro (a really nice guy and the author of the best Prolog book out there) does plenty of research on biological systems these days, and the results are very exciting (DNA machines etc.) But what I saw on "Biographs" (Cardelli) wasn't too exciting. I admit, though, that I haven't studied this work carefully yet.


Dominic Fox - Re: Interview with Robin Milner  blueArrow
11/30/2003; 5:05:40 AM (reads: 433, responses: 0)

A useful Pi-Calculus resource is this paper of Milner's here.

Isaac Gouy - Re: Interview with Robin Milner  blueArrow
12/1/2003; 8:42:05 AM (reads: 322, responses: 0)
By that time my main effort was definitely in concurrency, trying to understand concurrency intellectually. I'm beginning to regard it as more of a modelling exercise than a language exercise. We are modelling what happens in the world, like Petri modelling office processes, if you like. We are not looking for the smallest set of primitives that can make sense of computation. In fact, we are in a state of tension: we are looking for a small set of primitives, but they have to fit well with what goes on, not only microscopically, but also macroscopically, with what goes on in the world.

That was to me the challenge: picking communicational primitives which could be understood in systems at a reasonably high level as well as in the way these systems are implemented at a very low level. To some extent I think we have succeeded. In CCS and CSP the communicational primitives are robust with change of level of abstraction to some extent. But still, the emphasis ought to be on modelling what happens in real systems, whether they are human-made systems like operating systems, or whether they exist already. There's a subtle change from the Turing-like question of what are the fundamental, smallest sets of primitives that you can find to understand computation. I think some of that applies in concurrency, like naming: what is the smallest set of primitives for naming? So some of that applies. But as we move towards mobility, understanding systems that move about globally, you need to commit yourself to a richer set of semantic primitives. I think we are in a terrific tension between (a) finding a small set of primitives and (b) modelling the real world accurately.

Dominic Fox - Re: Interview with Robin Milner  blueArrow
12/1/2003; 2:34:12 PM (reads: 300, responses: 0)

A little while back, Ehud posted a link to this paper of Russell Ackoff's. One of the things that caught my eye in that paper was Ackoff's characterisation, early on, of the "world view and science of the Machine Age" as reductionist. Ackoff characterises reductionism as follows:

Machine-Age man, who believed in the possibility of complete understanding, also believed it could be derived from understanding ultimate indivisible parts, elements. The doctrine based on these beliefs is called reductionism. Its many manifestations are familiar; for example atoms, chemical elements, cells, directly observables, basic needs, instincts, phonemes and so on. Elements were the holy grail of the analytical crusade.

Now, if we characterise the search for a "small set of primitives" sufficient to "make sense of computation" as a search for elements in this sense, then we can identify a reductionist tendency in computer science as the tendency to regard the specification of some ideal kernel language ( = collection of computational primitives) as the necessary (and elusive) ground of any subsequent theorising about computation.

Ackoff goes on to describe "synthetic or systems thinking" as the successor to machine-age thinking, and characterises systems thinking as a "process" in which

First, a thing to be understood is conceptualized as a part of one or more larger wholes, not as a whole to be taken apart. The understanding of the larger, containing system is sought. Finally, the system to be understood is explained in terms of its role or function in the containing system.

The "containing system" here is, I think, Milner's "real world"; but the relationship between a programming language, as a semantic system (though not just that), and the "real world" would not necessarily be one of correspondance, approximation or "modelling" but rather one of aptness or fitness for purpose. That is, a programming system is not a representation of some piece of the real world, but a subsystem within a larger, "containing system". As the containing system is both materially and politically complex, there may be no single ideal "best fit" subsystem, but rather a number of tools suitable for a number of different purposes.

I'm skeptical, as it happens, about the notion that "systems thinking" replaces "analytical thinking", or that the former yields true "understanding" whilst the other yields only "know-how". Recently I've been playing around with Oz, which is based on a fairly small and straightforward kernel language but which builds an impressively "rich" semantic system around that kernel. So the "tension" Milner speaks of, between an analytic/reductionist and a systemic/expansionist approach, may be productive (or may not be necessarily as tense as is supposed).