Questions about Self

Bystroushaak bystrousak at
Sun Jun 26 16:48:17 UTC 2016

This is all highly subjective and maybe even wrong. I am still learning 
the Self, so there is strong possibility that I am missing something and 
don't see the whole picture.

I will begin with what I don't like:

1. Missing cascading operator.

I've seen reasoning why it is not there and I am aware, that you may 
live without it, and also that ; is now used for other things, but it 
really feels like it should be there. I mean - in my mind, it is such a 
wonderful simple solution which saves you repetition of code, nicely 
abstracted pattern. For me, it is what makes Smalltalk's syntax 
different, not in some weird sense, but in clever way.

2. No „VM checkpoints“

I am not yet proficient with Self. I've began learning it in October 
2015, and since then, I've killed my VM countless times.

For example, if you try the Morphic lesson from the Handbook and then 
make typo (save a method with wrong name, or something like that), 
you'll get debugger and the whole environment freezes. Then you must 
hope, that you will find the bug in the debugger, which may be really 
hard (remember, you are beginner and you don't know Morphic and this is 
probably your first time in debugger). Chances are, that you will do 
"pkill -9 Self" and start again rather than trying to find the bug.

I know, that this is not really Self's problem, but for beginners, 
loosing a work can be frustrating and saving whole image after each 
operation manually is also painful.

It would be really useful, if there were ability to "roll back" your 
last changes in way how „undo“ in text editors works. Some user friendly 
disaster recovery protocol. I know, that there is debugger, and also 
process manager in console, but both is not much useful to beginners.

I think that there is several possible ways how to do this.

  I. Periodical (and maybe partial, diff only) snapshots at the 
background and then allow user to navigate and choose which one of them 
he would like to use.

  II. Remember all changes user did (patch Morphic to remember what was 
changed by user - updates in method code, inheritance and so on) and 
then allow to return back in this „change trail“.

  III. The way some smalltalk environments do it - remember all user 
steps, log them separately and then after crash, allow user to repeat 
them and get to the point right before crash.

3. Mouse oriented environment

I know that when Self began, mouse was probably not that much common and 
it may seem like wonderful solution to all problems, but for me as a 
programmer, it is almost too much. Mouse is what slows me down. This is 
not that much issue in „Self as an experiment and exploration 
environment“ scenario, but in „Self as language where people actually 
routinely create big applications“ scenario, it may be a problem.

This is easily solvable by changing the environment to allow keyboard 
shortcuts for all kind of manipulations which is now done by mouse.

4. Inheritance and outliners

Sometimes it may be a hard to get an idea about what is in the object's 
namespace. You have to open a lot of outliners to see all inherited 
slots. I think I will try to write a tool, which will show all inherited 
slots in one view, maybe inside on top of the outliner.

I know, it goes against the idea of concrete objects, but I think it 
would save a lot of time.

Now what I like:

1. Minimalist approach

I like how the language is small. This feels right. I think it is better 
when the language core is just small „seed“ and everything else blooms 
from this core.

2. Direct manipulation of objects

This is why I decided to learn Self. I've seen this in Smalltalk, but I 
think that Self brings this to another levels. There is several reasons 
why I need this and I will get to them later (in other posts in 
following months).

3. Speed.

I would never thought that language like Self could be so efficient. I 
am truly amazed with how it was done.

4. Image based development

I am tired of „persistence“ solutions in other languages. I've played 
with SQL, noSQL, ORM mappings and object databases, but image is the 
best. I know that there are some disadvantages, but I like it anyway.

Dne 21.6.2016 v 18:32 David Ungar ungar at [self-interest] napsal(a):
> I am pleased and amazed at the attention you all lavish on Self. The
> recent activity has moved me to wonder:
> What is it about Self that appeals? What is it that you don’t like?
> I mean to ask about the language, environment, and implementation, not
> about the mailing list, web site, or even documentation.
> One reason this topic interests me is that I am watching the immense
> popularity of Swift, a somewhat different style of PL, and I am even
> enjoying Swift myself.
> Thanks in advance,
> - David

More information about the Self-interest mailing list