Obfuscated Self

Jecel Mattos de Assumpcao Jr. jecel at lsi.usp.br
Mon Jul 25 16:05:22 UTC 1994

Brook Conner <dbc at cs.brown.edu> wrote:
> Well, for our part, we're going to be looking at Self for teaching
> novice programmers object-oriented programming. Compared to C++, I
> think we have a win in syntax. Compared to Pascal, perhaps, but that's
> some of the stuff we'll be looking it. I think the semantics of the
> language will be much easier to teach. There's so much little kruft
> that you don't have to worry about (memory allocation, numerical
> overflow, VAR vs non-VAR parameters). Of course, this is all
> intuition.

I recently taught Smalltalk to nine Pascal programmers and was amazed
at how hard the class/instance distinction was for them. I thought it
would be easy given their three year experience with types. After they
seemed to have learned this, they could still not decide whether a
method should be a class method or instance methods. I kept wishing
I was teaching Self instead ( not possible in a PC-only lab ).

> I remember someone on this list a while back saying that Self would
> make a wicked cool shell (you know, instead of csh or zsh or
> somesuch). Of course, it takes a little bit more memory than csh to
> run it... :-)

That is one way I am using it in my project.

>   Jecel> [ Self = ODL + MPL, MPL readable, but less so than scripts ]
> What do you think makes scripting languages more readable? Certainly,
> UNIX-based scripting languages have historically been some of the most
> obtuse languages on the planet. Hypertalk always struck me as easy to

I agree. I was refering to Hypertalk and parents.

> read, but hard to write (I could never remember what the damn keywords
> were, and kept thinking I could just use English and it might work --
> of course it didn't -- I think the extreme readability combined with
> what was actually a rather inflexible syntax was a poor match --

I agree with this too. Given was was achieved in the parsers used
in text adventure games, Hypertalk could have been much more
flexible. Though it has been 15 years since I've programmed in COBOL,
I think even it was not as rigid.

> perhaps its a rule of thumb that a language should be as readable as
> it is writable and vice versa -- Perl is often called a "write-only"
> language, because even the programmer can't figure out what it was she
> wrote).

For novices, APL and even C are write-only too.

>   Jecel> [ UI is a graphical ODL ]
> Yeah -- I think what bothers me about the UI though is that it isn't
> as responsive as I'd like -- it is plenty fast, once you've grabbed on
> an object and are moving it around. But just click on an object and
> wait for _some_ response while the VM compiles the click response.
> The same kind of thing goes for garbage collecting -- it is plenty
> fast (beats the pants of Emacs) but I'd still rather see it in another
> thread (with its own LWP where it could be scheduled at a lower
> priority and possibly on another processor). Again, I'm just looking
> for responsiveness.

You need a faster machine ;-)

> Now, of course, Jecel's point about replacing the ODL with the
> graphical boxes begs the question "Why not replace the MPL as well?"
> This could be really cool in 3D: the objects are
> things/vehicles/robots in the world. Open up access panels (slots) and
> see the engines (methods) driving the object. Move some gears around,
> reconnect some wires, and you've changed the object's method. Blocks
> become little engine components -- by putting them in the right place
> (i.e., lexical context) they do the right thing.

It seems that great minds think alike :-).  Back in 89 I came up with
a "visual Smalltalk", very similar to your idea, for a keyboardless
computer for children. Click on the object with the hand cursor and
make it do somthing. Click on it with the screwdriver cursor and it
opens up to reveal the internal circuits. Complex drawings have some
problems ( as a hardware designer, I should know! ) so I later switched
to animation to bring using/prgramming/debugging closer together. I
already described this here some time ago, so I won't go into more
detail right now.

>   Jecel> If you have to face ".self" files, then I'll agree that there
>   Jecel> are less intemidating languages around. But the current ( and
>   Jecel> certainly even more so in the future ) implementation seems
>   Jecel> to me to allow simple, clean and powerful programming which
>   Jecel> I would not hesitate to show to novices.
> Let's try this out and _prove_ it!

Mario.Wolczko at Eng.Sun.COM (Mario Wolczko) wrote:
> One test is due to occur next Tuesday and Wednesday: Jon Taylor and
> Trevor Hopkins at Manchester University are going to teach an
> introductory OOP course using Self as the medium of expression.
> This is the first tangible product of collaboration between the Self
> project and various educational institutions in this area.  Our goal
> is to make the results of these initial teaching experiments
> (including teaching materials) available to anybody who wants to use
> Self as a teaching vehicle.
> Watch this space for news..

This sounds great! Of course, the best material of all is Self and
its user interface. But is you had a book, it would make Self more
"respectable" in the eyes of many educators. These teaching materials
might be the seed of such a book.

A few people have tried to convince me to create a simple PC based
implementation of Self and include it for free in a book for novices
to spread out the word :-). I don't know if it is a good idea - Little
Smalltalk and GNU Smalltalk leave many people with a bad impression
of the language.

- Jecel

More information about the Self-interest mailing list