[self-interest] Small announcement
kyle_hayes at pacbell.net
Mon Jan 1 19:32:12 UTC 2001
On Monday 01 January 2001 02:13, you wrote:
> In 1998, I became upset with the current state of computing. Java
> had become the new darling, Nextstep looked like it was dead
> (as well as Objective-C), Perl/Python was popular - but not the type
> of OO I liked. Squeak was/is neat, but the 1970's interface, class
> system, and monolithic image system was getting tired. I didn't have
> access to a Sun, so I couldn't try Self. During one of my fits, a friend
> of mine, Steve Dekorte, kept trying to convince me that prototypes would
> be the right way to go. I was at the end of researching various Forth
> technologies. Something clicked and I said, I'll create a language using
> protos, it will be fun! That was May 1998. I never implmented a language
> system before. (Side note: Steve showed me the Sun Labs Self Video
> and I have often drank orange juice out of a Self coffee mug at his
"I'll create a language..., it will be fun!" How many projects start this
way ??? :-) Scratch that itch! Take a long look at Kevo if you can find
anything left on the web about it.
I did the same thing. I was very interesting in Self when I was in grad
school but knew that when I left, I'd be without a Sun on which to run it. I
also was very interested in Forth and extremely simple execution models like
it. At the end, I created a language that tried to combine both prototypes
and Forth. It was a little weird. The execution model was purely threaded
and I was (conceptually) able to implement most things like delegation etc.
without stretching the model at all.
I got as far as having it print "Hello, World!" and then got a job. The code
is probably gone. I developed it all on my parent's SparcStation IPC. Since
then, it has been very hard to keep momentum (ask Jecel about how many times
I tried to get back into it :-).
I think that prototypes are a very useful way to think about and work with
systems. However, I think that the environment is also very important. Some
years back (1993?) the Self group at Sun sent out a questionaire on where to
go next and if "we" thought "they" were going in the right direction. At the
time I replied that I felt that they were too few to push on the three main
things that were interesting in Self:
1) prototypes as the basis of the language.
2) innovative JIT compiler technology.
3) the interesting things they were doing with the UI (I think this was
before Kansas but maybe not) and environment.
My suggestion was to pick one or, at most, two of the above and really push
Self to the limit in that direction. To me, the most interesting aspects of
Self are 1 and 3 above.
> At the 1998 Oopsla, I attended the Prototypes track in Vancouver. Mr.
> Dekorte had a presentation. There were maybe 20 people in the room.
> At the end, people were discussing ways of advocating prototype based
> languages. I raised my voice and announced that I would be creating
> a language. Nobody at that meeting probably remembers that or me,
> otherwise I would have received queries about that statement over time.
For reasons unclear to me, prototypes do not get much attention. Self
certainly was not the first language with prototypes. It spawned a number of
other languages (I still have a book on Omega in my bookshelf) that were
> Time goes on. In my off hours when the mood was right, I
> would work on the language. A lot of the details about the
> implementation changed. I never thought it would take this long
> to get something so little out. A few days ago, blocks finally worked.
> The major hurdles were done, it is ready to be looked at.
When there aren't any plans, it takes a _long_ time to get things together.
I have more notebooks full of how I would write all the libraries of code for
my language, but I never got the core to the point that it would really work
well. Also, the input method of coding was terribly cumbersome.
> *What Is This Language?*
> The goal was to create a simple, interpreted, prototype based
> language with Self like syntax.
> The language would be implemented in C
> The language platform was to be unix (freebsd, linux, etc.).
> The language should integrate with unix and other libraries
> very well.
> The language should be declarative, not image based.
> The language should be free to download (like Self)
> It would be stack based
> It will have exceptions (this is a TBDesigned item)
Exceptions seem to be one of those things that require VM and low level
changes to get it both working and then useful. Exceptions usually need
"deep knowlege" to work.
> Originally, the VM was going to be an advanced VM, that mapped
> to processors well. However, that got pushed off and a simple
> stack based VM was used.
Good for portability. Also consider that today's machines are something like
two orders of magnitude faster than the ones on which Self was developed.
So, one can ask the question "is all the extra complexity worth it at this
stage in order to get performance?" When Self was developed, I think it
probably was important.
> Some of the differences with Self are:
> single inheritance,small lexical and grammatical differences,
> no excellent optimization technologies, it is interpreted on
> a VM, not image based, no windowing system or GUI (Morphic?)
> built in.
I think the route that Squeak took with its extremely simple external
windowing interface is a good one. They only have a bare handfull of
primitives to talk to the external windowing system. Basically, they draw
everything in pixmaps and blit it to the screen. Jecel can talk to this more
than I can.
The good thing about this is that it is easy to implement. The bad thing is
that you don't get much support from any hardware. Again, as I said above,
given that machines are as fast as they are, it is really worth worrying
about performance at this point.
One of my biggest problems with Self as it exists is that it is nearly
impractical to port even to another Unix machine because the VM does so much
and supports so many primitives. I never understood why the compilers etc.
were not written in Self but in C++.
> Current State.
> In it's current form, it is very primitive. floats or arrays
> aren't there. 'resend' isn't implemented yet, as well as non-local
> returns, and a lot of other little things and methods.
> I chose the name 'Cel' after Apple took the name Aqua. (The other
> names were terrible).
Heh. Better than mine I'm sure :-)
> *How Does this Affect Self and the Other Projects Here*
> I don't think that this interferes with any of the other projects
> mentioned here: Self Mac OS, MerlinTech, other ports, etc.
> I intend to keep going on Cel. However, it is nowhere
> near as polished as Ungar's Self on the Mac. Cel is still
> a system in flux and many things were implemented in the
> 'naive' way :-)
I'll probably poke along with my ideas. I suppose it I could find the code
again, I could get my language working. I have become more interested in
multiparadigm languages of late and haven't spent much time on pure prototype
based OO languages.
> Thanks for reading this so far, if you are interested further,
> go to the web page. http://www.redwoodsoft.com/cel
Updated since yesterday?
> I would also like to state that I do enjoy this list, and I
> appreciated the help from Jecel for his answers on many occasions.
> Without his careful explanations, I wouldn't have gotten even
> to this point.
Asking questions is exactly how I met Jecel in the first place several years
ago. I was thinking of writing a VM that would implement the Self bytecodes
only and try to see if I could get the image to run on it. The deeper I dug
into it (and the more I used Smalltalk), the more I learned just how hard
this would be. I also started learning more about Forth.
> ** Thank you **
> Dru Nelson
> San Mateo, California
> P.S. Above, when I said, "In 1998, I became upset with the current state
> of computing." I meant, In 1998 I finally decided to do something about
> the state of computer technology that has plagued us for the last 15?
> years, as a fun, 'what the heck' attempt.
I'm in San Francisco. We should meet some time. Drop me a note. Jecel and
I actually met in person for a few short weeks a few years ago in Brazil.
Even though we couldn't "geek" as much as we might have liked (my wife was
there too), the few hours we spent in front of a computer were quite
productive. I've always been a "whiteboard" kind of guy and find that
talking this over with others with a whiteboard helps moving things forward
much more quickly.
San Francisco, California
More information about the Self-interest