Check out David Reed's 1978 MIT thesis "NetOs" about just such issues.

Cheers,

Alan




________________________________
From: David Barbour <dmbarb...@gmail.com>
To: Fundamentals of New Computing <fonc@vpri.org>
Sent: Wed, July 27, 2011 12:54:48 PM
Subject: Re: [fonc] Physics and Types

Very nice survey, Chris. Thank you for it.


Many people consider that 'reversibility' will become hugely important for 
pushing hardware and software much further, e.g. with respect to energy 
conservation, which is important for pushing computers ever smaller. An 
excellent paper on this subject was on LtU not so long, which you linked but 
did 
not relate to reversibility: http://lambda-the-ultimate.org/node/4120 . It also 
describes some of the other systems you mention (e.g. billiard ball computers). 

Casey,

Physics has a very large influence on a lot of language designs and programming 
models, especially those oriented around concurrency and communication. We 
cannot fight physics, because physics will ruthlessly violate our abstractions 
and render our programming models unscalable, or non-performant, or 
inconsistent 
(pick two). 

But we want programming to be easier than physics. We need composition (like 
Lego bricks), integration (without 'impedance mismatch'), open extension, and 
abstraction (IMO, in roughly that order). So the trick is to isolate behaviors 
that we can utilize and feasibly implement at arbitrary scales (small and 
large), yet that support our other desiderata. 

Language design is, in a sense, related to physical engineering.

My language design has been inspired by physics in the following properties:
* temporal semantics; explicit model of time [1]
* continuous timed values, i.e. ability to model analog phenomenon.
* fields; each behavior is a potentially infinite 'field' that can only be 
sampled at specific 'points'. Simple variables are modeled as fields with only 
one point: `()`.
* observer-effect; sampling a field can influence it, there is no 'const' 
accessor. This is actually the basis for all communication and side-effects in 
my model. [2]


[1] My impression, when I studied physics, was that time is an illusion, 
experienced by an observer due to relative motion. But it turns out that 
programming in terms of behavior over time (temporal semantics) is a lot easier 
than programming in terms of relative motion (e.g. actors model), especially 
for 
consistency. I initially had some concerns about 'relativity' (the fact that 
different observers have different clocks), but I eventually resolved these 
concerns by use of a 'duration-coupling' constraint.

[2] Observer-effect is inspired more by psychology than by physics, but the 
physical relationship holds. The idea is that systems under observation can 
behave differently based on the pressures, expectations, or demands of their 
observers. 

Chris,

On Wed, Jul 27, 2011 at 10:41 AM, Chris Warburton <chriswa...@googlemail.com> 
wrote:
Locality: Mentioned in passing for relativity, but locality is a very
>useful property that holds for most Physics: stuff happens because of
>stuff nearby.

This seems an incomplete observation. If we include 'physics' itself in the 
equation, we could make different things happen by adjusting the rules 
governing 
them. I.e. behavior happens because stuff exists in a governing field or 
environment.

A common problem encountered in developing OO simulations, games, etc. is that 
we ascribe rules directly to the objects, then later find the model inflexible 
and stubborn when we want to tweak the rules. We can solve this by modeling 
each 
object with a reference to its environment, but the abstraction seems wrong - 
the idea of a bunch of objects 'voluntarily' obeying a rules set doesn't seem 
much like physics at all!

 
In computing this would be the equivalent of "globals
>considered harmful". 

I understand space and connectivity to be distinct concepts. Globals are more 
of 
a connectivity issue (i.e. controlling coupling and propagation of effects) 
than 
a space issue. Object capability model, for example, eliminates globals without 
modeling space. 

 
In a, dare I say theological, alternative, the all-powerful text editor seeks 
to 
position each and every character using its ineffable algorithms, and is thus 
impossible to reason about because one cannot know the mind of the text editor.
>

In between, characters are positioned based on a set of simple rules and 
constraints provided by the text-editor or an intermediate 'canvas' object. 


>As far as something like a type system based on Physics goes, I think
>that would be a bit messy.

Linear types are one of the physics-inspired abstractions that work quite 
nicely. And I suspect physics could severely affect how we model state, error 
handling, and incremental computation. 


>Physics tries to work out the inconceivable ways that the Universe actually 
>behaves by systematically throwing away all of our intuitions that turn out to 
>be wrong. With a computer system, we want the opposite; we want a system that 
>requires as little study as possible, and for which our intuitions are 
>accurate.
>

Agreed! 

Programming to be intuitive must: (a) be relatively simple, (b) easily become 
familiar with exposure, and (c) be exposed to developers from a young age. 
Point 
(c) suggests a good programming model should be very effective for modeling, 
mashing, and extending UI, multi-media, augmented reality, command-and-control, 
and games.

I think dataflow programming, including support for control signals, is the 
only 
general class of paradigms that comes close. And my particular brand of it is 
most promising ;-).
 
Regards,

Dave
_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc

Reply via email to