Wednesday, December 5, 2007

On Programming Language Popularity

My old pal and CIO editor Esther Schindler has written a blog entry with the deliberately inflammatory title of "Is Computer Language Popularity Important?"

Well, you gotta drive traffic somehow.

And it is a good, if hoary, question. While Esther follows up the question of which language is "best" by adding "best for what?", it should be fairly obvious that the continuation of "Is popularity important" is "important to whom?"

Before going into that, though, let's pick some points (hey, it's almost a fisking):
At the developer level, language choice is completely personal. Like picking a brand of hammer or carving knife, the tool should fit well in your hand. Some people think better in Python than in PHP, and God help anyone who thinks in LISP.
The tool analogy is probably the only one available but it's just not a very good one. If I use CodeGear's JBuilder to program a web-based front-end in Java, the language doesn't really parallel with the brand--the brand (Codegear JBuilder) does.

So, is the language the tool, then? No, that's not a really good analogy either. The environment (JBuilder's IDE, debugger, etc.) is really the tool. That's what you're using to put your materials together with. And therein lies a clue: The language is sort of like the materials--it's the medium in which you build. (The platform comes in to play as well, like a foundation.)

I doubt anyone would consider the materials used in building as being "completely personal". But since human-written code is all mulched down in to the same zeroes and ones, there is an interchangeability you get as far as the final product goes.

But even there, the analogy falls apart because code seldom dies. Code is a factory you use to produce software. For any real project, you'll spend the vast majority of your time going back to the factory to retool the product.

There might be a political correctness to saying the decision is completely personal, but no coder believes that. There are quantifiable differences between toolsets and languages. Otherwise, "best for what?" would make no sense as a question.
Programming language adoption follows the genetic rules behind duck imprinting: the first creature a duckling sees is perceived as its parent. My first programming languages were PL/1 and FORTRAN, and despite writing production code in several others, from standards like C and REXX to obscure languages like Mary2. Yet, I can write FORTRAN code in any language.
A lot of people believe this. And I suppose it must be true for some people. They tell me they think using language, so I believe them. When I tell them I don't think using language--I think using thoughts that I then translate into language--they often don't believe me.

Esther and I used to hang out on Compuserve's Computer Language Magazine Forum with such luminaries as Jeff Duntemann and David Gerrold. (Just to name two: That forum was a freaking Algonquin Round Table of programming genius. It was there I learned what little humility I have.) If memory serves, David was on the language side--but he's also a professional writer of quality sci-fi, so you know, he's got that goin' for him.

When I program, I think of what I want to accomplish--the end result--and then I organize it using whatever conceptual tools I have handy (often graph paper, if I need to write stuff down), and then (and only then) do I code it.

I learned, in order: Basic, Assembler, PL/I, Pascal, C, Smalltalk, Rexx, C++, Eiffel, Java...well, and it gets blurry after this point, but I've used most of the common scripting languages (PHP, Perl, Python, Javascript, Ruby) as well as C#. I occasionally still reluctantly do macros in Basic, but I spent most of my seven years programming Basic hoping for something better. (PL/I was great but I sure didn't have it on my 8086.) I've probably done more Pascal programming in the past 20 years than any other language but I surely don't think in it. (At least, not until the last possible moment.) But I've gone through periods where I've done nothing but REXX or C# or whatever. (Right now I'm primarily doing Delphi-style Pascal, Squeak-flavored Smalltalk, SQL, Flash, and Javascript.)

In fact, to my mind, a good language is one you don't think about much. Smalltalk versus, say, C++, with its subtlety and ambiguities.

Smalltalk has probably been the biggest influence on me, and I had been programming for 10+ years before I learned it. (But it's also not just a language, so it can change the way you see the game.)
How do you decide which languages are "acceptable" in your shop? Is it because your favored development environment (such as Eclipse or .NET) builds in support for one language suite? (Thus shops choosing Visual Studio would bless C#, VB.NET, and occasionally C++, with a smattering of IronPython accepted.) Or do you look for what programming languages are "in" and thus it's easy to hire developers affordably?
So, now we're getting to the "whom" in the popularity question. She's primarily talking about employers. For most programmers, they almost couldn't care how popular their languages are. For me, I want any language I use to be popular enough that if I have a need for a particular piece of code, I don't have to write it if I don't want to, I can find it on the web.

(Obviously this is tongue-in-cheek, but wouldn't that be great: Only write code when you want to or when it would make you rich.)

As for when I'm hiring, or have a say in hiring, I never look for programming languages. I look for aptitude and flexibility. In most cases, I'd rather take a great programmer and teach them a new language, then a mediocre programmer who's familiar with a particular paradigm.

I could say a lot more than this but that's enough for now.

4 comments:

  1. But mediocre programmers do not learn great languages(because they are not hot in job market)

    ReplyDelete
  2. I responded back on the CIO.com site. Clever of us, isn't it, to double the site traffic?

    ReplyDelete
  3. Hiren,

    Excellent point. I'd tend to hire someone with oddball languages on their resume because it speaks of a genuine interest.

    ReplyDelete

Grab an umbrella. Unleash hell. Your mileage may vary. Results not typical. If swelling continues past four hours, consult a physician.