Teachability Important to Programming Language Success

Eric Gunnerson, discussing "Why so many languages?" makes the key point that "Compactness and simplicity have big benefits as well in programming languages."

Once upon a time, I made a good living teaching Java. Sometimes I taught it to C and C++ developers, sometimes I taught it to COBOL developers. One way or the other, in a week you could really deliver value: if people understood imperative structured code, you could really move them towards an understanding of object-oriented programming in just a week. Same for C# 1.0.

Even so, you had to talk about "well, not everything's an object," and deal with function-call semantics and equivalence and so forth. Personally, I think that the inclusion of native types was a critically beneficial language-design decision for Java, but it does complicate teaching. In .NET, it's even harder to teach, because you can't say that value types are limited exceptions.

About a year ago, I had a friendly debate with my colleague Allen Holub about the changes in the then-new C# 2.0 and Java 5 languages. One disagreement we have is that Allen doesn't like generics, I do. I tend to \<a href="http://www.knowing.net/ct.ashx?id=d5cf50c2-af54-4f32-b290-db5d345ada27&url=http%3a%2f%2fwww.knowing.net%2fPermaLink%2cguid%2c336.aspx"" target=_blank rel="noopener noreferrer">like explicit typing, my feeling is that 99% percent of the time you have a type intent that you can memorialize with a few finger strokes and gain Intellisense and better comprehension. But Allen cleverly didn't argue the finger-typing issue, he said that what he disagrees with is that generics are not OO, thereby making the language harder to learn.

He's right. Once upon a time, C was relatively easy to learn; learning how pointers work was the big issue. Now, I can't imagine someone "picking up" C++ and not being absurdly non-productive. Never mind the STL, how many freaking ways are there just to represent a string? John Montgomery recently posted the surprising factoid that the most commonly used languages by non-professional programmers are HTML, JavaScript, and C++, more than VB or Java or Perl. One wonders what perception these people gain of the task of professional programming. This is why, when thinking about \<a href="http://www.knowing.net/ct.ashx?id=d5cf50c2-af54-4f32-b290-db5d345ada27&url=http%3a%2f%2fwww.knowing.net%2fPermaLink%2cguid%2caffe9827-10f2-4490-8cd1-fafbe8e6f6d0.aspx"" target=_blank rel="noopener noreferrer">trends in language syntax, I think there's a possibility, although not necessarily a likelihood, of a collapse towards simplicity and the widespread embrace of a LISP-like or Smalltalk-like language.