Programming languages of distinction

Via 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:

  1. 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.
  2. Elite developers take their shopping list of current annoyances and look for a new, little-known language that apparently has fewer of them.
  3. Elite developers start to drive the development of the new language, contributing code, writing libraries, etc., then evangelize the new language.
  4. 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.
  5. 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.
  6. The huge mass of regular developers realize that they have to start buying books and taking courses to learn a new language.
  7. 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.

About David Megginson

Scholar, tech guy, Canuck, open-source/data/information zealot, urban pedestrian, language geek, tea drinker, pater familias, red tory, amateur musician, private pilot.
This entry was posted in Uncategorized and tagged . Bookmark the permalink.

18 Responses to Programming languages of distinction

  1. Bob DuCharme says:

    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…

  2. david says:

    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.

  3. grant says:

    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.

  4. iain says:

    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/

  5. km says:

    “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?

  6. nordsieck says:

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

  7. > Ruby has no advantage over Java to match Java’s memory-management advantage over C++
    You haven’t used Ruby much, have you?

  8. Kai MacTane says:

    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.

  9. salamander says:

    You may find this page quite interesting:
    http://noga.muti.co.za/programming_languages

  10. Frice says:

    For a more professional popularity list of programming languages, try this link:

    http://www.tiobe.com/index.htm?tiobe_index

  11. david says:

    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.

  12. troels says:

    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.

  13. Rob Palmer says:

    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.

  14. Pingback: The Technological 7-Year Itch

  15. Pingback: Links of the Day 12/07/2012 | Buzu’s Oficial Blog

  16. Farmville farms even include free gift that is especially designed for the neighbors on their farm visit.

    Article Source: Media is a creative design group that specializes in Video Marketing, Website Design, Search Engine Optimization, Graphic Design,
    and Social Media Marketing. It is a platform used by hundreds of millions of people and this amazing
    potential can be used for business as well.

  17. Adobe Keygen says:

    Because here is a list of multiplayer games is that the leave was asked for more.
    The ease of use and dissemination of content, tagging of friends and
    related users on shared items is yet another great Facebook feature.
    Gone are the days when the evening, go out Night
    Weekend and hard rock festivals organized a burst of freshness and energy, which allows people to
    face the Blues on Monday, with confidence and determination.

  18. Pingback: FEX 技术周刊 – 2016/01/25-IT大道

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s