Edit Rename Upload Download Back to Top

Smalltalk Program Model for Interchange

Subtitle: Representing Programs as Interchangeable Objects.

Update after Camp Smalltalk 2000 San Diego

Organizer: Peter van Rooijen

Signup/Members:

Goal

Enabling interchange of arbitrary Smalltalk software between dialects.

Approach

Things we will need to create

1) A reference Smalltalk Program Model. 2) An implementation of the SPM that allows us to represent a Smalltalk program as non-code objects. 3) Code to produce SPM objects from code installed in an image. 4) Code to install code in an image from SPM objects. 5) Implementations of the above for a handful of dialects.

6) A binding of the abovementioned to several object interchange mechanisms (being produced at the Camp), such as binary and XML.

7) ...

Comment:

Response:

Things we will need to find out

1) What constraints are placed upon the SPM objects to make them interchangeable using the results from the object interchange efforts.

2) What the available stuff for potential reuse can already do.

The Refactoring Browser code model

3) Issues we are likely to run into concerning the incompatibilities between the different (source and target) Smalltalk languages and environments.

4) ...

Things we will need to decide

1) Which dialect(s) we will start with.

2) Which dialects we want to port to.

If you start with the RB program model then you want to start with VA and VW because it already runs on them. After that, it all depends on who you have who can help you port. It will be 5 times easier to port to a dialect if you have somebody who knows that dialect. Note that porting to a dialect will often require an expansion of the program model. For example, I've been told that MT lets you assign a COM class ID to a Smalltalk class. Unless you port to MT, there is no need to include this in the program model. So, each port raises the possibility of adding something to the model. Ralph Johnson

3) Our timetable.

I'm not on the team, so I don't have a vote. However, it seems to me that the sequence of events will be to make a program model that can translate programs between VA and VW and then to keep adding dialects. You probably ought to make some test programs and to move them around between dialects and make sure that they work. The number of dialects you can handle depends on the number of people who are working. I predict that two people working together can port the program model to a dialect in one day if one of them knows the dialect well, and the other one knows the program model well. It will take a day or two to get the original program model in place. Ralph Johnson

4) Division of labor.

Worry about each morning based on what you are going to do that day. It will depend on who you can get to work with you on a particular dialect. Ralph Johnson

5) ...

Simplifications we could make in earlier iterations

1) Minimal Class has Object superclass, only has methods, which only have portable source Peter van Rooijen.

This is simpler than the RB program model, so I don't think it is necessary. Ralph Johnson

2) Source body is first encoded as one item, only split up in code nodes later Peter van Rooijen.

It is good to separate the selector from the rest of the method. You'll probably figure out other things along the way. I agree that you should split up later. Ralph Johnson 3) ...


Richard A. Harmon harmonra@webname.com

In regards to:

1) A reference Smalltalk Program Model.

my implementation of SIF contains a fairly robust Smalltalk Program Model.

I have been told it is somewhat similar to VSE Packages (I think).

It has program components with prerequisites that contain program elements (class def. or method def.), or grouping elements (all of the elements of a class, or any arbitrary grouping) that contain program elements or grouping elements (may be nested).

It sounds to me like what you are looking for in 1.

I haven't used the RB, but I had vague thoughts that it would make sense for my SIF implementation to eventually use RB facilities it needs.

My code is butt ugly (especially the code formatting) but may already have a great great deal of what you want. I'm told that it is a fairly good approach. It's free, implemented, and portable.

I think it would take very little work for it to use "Eric Arseneau" less complex SIF implementation. This may already be in progress. He has ported it to a number of platforms including Dolphin, Squeak, and VW.



Edit Rename Upload Download Back to Top