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.<p>Self is/was <a href="http://noflojs.org/" rel="nofollow">http://noflojs.org/</a> 's grandfather.<p><a href="http://www.youtube.com/watch?v=NYEKO7JcmLE" rel="nofollow">http://www.youtube.com/watch?v=NYEKO7JcmLE</a><p>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.
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.
Self was one of the inspirations behind JavaScript, particularly its prototype system.<p><a href="http://en.wikipedia.org/wiki/Self_(programming_language)" rel="nofollow">http://en.wikipedia.org/wiki/Self_(programming_language)</a>
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]<p><pre><code> 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.
</code></pre>
Huh? Maybe I should go find a description of the language.[2]<p><pre><code> Self is an object-oriented programming language and associated
programming environment. It is close in spirit and semantics to
Smalltalk
</code></pre>
Oh! Okay. Now I get it. But that's only because I'm vaguely familiar with Smalltalk.<p>(My intention of this comment is to save others some time trying to discover some basic facts about Self.)<p>[1] - <a href="http://selflanguage.org/_static/tutorial/Language/ObjectsAndSlots/ExamplesOfSlots.html" rel="nofollow">http://selflanguage.org/_static/tutorial/Language/ObjectsAnd...</a><p>[2] - <a href="http://selflanguage.org/_static/tutorial/General/WhatIsSelf.html" rel="nofollow">http://selflanguage.org/_static/tutorial/General/WhatIsSelf....</a>
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.<p>Yeah. I'll show myself to the seat in the corner. Sheesh.
There's some interesting Self papers listed in the /r/selflanguage reddit for those that want to do some reading:<p><a href="http://www.reddit.com/r/selflanguage" rel="nofollow">http://www.reddit.com/r/selflanguage</a><p>This is my attempt at a JSON parser using Self's Mango parser package:<p><a href="https://gist.github.com/doublec/7132119" rel="nofollow">https://gist.github.com/doublec/7132119</a>
IIRC, some of the techniques used in the Self VM eventually made it into the JVM.<p>Ahh yes, the relevant LtU thread. <a href="http://lambda-the-ultimate.org/node/1185#comment-12831" rel="nofollow">http://lambda-the-ultimate.org/node/1185#comment-12831</a>