

New release of Self programming language - russellallen
http://blog.selflanguage.org/2014/01/12/self-mallard-4-5-0-released/

======
secstate
Haha ... funny to read about people scratching their head over Self. I feel
like once you've wrapped your head around the Squeak version of Smalltalk,
your about 50% of the way towards understanding Self. It's not a language the
way we think of it, with CLI tools and syntax and text editors. It is a
mutable environment of programmable objects. Sure there's some writing inside
of objects to create methods, but you're not gonna find a "try this in the
browser" code.

Self is/was [http://noflojs.org/](http://noflojs.org/) 's grandfather.

[http://www.youtube.com/watch?v=NYEKO7JcmLE](http://www.youtube.com/watch?v=NYEKO7JcmLE)

I would also argue that Self is to programming languages what Haiku is to OS
development. No on is writing a web framework in self, it's more of a toy and
a neat artifact of where programming has been and could go in the future.

~~~
seanmcdirmid
Smalltalk is still class based. The only strong connection between Self and
Squeak is Morphic.

~~~
tel
I feel like my personal challenges coming to understand Self are often
exaggerated by Morphic. Most of the linguistic notions I gather from reading
papers aren't too tough, but I always bounce off when trying to translate that
to effects in the Self environment.

~~~
doublec
I encounter that too. I started writing Self code in a text editor and loading
it in the REPL. Some of the code shipped with Self is like this (The Mango
parser code for example).

Once I was more familiar I started learning the GUI environment. It took me a
while to work out how the object transporter worked to export code back to
text files but once I got that Self became a lot more friendly to use.

~~~
tel
See, I'd love to do that but I don't think the documentation ever bothers to
explain it.

------
primitivesuave
If this language is looking for greater adoption, its website is doing a big
disservice. It is incredibly challenging to find a single code snippet, and
the documentation is mediocre at best. The interfaces that are shown in the
documentation remind me of the computer system you see DMV employees fumbling
around with. I love picking up random languages on a Sunday, but not this one.

~~~
russellallen
Yeah, its a fair cop. The website is old and more about people who already
know about Self than people who don't. I'll put fixing it on my todo list.

~~~
primitivesuave
Thank you for not taking my comment negatively, I completely understand the
amount of work that goes into documentation and the other comments on this
article helped me understand the usefulness of Self. I've bookmarked the page
and will check it out some Sunday in the future.

------
GeZe
Self was one of the inspirations behind JavaScript, particularly its prototype
system.

[http://en.wikipedia.org/wiki/Self_(programming_language)](http://en.wikipedia.org/wiki/Self_\(programming_language\))

~~~
masklinn
Except for the part where what Self calls prototype has no equivalent in
javascript (constructors are close to Self's `copy` message, but not quite the
same) and what javascript calls prototype Self calls mixin (or traits,
depending whether they've got ancestors up to the lobby themselves). And a
Self object can have multiple mixins and add or remove them at runtime.

~~~
Pacabel
The "JavaScript is like Self" fallacy is just another variant of the
"JavaScript is like Scheme" fallacy. It sounds great to the person claiming
it, and to an unsuspecting audience. But on closer inspection, the
similarities between the two languages are minimal at best.

------
burntsushi
I've never heard of Self. So I wanted to find more about it. I had to click on
several links to find some example of the language. I found this.[1]

    
    
        In the graphical representation of the object, we can distinguish
        method slots from data slots, and constant slots from assignable
        slots, by the icon in the button at the right hand of the slot.
    

Huh? Maybe I should go find a description of the language.[2]

    
    
        Self is an object-oriented programming language and associated
        programming environment. It is close in spirit and semantics to
        Smalltalk
    

Oh! Okay. Now I get it. But that's only because I'm vaguely familiar with
Smalltalk.

(My intention of this comment is to save others some time trying to discover
some basic facts about Self.)

[1] -
[http://selflanguage.org/_static/tutorial/Language/ObjectsAnd...](http://selflanguage.org/_static/tutorial/Language/ObjectsAndSlots/ExamplesOfSlots.html)

[2] -
[http://selflanguage.org/_static/tutorial/General/WhatIsSelf....](http://selflanguage.org/_static/tutorial/General/WhatIsSelf.html)

~~~
doublec
I have a couple of short screencasts showing Self in action if you're
interested:

[http://bluishcoder.co.nz/2013/09/16/multiple-users-in-a-
self...](http://bluishcoder.co.nz/2013/09/16/multiple-users-in-a-self-
world.html)

[http://bluishcoder.co.nz/2009/07/27/displaying-images-
with-s...](http://bluishcoder.co.nz/2009/07/27/displaying-images-with-
self.html)

~~~
burntsushi
Thanks. I watched your videos and now I have a better clue about what Self is.
It's personally not my cup of tea, but it would have been really nice if the
Self web site had one of your videos on it (or something a bit more
introductory). Particularly given its graphical nature...

------
doublec
There's some interesting Self papers listed in the /r/selflanguage reddit for
those that want to do some reading:

[http://www.reddit.com/r/selflanguage](http://www.reddit.com/r/selflanguage)

This is my attempt at a JSON parser using Self's Mango parser package:

[https://gist.github.com/doublec/7132119](https://gist.github.com/doublec/7132119)

------
pstack
I guess I'm the only dummy who wasn't thinking of the actual Self language and
thought I was going to be reading about a programming language that wrote
programs by itself.

Yeah. I'll show myself to the seat in the corner. Sheesh.

~~~
szatkus
You're not alone...

------
mortyseinfeld
IIRC, some of the techniques used in the Self VM eventually made it into the
JVM.

Ahh yes, the relevant LtU thread. [http://lambda-the-
ultimate.org/node/1185#comment-12831](http://lambda-the-
ultimate.org/node/1185#comment-12831)

~~~
alayne
I always wonder if the Self people felt bad about their VM efforts going into
Java. Java has really been one of the least inventive and progressive
languages.

~~~
seanmcdirmid
I doubt they would feel sad about their technology being adopted by a
mainstream language used by millions of developers vs. a research experimental
language that many outside of research haven't even heard of before.

~~~
payload
wasnt smalltalk once a mainstream language? in ancient times, late 80s?

~~~
seanmcdirmid
The number of programmers back then was much less than now, but even then I
don't think Smalltalk was a top 10 language. I guess it depends on how you
define mainstream, Smalltalk has/had its niches, some of which are still
active. But there is nothing wrong with using research languages like self
(which was never mainstream) to explore and develop new tech that can be
applied to mainstream languages.

