open systems (was: patterns and Self)

Jecel Assumpcao Jr jecel at
Thu Dec 14 23:44:20 UTC 2000

On Thu, 14 Dec 2000, Albertina Lourenci wrote:
> Please Jecel it would be nice if you explain a bit more detailed. So you
> suggest abstract factory here  is unnecessary.

You could use an Abstract Factory pattern to create different menu
objects depending on which kind of machine you were running. So menus
would look like Unix menus on a Sparc, Mac menus on a Mac and Windows
menus on a PC.

But Kansas is a very different user interface compared to all these
systems and has its own look. So we just have one kind of menu, the
Kansas menu, and have Self look the same no matter what machine it is
running on. In that case, there is no need for the Abstract Factory

> Would you say Self versions are open systems? If not, how can they become open
> systems?

"Open Systems" has become a very ambiguous marketing term. I once saw a
talk by an IBM representative where he defined the term in such a way
that the AS/400 was an open system but Unix was not!

Here are two more reasonable definitions:

    1) an open system talks to other in the world, but a closed one

    2) an open system lets you see what is inside, but a closed one

By the second definition, Self 4.1.2 is one of the most open systems
ever built. From our previous emails I know that you are interested in
the first definition. Though the system itself doesn't talk to the
outside world, it has all the necessary low level resources to allow
you to create applications that do so. That is: it has network socket
objects, but no built in remote messages and similar things.

> As far as I know you have to program to make Self 4.1.2 run on
> Windows.

I am not sure what you are asking here. If you mean someone will have
to do a port before Self 4.1.2 will run on Windows, then yes. If you
are asking if any changes to an application would have to be made
before it would run on such a port, then no.

> What are the differences between Self/R and  Self 4.1.2?

In the middle of my December 2 message, I commented exactly that:

> I think I found a good example to grasp the difference between
> GOF's way of programming and Self programming. And also
> the potentiality of design patterns. I dislike immensely the
> way they are implemented in C++ or  Smalltalk.

Smalltalk and Self are very similar. I consider them to be dialects of
a single language, in fact.

> Wegner defines what an open system is. However I prefer
> Patrick Steyaert's definitions.

Everyone has their own definition, which makes discussions involving
this term very unproductive.

> I am curious what Wegner means by life-cycle costs that generally
> dominate computing costs for large software systems and
> are the bottleneck in large system development.
> Life cycle resources = development and adaptability  = what
> does he means by this?

The life cycle of software is normally defined as:

       - design
       - implementation
       - maintenance

For practical, large applications the third phase ends up being the
most costly of all. If the first two phases put in more of an effort to
create an adaptable system, then the increase in their costs is more
than compensated by a decrease in maintenance costs.

I haven't read any paper by Wegner in which he discusses this, so I
might be totally wrong about what he was trying to say.

-- Jecel

More information about the Self-interest mailing list