Programming languages of distinction
March 6th, 2006Via Ongoing, I read some interesting discussions of programming languages — mainly Python vs. Ruby, with most people happily dumping on Java.
Steve Yegge, in particular, argues that language success is based mainly on marketing, and that Python is doomed to obscurity because of the community’s lack of marketing savvy.
The programming language cycle
While I agree that Python probably is doomed to perpetual obscurity at this point, I think that Yegge’s focus on marketing is oversimplistic; instead, I’d argue that there’s a self-perpetuating cycle at work for successful programming languages:
- Elite (guru) developers notice too many riff-raff using their current programming language, and start looking for something that will distinguish them better from their mediocre colleagues.
- Elite developers take their shopping list of current annoyances and look for a new, little-known language that apparently has fewer of them.
- Elite developers start to drive the development of the new language, contributing code, writing libraries, etc., then evangelize the new language.
- Sub-elite (senior) developers follow the elite developers to the new language, creating a market for books, training, etc., and also accelerating the development and testing of the language.
- Sub-elite developers, who have huge influence (elite developers tend to work in isolation on research projects rather than on production development teams), begin pushing for the new language in the workplace.
- The huge mass of regular developers realize that they have to start buying books and taking courses to learn a new language.
- Elite developers notice too many riff-raff using their current programming language, and start looking for something that will distinguish them better from their mediocre colleagues.
You’ll notice that there’s no step here called “marketing”; instead, there are several distinct stages of evangelization and community building. Major vendors (other than the language’s owner, if it’s a vendor) will start to notice the language once the second wave (sub-elite) developers arrive, and IT managers will notice it because of books, magazine articles, and pressure from the high-end developers. Some — possibly a lot — of marketing will come out of those steps, but it is as much a result of the language’s success as a cause.
Points of failure
In this cycle, there are a few highly probably points of failure:
- Timing: A new language might not be at the right stage of development (too raw, or too stale) at the time when elite developers decide to make a mass migration.
- Features: If the new language’s features don’t answer the elite developers’ annoyance list, not enough of them will migrate to it.
- Openness: Elite developers are used to having a lot of influence, and if the new language’s development process does not allow them sufficient say in the new language’s evolution, they will leave before they attract enough sub-elite developers.
- Tools: Sub-elite developers might find the language unsuitable for day-to-day production use, especially if enough basic tools are not available (libraries, testing, debugging, GUI tools, performance measurement, etc.).
- General acceptance: Regular developers might object to the new language and sabotage projects using it, either by producing poor-quality code or by missing deadlines (and blaming the new language in both cases).
Most programming languages stumble over one or more of these — it’s as much luck as clever design when a language like C++ or Java makes it past the hurdles and into the workplace. Success tends to draw more success, money draws more money, etc.
The final and most important point here is that a programming language’s perceived coolness will always suffer from its success. Java cannot possibly still be cool when there are thousands of regular developers slaving away in the bowels of ACME Widgets using it to write enterprise applications. If, in fact, Ruby displaces Java in the enterprise (which may not happen, since Ruby has no advantage over Java to match Java’s memory-management advantage over C++), it will suffer precisely the same fate, and we can expect Bruce Tate to write a book Beyond Ruby in five years or so.
By that measure, Python’s very failure is a kind of success — as long as it never really becomes takes hold in the workplace it will always carry a small degree of distinction with it, and at least a few elite developers won’t feel pressured to move on. Like a movie or band that never becomes too popular, Python will hang onto its snob appeal.
March 7th, 2006 at 09:07:33
Makes sense to me! I think you should add a Gartner-like hype curve, color-coded to show how long each language has been in its current position.
I don’t know what color you’d put LISP, though, stuck at step 0, still waiting after several decades for the elite to notice too many riff-raff using it…
March 7th, 2006 at 11:50:25
The LISP world has a professional hierarchy all its own — the riff-raff are Emacs LISP programmers, or anyone who has not designed at least three operating systems in the past 20 years.
March 10th, 2006 at 11:26:12
It’s been so long since I’ve thought about programming — I probably still recall a few lines in Basic, Fortran and Pascal! And machine code - by the numbers - sheeesh. Actually the coolest and rather esoteric programming language I ever played with was FORTH. That’s where I encountered the concept of elegant simplicity.
March 16th, 2006 at 04:03:15
What you want is a measure of the degree to which skill in a programming language has become commoditized. For instance, take a job website like http://www.jobserve.com/
Search for commoditized skills like Java, SQL, C++ and you find x,000 jobs advertised. Ideally of course you’d have a longitudinal view on this; you’d have data on the number of jobs offering requiring this and that skill across time and understand the rise and ebb of particular skills.
Search for niche skills like Python and you find (today) 200 jobs advertised.
Search for Ruby and right now you find 22 jobs on http://www.jobserve.com.
Search for Groovy and you find one actual job. That’s where you want to be; learning a language so esoteric that one day you can be the guru, or at least one of his henchmen. But maybe, maybe the fact that there’s already one job posted means you’re just too late…
To be honest, I saw this idea expressed lucidly in Chad Fowler’s book, available from http://www.pragmaticprogrammer.com/
April 21st, 2006 at 02:00:47
“Sub-elite (senior) developers follow the elite developers to the new language,
creating a market for books, training, etc., ”
How do you create a market without marketing?
April 21st, 2006 at 06:13:39
“Elite (guru) developers notice too many riff-raff using their current programming language, and start looking for something that will distinguish them better from their mediocre colleagues.”
This assumes that “Elite developers” actually care about what the masses use to program with. My guess is that most of them just want to use a (the most) productive language (one in which the development/testing/integration of a certain feature takes the least amount of time, balanced with the highest level of physical performance).
April 21st, 2006 at 11:14:40
> Ruby has no advantage over Java to match Java’s memory-management advantage over C++
You haven’t used Ruby much, have you?
April 21st, 2006 at 11:55:46
I’ve got to agree with Nordsieck: I don’t think truly elite developers really give a damn whether other people are using their language of choice or not. “Oh no, my Favorite Thing is getting popular, so now I have to repudiate it and pick something else to be my favorite” is not the behavior of wizard-level programmers; in my experience, it’s the behavior of latte-slurping trendoids who care more about other people’s opinions than their own taste.
Now that Perl is huge (indeed, many would say *too* huge, and past its prime), does Larry Wall move on to something new? No, he’s still working on Perl. Of course, he wrote the language, but the same goes for Tom Christiansen and Damian Conway.
I’m sure the same thing could also be said in the Python world. Now that Python is gaining popularity, are the serious wizard-level Python programmers saying “Oh, dear, it seems the proles have arrived. How teddibly gauche they are. I must go and become a Boo guru now, just to avoid these tedious plebeians”? Somehow, I don’t think so.
April 22nd, 2006 at 12:16:26
You may find this page quite interesting:
http://noga.muti.co.za/programming_languages
April 22nd, 2006 at 04:37:22
For a more professional popularity list of programming languages, try this link:
http://www.tiobe.com/index.htm?tiobe_index
April 22nd, 2006 at 08:32:07
Kartik:
I agree that Ruby has some neat tricks (syntactic and otherwise), but when you look at development speed, bug reduction, etc., it’s hard to argue that any of them gives Ruby as big an advantage over Java or Python as the advantage that all scripting/VM languages have over manual-memory-management languages like C/C++. Closures? I remember being excited about them ten years ago when I was coding a lot in Scheme (another great programming language), but in the end, they didn’t make much of a difference in how I worked. Automatic introspection? I’m a touch typist, so saving 30 seconds of typing here or there isn’t significant.
I may come over to Ruby some day (it definitely has the most fun tutorials), but it’s also possible that before then some other language will find another low-hanging fruit like memory management that blasts Ruby, Java, Python, and everyone else right out of the water, the way that Java has blasted C/C++ for enterprise development.
May 29th, 2006 at 06:08:58
Kai:
Maybe the case is that the original founders (elite programmers) are so heavily invested in their language, that they rarely move on. It’s rather the sub-elite, who have been promoted to elite. They are stuck at the second-highest rank of the social ladder - as henchmen of the founding fathers. One way to rise beyond this is to move on and settle on a new language, where they themselves can become founders. The founders themselves OTOH have nothing to gaim from the exile - they are already at the peak.
September 24th, 2006 at 04:35:30
Once you have learned a language, you have a huge investment of your time to protect.
It’s hardly suprising that people are reluctant to move on to other technologies.
May 21st, 2007 at 05:52:03
[...] So in my answer to Scott’s question, I think it may well be that many developers completely leave. But I imagine that many others will take the path that Rob Conery, the creator of Subsonic wrote about. He’s choosing to help try and change the developer culture around Microsoft from the inside, rather than jumping ship completely. Like a good ALT.NET developer, he sees some value in the Microsoft platform and tries to combine what is good from it, along with what is good from other platforms, rather than just giving in to the self-perpetuating cycle of successful programming languages. [...]