Non sequential programming

Matej Kosik kosik at fiit.stuba.sk
Sat May 28 18:34:26 UTC 2005


Hello all,

These times we were playing with a different model of computation to which we all are used to. We believe that before we will be able to create cooperating distributed software (systems/programs) we have to throw away traditional sequential thinking.

Now we are evaluating the prototype of such a programming platform, which is not only convenient (Smalltalk was also convenient) but also inherently parallel. At least, that is our immediate goal (conveniency & inherent parallelism). We have very strange feeling because doing everything from scratch is very suspicious. But, until know we did not find any other parallel language which would be
- as consistent as Smalltalk
- as convenient as Smalltalk
- and of course parallel
The experiments we have hitherto performed exhibit that the prototype based on the ideas we have got one year ago seem to be (until now) promising.

Weird (but highly desirable) properties of the proposed parallel programming platform are:
- interference over mutable shared objects is automatically excluded
- deadlock as we know does not exist.
These properties are ensured by the policy how it is possible to derive new capabilities from the old ones.

We do not know if here are people who, similarly as us, know about Smalltalk (and any other inherently sequential language) constraints in the area of distributed computing.

Currently the best source of information in written form about our system can be found here:

http://altair.dcs.elf.stuba.sk/~kosik/esug2005.pdf (an ESUG 2005 research-track article candidate)

Just in case someone wanted to download it, the whole implementation can be found here:

http://altair.dcs.elf.stuba.sk/~kosik/squeak/V2.sar

It works in Squeak 3.8 & 3.9
(due to one bug in 3.7, V2 does not work there)

Test case classes `TestV2*' exhibit the correct behavior of the system. Particularly interesting might be
- TestV215Workspace
- TestV216Actor
- TestV217Integer
- TestV218Number
- TestV219Magnitude
- TestV220True
- TestV221False
- TestV222Point
- TestV223Context
- TestV224Iteration

Perplexed records of interesting experiments can be also found here:

http://altair.dcs.elf.stuba.sk/wiki/Kosik/Experiments
http://altair.dcs.elf.stuba.sk/wiki/Kosik/Implementation

Some are already out of date

The syntax of the language is close to Smalltalk
http://altair.dcs.elf.stuba.sk/wiki/Kosik/Syntax

The semantics is somewhat analogous but yet very very different.

Nice thing which misses is some functionality which would be able to generate state diagrams such as:
http://altair.dcs.elf.stuba.sk/uploads/Kosik/equivalence6.png
automatically. These were useful during debugging the virtual machine. They could also be useful during presentation. Drawing them manually is a burden. Excavate that information using Explorer tool from the my virtual machine is horrible task. Program could that do quickly. The problem is how to draw in those diagrams (actually special graphs) in clear way. I guess that to implement such a functionality could take about a month. If I had it, I would be able to flip forward (and perhaps backward) between the adjacent virtual machine states. Then it would be easy to explain the effects of the language. Squeak is perfect platform for such a thing.

If anyone interested could look at the paper I have written 
http://altair.dcs.elf.stuba.sk/~kosik/esug2005.pdf
and perhaps also at the implementation (see the test cases and `System class example*' methods) and give me some feedback, that would be very valuable for me
- Do you thing that what I do is worthwhile?
- What experiments should I try to do?
- What is not clear in the article or what should be explained in more detail (I must admit that I am not a great writer)
- Is there someone who has also the same goals as me and is working to realize them?
- Any other good ideas?

Thank you in advance
-- 
Matej Kosik, icq://300133844, http://altair.dcs.elf.stuba.sk/wiki/Kosik/Main



More information about the Squeak-dev mailing list