Hi David,

2016-06-21 18:32 GMT+02:00 David Ungar ungar@mac.com [self-interest] <self-interest@yahoogroups.com>:
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?

For me, the appeal of Self is that it presents a singular vision that is well executed and throughly explored. The vision is that of programming through direct manipulation, and it is supported by both the language design and the environment. As a result, programming in Self is engaging, fun, and playful. 

The research that came out of Self has been adopted in terms of VM implementation and language design, but the idea that drove that research has, unfortunately, not been as influential. Self, and Smalltalk, remain quite unique in this regard. Though there are many playful environments out there for teaching children how to program, these are more games that are played through programming and not conceived as tools for programmers to actually work with. I can only think of a few other attempts to design a programming language and environment with the goal of realizing an alternate programming experience (e.g., data flow languages, or the work of Jonathan Edwards / alarming development). This unique quality of Self keeps me coming back to it and thinking about it.

What I don't like about Self is that I cannot use it for my job! :) 

More specifically, what I do not like about Self is how difficult it is to interact with the world outside of the image. I admit that this is a little unfair as a criticism, since I think those choices were perfectly reasonable at the time and context in which they were made. Still, from the perspective of now, I think they were unfortunate and make Self unsuitable for many projects today (at least for me).

Since you brought up Swift, I also wanted to add a few thoughts about language design today. Today, I think the programming language itself has diminished in importance and been eclipsed by the libraries and frameworks available in the language. On recent projects where I had free choice of programming language, I chose python and Scala, not because I'm particularly enamored of those languages, but because I wanted to use pandas/numpy and Spark, respectively. And not only can libraries compel language choice, libraries can also save languages from their weaknesses, as illustrated by the examples of d3js and React in JavaScript.

You see this dynamic at work as an influence in the design of new languages. Languages like Rust, Scala, and Swift all make it a priority to interoperate with and leverage existing vibrant ecosystems. It is a compromise (Faustian bargain?) that places some restrictions on design of the language, but gives them a shot at widespread adoption in return.

Hope you are doing well!

C. Ramakrishnan           cramakrishnan@acm.org