Questions about Self
bystrousak at kitakitsune.org
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
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 mac.com [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