Developers

The Tower of Techno-Babel: What Languages Do Devs Love Now?

IT developers are moving toward higher-level languages that make their work simpler in order to keep up with business needs.

That simplicity is found in lingos such as Java, C Sharp (C#), Visual Basic and .Net.

However, even those languages are sometimes not simple enough for the Web 2.0 world, spurring developers to also turn to dynamic languages such as PHP and Ruby, which can provide a faster return on development efforts.

Keep It Simple

Simplicity equals speed in application development, and that speed is being driven by the move to Web 2.0.

“There’s a desire to build applications fast because of the speed of Internet time,” IDC analyst Al Hilwa told TechNewsWorld. “People have moved to rapid development because no one knows how long new applications will survive.”

The recession is also forcing the move toward simplicity, according to Shaun Connolly, vice president of product development at enterprise Java application framework vendor SpringSource.

“When times are high, languages get more complex, and when there’s a recession … jobs are cut and everybody goes for simpler languages,” he told TechNewsWorld.

Who’s on First?

Depending on the source, Java is either the No. 1 or No. 2 programming language in terms of popularity among IT developers.

IDC surveys show Java is the most widely used language, according to Hilwa. “Java is a nose ahead of .Net from a lot of the surveys we see,” he said.

However, Dutch firm Tiobe, which puts out a monthly index ranking programming languages by their popularity, ranked Java and C Nos. 1 and 2, respectively, in March. Tiobe searches the Web for its data. It calculates the popularity of a language by the number of lines of code developers write.

Another site that rates programming languages, LangPop, ranks C as the clear leader over Java for the top slot. This ranking comes from its normalized search results, obtained by using various search engines and examining various Web sites.

On Tiobe and LangPop

Tiobe bases its ratings on three factors: the number of skilled engineers worldwide; the number of courses run in the various programming languages; and the number of third-party vendors working in those languages.

Both Tiobe and Lang Pop search the Web to get their results.

LangPop counts the number of people developing code in a particular language rather than lines of code, because languages like C have more lines of code than shell scripts.

One should take these figures with a grain of salt, however. Tiobe’s methodology is faulty, if you ask Tim Bunce, who wrote and maintains the PERL DBI module, the standard database interface for PERL. Meanwhile, LangPop says its own methodology is not scientific.

The Power of Microsoft

Microsoft’s programming languages are deeply entrenched in the enterprise.

“Yes, Java is the developers’ tool of choice, and the majority of new programs are now written in Java, but there’s a massive set of Microsoft Windows developers,” Wayne Kernochan, president of analyst firm Infostructure Associates, told TechNewsWorld.

The power of the installed base of Microsoft developers can be seen in the March index of programming language popularity from Tiobe. C++ comes in third, PHP fourth, Visual Basic fifth, Python sixth and C# seventh.

Meanwhile, .Net is gaining ground on Java as Microsoft continues its drive to penetrate the higher levels of the enterprise. “In very large firms, it’s not unusual to find both .Net and Java development shops side by side,” IDC’s Hilwa said.

Java and .Net are both frameworks with a set of libraries, routines, and runtime code that gets compiled, Hilwa said.

Java’s Slow Slide Downward

Microsoft’s strength in the enterprise may keep .Net around for a while, but Java’s position may be challenged by its own complexity.

“Java and its variants like Perl, Ajax, Python and Ruby, which effectively generate Java code, are unnecessarily low-level languages,” Infostructure Associates’ Kernochan said. “Adopting Java was, until recently, a step back in programmer productivity.” [*Editor’s note]

That has led to programmers adopting drag-and-drop tools that hide Java’s complexity and let developers do rapid prototyping, Kernochan added.

“Programmers want to write browser applications and Internet architecture applications, and for that, the .Net framework per se has not so much to offer,” noted IDC’s Hilwa. “Java is also being … displaced slowly, because the browser side of things is becoming more popular and the browser is now becoming the application.”

IBM, for example, has a project codenamed “Opus Una,” which is built around the browser as an application platform.

Dynamic Languages

The increasing need for simplicity and even faster application development to keep up with the move to Web 2.0 has led to the rise of dynamic languages such as Ruby, Groovy, Python and PHP.

These dynamic languages make programming more flexible and let developers abstract and write even higher-level code so that they do not have to worry about memory management and other low-level issues, Hilwa said.

However, dynamic languages are not a panacea. “They could create code that’s difficult to read, that’s not so structured and that’s difficult to maintain,” Hilwa said. “But they tend to be more productive, so you end up with a lot less code and write code more quickly.”

PHP is the most widely used dynamic language because it is simple and can keep up with the demands of Web application development, Hilwa added.

Ruby is also widely used, especially on the Rails framework.

“My indications are that there is a significant trend towards Ruby on Rails from vanilla Java, Perl and SmallTalk, and, possibly from Python,” Infostructure Associates’ Kernochan said.


*ECT News Network editor’s note: In email correspondence elaborating on his comments for this article, Wayne Kernochan told TechNewsWorld, “Ajax (although strictly speaking this isn’t a programming language), Perl, Python and Ruby (the main names mentioned by Java developers) should be viewed as part of the overall Java movement — that is, the code written is different but the code generated is effectively Java. They are in reaction to many of the obvious shortcomings of Java as a programming language, and so developers will move back and forth between these and ‘vanilla’ Java development tools as appropriate.”


6 Comments

  • What about other platforms that are trendy at the moment. In these times of crisis I have understood that many developers are moving to mobile platforms and the iphone is one of the most popular choices for starting developers. I quit a Java strong based course to start learning Objective-C and Cocoa on my own. I would imagine there are a lot of people out there doing exactly the same.

  • The commenters are quite correct that Ajax is not a "programming language" and that those development approaches cited are not, strictly speaking, "variants of Java." The fault is not Richard’s; in my haste, I did a sloppy job of summarizing my viewpoint.

    That viewpoint is as follows (hopefully, I’ll do better this time): Ajax, as per Wikipedia, is a collection of "development techniques" (to my mind, a "meta-language") that allow web programmers to access other programs asynchronously. It used to require JavaScript (and thus, in that sense, to focus on object-oriented coding); now you can also use VBScript and other "programming-language code". Perl was originally a pastiche of straight-line/’functional" and object-oriented commands (Wikipedia claims it is "high-level", but based on the latest examples cited there, I tend to disagree). From what I heard last year at a Sun developer event, from frequent use in relation to the Web, it has tended to focus more on object-oriented programming. Ruby is primarily an object-oriented language based on Perl and Smalltalk, using the "principle of least surprise" (when you program, you should expect what you get). Again, in the real world, from what I hear, the result is typically object-oriented code. Python, like Perl, is a pastiche of object-oriented and other approaches, this time with the emphasis on "readability", but again, according to my observations, its object-oriented statements are now used more frequently than the others.

    The salient point about them all, from my point of view as a post-grad at Cornell when DOD was first creating TinMan, is their basic similarity in real-world use to each other and to Java. A more correct statement of what I was trying to say in my comment would be: whether or not their practitioners believe this, these languages and "development techniques" have far more in common with each other than with C or MODEL 204 User Language (sorry, but that’s the best example I know of a high-level language). They are primarily not straight-line; they are primarily used to produce object classes; and despite differences in things like inheritance, overall their object-oriented approach is not really that not far from the Java approach (again, for Ajax substitute JavaScript in that generalization, with prototypes close analogs of object classes). I define high-level languages as those that focus on 4GL, drag-and-drop WYSIWYG, or built-in extensive use of high-level components.

    For example, in MODEL 204 User Language (more or less), to handle a ERP situation, you might say:

    LIST1 := FIND ALL RECORDS WITH FACTORY=Boston AND QUANTITY<=5

    FOR EACH RECORD IN LIST1 ORDERQUANTITY = 10

    To handle the same situation via Ajax, Perl, Python, Ruby, or Java, a programmer would typically define and/or reference many object classes to handle the underlying Web architecture (client? JSP? CGI?), the browser interface, and translating the data-handling to SQL and back.

    In the real world, I assert, the result of much Ajax, Perl, Python, Ruby — and Java — development that I hear about is now typically generation of object-oriented code that does not incorporate 4GL, WYSIWYG, drag-and-drop, and thereby unnecessarily wastes the programmer’s time. Thankfully, vendors of Java toolsets have finally made some strides towards drag-and-drop programming and high-level interface-driven and data-manipulation commands; but I also feel it is not a good sign that commenters still don’t understand how from a macro point of view, I can see some of Perl, etc. as "variants" of the Java approach, or the result often as low-level object-oriented code of the same ilk as Java code.

    Here’s an analogy: suppose I said of today’s multifunction printers (and their software), that they are variants of a Xerox copier, and that they effectively produce Xeroxes. Strictly speaking, that’s incorrect. In the real world, however, aren’t the similarities more striking than the differences?

    Wayne Kernochan

    President, Infostructure Associates

  • Everyone involved in this article should be banned from future articles. Where did these people come from – what credentials do they have to be quoted?

    Perl predates Java by 7-8 years, and couldn’t be much farther away than anything from being characterized as "effectively generating Java code". Ajax isn’t even a language (although it implies JavaScript, which also isn’t Java in case you’re confused).

    And characterizing "higher level" languages as the article does (abstracting memory mangement and other "low-level" concerns) is just wrong- I may have missed a reference in the article somewhere, but the only languages I see mentioned at all that would be "low level" by that definition are C and C++ (excluding the MS "managed" C++ on .NET variant). The real differences and benefits of dynamic languages (duck typing, incremental execution/not requiring somewhat more complex complication and deployment cycles) aren’t touched on at all.

    Very sloppy job, overall. At least make sure you’ve got someone with some rational credentials checking this stuff-

  • I concur with rfreedman.

    In addition, without checking any references, it is clear that the research used as base for this article has a very time sensitive context. I doubt the results of the research are relevant as of the last couple of months.

  • Also, with all due respect, I must agree.

    Python is absolutely NOT a Java variant. It is written in C and therefore eventually runs in C albeit virtually. There is NO Java involved in the standard distribution of Python.

    And this statement:

    However, dynamic languages are not a panacea. "They could create code that’s difficult to read, that’s not so structured and that’s difficult to maintain," Hilwa said. "But they tend to be more productive, so you end up with a lot less code and write code more quickly."

    is not believable. Without any experience in a programming language one could clearly see that it is contradictory. "…difficult to read, that’s not so structured and that’s difficult to maintain" does not at all equate to a language that is "productive" and can that you can "write code more quickly"

    For those who are familiar with dynamic languages know that they are the easiest to read of all languages, often even when programs are written poorly. Being high level languages, they don’t have to be structured, but all of the languages listed in the article are quite well structured.

    Not to mention that non-dynamic languages can *definitely* create code that’s hard to read.

    Compare:

    Python:

    for i in range(5):

    if ((i==2) or (i==3)):

    print "i=", i

    C:

    for (int i=0;i<6;i++) {if (i==2 i==3) {printf("i=%d",i);}}

    Which do you think is "…difficult to read, that’s not so structured and that’s difficult to maintain"?

  • With all due respect, Mr. Adhikari clearly has no idea what he is writing about, and in this article, obviously just made things up where he needed content.

    For example:

    "Java and its variants like Perl, Ajax, Python and Ruby, which effectively generate Java code, are unnecessarily low-level languages" ??

    Excuse me? Perl is a variant of Java?

    Ajax is a language?

    Where does he get this stuff?

Leave a Comment

Please sign in to post or reply to a comment. New users create a free account.

More by Richard Adhikari
More in Developers

Technewsworld Channels