Hi Sekhar,

Nice to hear from you, and thanks for your answer. Interleaving...

On Jun 22, 2016, at 3:03 AM, Chandrasekhar Ramakrishnan cramakrishnan@acm.org [self-interest] <self-interest@yahoogroups.com> wrote:

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. 

I’m grinning! Yes that was what we were after. Thanks for understanding.

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.

Sigh, yes, exactly.

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

Ha ha! Me, neither.

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).

Yes, true. I have also been thinking about the tradeoff between dynamism and battery usage.

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.

Good point. I’m also fascinated by the culture of software creators, and how that changes through the decades. There is an interesting interplay between platonic ideas and the real world of hardware technology. (These thoughts are nothing new, of course.)

Hope you are doing well!

Thank you. Same to you! Yes, I am doing well. Life is good, including work. 

Best regards,

- David

C. Ramakrishnan           cramakrishnan@acm.org