On Sat, 26 May 2007 13:02:05 -0700, Lex Spoon lex@lexspoon.org wrote:
I am not so sure, however, that we have found even great ways to *think* about parallel programs.
Actually, I think programming in parallel could be easier than programming serially, given suffiicient help from the tool.
When I was fooling around with language designs, one thing that occurred to me was that, when we program serially, we imply that we =care= what order things are executed in, when very often we don't really. Order has a implied significance which can actually be deceptive. Worse, it can have a significance that is hidden.
For example, we could have some initialize code:
aVar := someClass new. anotherVar := someOtherClass new.
Does anotherVar need aVar to be initialized before it can be initialized? Good programming practice sez "it shouldn't" but play along. The point is, there's no way to take say "I don't care what order things occur in, as long as THIS is done before THAT begins."
You could program in two dimensions, almost like music, where everything on a particular line had to be done sequentially, while things that were vertically arranged (rather than being chords, as in music) could be done in any order. Synchronization points could be set up vertically (almost like measure bars).
------serial execution-----> | ] | ] parallel ] | synch point | ] | ]
I think it would actually clarify things.