Apply today for a FREE subscription to CIO Magazine!
Sun, Nov 25, 2007 13:33 EST

|
Posted by: Esther Schindler in Best Practices Topic: DevelopmentBlog: You're the Boss
Current Rating: |
Ever since the language wars were about COBOL versus PL/1, developers have argued about which one is "best." Best for what, though? Every language is a tool suited to a particular task, and the wise programmer chooses the best for the job. On the other hand, expertise in an in-demand language can ensure a steady income, and those who do the hiring want to bring on people who can make their chosen language sit up and sing. Who decides which languages a company will support, and on what basis is that decision made? Is the language's popularity a key criteria... and should it be?
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.
Aside: 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. At one time, I dreamed in FORTRAN, compete with numerical labels in the margin of each dream. (This may have been the point at which I decided it was time to get a life.)
In business and managerial terms, however, the choice of a programming language is a much larger issue. A corporate standard language (or at least set of languages) ensures that the entire staff can read any in-house code, if not adequately maintain it. Predictability is a good thing, even if it's boring, though I've seen some mighty strange internal standards. In the mid 1980s, Ramada Inns let developers work on PCs in only Assembly language and interpreted BASIC, which meant that otherwise trivial apps were written in Assembly because none of the developers could stand BASIC. Turbo Pascal was smuggled in like booze at the office potluck.
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?
If you care about affordability, you might be in luck. Someone took the time to analyze language popularity:
We have attempted to collect a variety of data about the relative popularity of programming languages, mostly out of curiousity. To some degree popularity does matter — however it is clearly not the only thing to take into account when choosing a programming language. Most experienced programmers should be able to learn the basics of a new language in a week, and be productive with it in a few more weeks, although it will likely take much longer to truly master it.
Based on their results, the most popular languages today are C, Java, and Python. The results are interesting—well, okay, they're fascinating if you're a software development and statistics geek like me, and for your sake I hope you aren't. But I take issue with some of their methodology.
First, it's based largely on general web searches, such as, the site says, queries like language programmer -"job wanted" site:craigslist.org. As they admit, "Popular languages are used more
Hi,
I'm glad you found the results interesting, it was a fun project, and it should continue to be interesting as we update the results from time to time and add trends.
You point out some flaws with the survey, most of which I believe I gave a nod too in the text accompanying the results, because they are things worth taking into consideration.
However, I think *any* survey of this type is bound to have some flaws, because it's an attempt to know something that really cannot be known down to the details because of its very nature. I can't go around counting files in different languages in Oracle, Windows, MS Office, to say nothing of all the code written by myriad smaller shops throughout the world. So I have attempted to take what I can get, be clear about the biases that each statistic may suffer from, and sum everything together. I do stand by what emerges, as I think it's a fair picture of what I've seen 'out there'. I would, of course, welcome additional sources of information. Another thing that might be fun, given the time to work on it, is some extra javascript code that lets you, the user, give weights to the various source utilized, in order to see how that affects the grand total.
Thanks,
Dave Welton
DedaSys LLC - http://www.dedasys.com
Please don't take my criticism as an indication that you're headed on the wrong track, Dave. I'm a professional nitpicker, after all. I'm still quite taken with your data!
One additional resource you might consider is indeed.com, a job hunting site where I've personally wasted entirely too much time playing with their tools. (Let's see, at indeed.com/salary I can compare, say, the pay for python and perl programmers in PA. Sure, the published salaries are guaranteed to be on the low side—most jobs say "negotiable" unless they're warning you they cheapskates—but it's a start.) I have no idea what it takes to work with indeed.com's data but they were very nice folks and sent me a charming e-mail message after I once mentioned them in passing. (Now, maybe they'll have reason to do so again.)
Another possible resource is realrates.com, which was started by my old buddy Janet Ruhl. (She and I were co-sysops of the CompuServe Computer Consultant's forum in the late 80s and early 90s. Lovely lady.) I'm not sure how up-to-date the surrounding info is (I think Janet's attention turned away from it a few years back) but people keep updating the consulting and salary rates so it may still be useful.
One question, however, is what you mean by "popular." If you looked at popularity by the number of lines of code all-time which are still in production, I dare say that COBOL would win out, based on the language's age as well as its wordiness. I wouldn't expect most of it to be reflected online in any way simply because most of that code is and always was proprietary. And it would be unlikely to show up in job ads because most such code is now labeled as "legacy" and thus its maintenance is outsourced or given to people who have committed an unforgivable sin. Still, there's a big financal company in New Jersey who just pulled my brother-in-law out of retirement (at, my sister tells me smugly, an impressive consulting rate) because he knows all 600 of the company's COBOL programs from the inside. Popular? Heck no. Used? Sure.
Most of us think of popularity within some time frame—whether that's "what's in fashion" (or likely to become so) or "currently being used." That is possible to ask of developers, and it's among the things that Evans Data does regularly. (In full-disclosure mode: I've been the analyst on some of their reports over the last five years. And I've known the company owner since 1980.) One methodology difficulty is that very few developers write in only one language; most use a mix of several. So if you program 5% of the time in, say, Ruby, does that make you a Ruby programmer? We could argue about it over a couple of beers (especially if you're buying), but I'd say Yes, because anything non-zero implies skill even if it's at the bottom. Is that popularity, though? Is it reason enough to advise someone, "You'd better get ready for this new language on the horizon... start training the development staff now!"? That's harder to say. Which, of course, means it's a lot more fun to think about.
Dave,
I appreciate the effort you put into your study, but I have to say that part of your approach seriously skews the results against Microsoft languages. Much of the discussion around the .Net languages takes place in online communities focused on those languages, rather than on the sites you included in your study. The same can be said for open source development using .Net languages. Finally, many .Net developers avoid sites like Slashdot because they do not want to be subjected to the serious Microsoft-bashing that is so prevalent on those sites. I don't know what the answer is - including those Microsoft-focused sites could also skew the results - but it would be worthwhile to investigate alternatives if you update the study in the future.
Ed
This article highlights a big problem with today's automated society... the never-ending attempt to assign meanings to metrics. Typically metrics are interpreted in a way that supports the pre-determined conclusions of the person doing the survey.
For example: I don't believe the various graphs and metrics that show "C" as the most popular computer language. I have met very few people who actually prefer to program in C. It is way too tedious.
If the statistics are generated by "lines of code" of course C will generate a high number since it is such a low-level language that generates large number os lines of code.
If the statistics are based on want ads for "C" skills, there are various explanations other than the popularity of C. One possible explanation: There is such a shortage of C skills because of its lack of popularity that finding resources is difficult (hence the long running ads). Additionally, many companies who are seeking Java skills also request C skills. If they cannot find the Java skill, they can teach Java to a C programmer. That doesn't mean they are coding in C.
I provide consulting services to a large number of clients. Most of them have a small amount of C code that was purchased or developed as an experiment but none of them has made a strategic commitment to C. C is used heavily in the development of operating systems and tools but not as a business application generator.
After 30 years in IT, I have concluded that people use computer languages for the same reason they drink Pepsi or Coke... they tend to stick with the first one they learned because they are comfortable with it. Most developers do not migrate to new languages. My other observation ... the computer industry is controlled by hardware and operating system vendors and none of them are spending R&D dollars to develop a quality application development language. I rate all of the available choices as mediocre or poor and I continue to hope that someone will eventually create a quality Application Development language. This observation will probably annoy those developers who believe their pet language such as Java solves all of the world's problems. All I can say is that you will probably change your mind once you have to support someone else's code.