From: Leo A. Meyerovich and Ariel S. Rabkin. Empirical Analysis of Programming Language Adoption. OOPSLA 2013.
16 Replies to “The importance of simplicity”
Comments are closed.
Dispatches from the User Liberation Front
From: Leo A. Meyerovich and Ariel S. Rabkin. Empirical Analysis of Programming Language Adoption. OOPSLA 2013.
Comments are closed.
All this shows it that the respondents “want to get stuff done”, but don’t know what role simplicity plays in that. People I talk to think simplicity in a programming language means less-features, and therefore less power. So who is going to chose “languages that are less powerful” in a survey? We are asking the wrong questions.
This is so true.
“Most other qualities of Lua – speed, small size, and portability – derive from its simplicity.”
– http://www.lua.org/history.html
Lua is beautiful. Roberto gets it.
As a PL designer, that aspect of the result made me sad 🙁
However, take heart! The figure reports perceived importance, and respondents are probably not gauging latent factors such as whether simplicity fosters library creation.
(Then again, who cares: Google has deep enough pockets to pay for the important efficient standard libraries without relying upon language simplicity.)
What good is language simplicity when you can just keep hiring rockstars?
And when you run out of domestic rockstars bribe politicians to let you import foreign rockstars!
No worries. Call it ‘manageability’ (instead of simplicity) and they’ll love it!
I can see how this would be the result. I myself value simplicity a lot in a language–but I also value availability of libraries, familiarity (syntax I’m used to), run-time speed, development speed, and so forth, roughly just as much as simplicity. So I wouldn’t remove those other good things in favor of simplicity, but as a language designer I would (and do) try to get as much simplicity as possible without sacrificing other benefits.
From a user perspective, simplicity might not be the most important thing, but it is very important for language designers and for advanced users (or rather, users who *want* to be advanced: if it’s simple, users can understand it better and accomplish advanced things more easily. e.g. I’m having trouble learning C# 5 async effectively because although the basic concepts are straightforward enough, the feature relies on complicated and poorly-documented runtime libraries.)
It’s hard to put into words why simplicity is so important. But on some level, it really, really is.
A nice eloquent argument for Simplicity by Rich Hickey.
http://www.infoq.com/presentations/Simple-Made-Easy
http://www.slideshare.net/evandrix/simple-made-easy
I like that he is trying to introduce the word Complect to PL lexicon.
I notice that in the MOOC survey data simplicity comes about halfway down the list.
So there is hope.
Introducing new words that are synonyms of familiar ones is not simplification. Complect = intertwine. It’s a good way to get attention though.
There is a lot of fresh thinking and tasteful design in Clojure. I like it. But the overheated rhetoric and cult of personality are off-putting.
Most of Hickey’s writing is nothing more than attention-whoring. Consciously trying to coin a term is possibly the most attention-whorish thing imaginable.
Do people have difficulty distinguishing simple vs. simplistic? When things really are ‘simple’, how often do we think about it? How often do people sell ‘simplistic’ using the word ‘simple’? How much would you trust a language advertised as ‘simple’?
I think it isn’t hard to see why simplicity rates poorly. As a prospective language user, even I’d rate it pretty low. As a language designer, OTOH, it’s important to me. I’ll just need to remember to keep ‘simple’ out of my language but obvious in the demonstrations…
Simplicity is a fine goal for language and designers,
Part of the problem is the Curse of Knowledge.
Love the ideas of Subtext: especially live coding. The most enjoyable programming I’ve done is with live-ish environments, especially ones where the environment itself is live. I.e. where you can modify the behavior of the environment without leaving the environment. Combine that with a simple, but powerful, language, and miracles of programming become possible.
Does subtext support live coding? I can’t imagine Jonathan Edwards writing music in real time in front of an audience.
It’s an integral part of the language; for instance check this latest screencast;