Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/w0221/d19/s26/b02d525a/www/littletutorials.com/wordpress/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php:632) in /mnt/w0221/d19/s26/b02d525a/www/littletutorials.com/wordpress/wp-content/plugins/mycaptcha/MyCaptcha.php on line 41

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/w0221/d19/s26/b02d525a/www/littletutorials.com/wordpress/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php:632) in /mnt/w0221/d19/s26/b02d525a/www/littletutorials.com/wordpress/wp-content/plugins/mycaptcha/MyCaptcha.php on line 41

13 reasons why Ruby, Python and the gang will push Java to die… of old age


Lately I seem to find everywhere lots of articles about the imminent dismissal of Java and its replacement with the scripting language of the day or sometimes with other compiled languages.
No, that is not gonna happen. Java is gonna die eventually of old age many many years from now.
I will share the reasoning behind my statement. Let’s first look at some metrics.

Language popularity status as of May 2008

For this I am gonna use the TIOBE index (tiobe.com) and the nice graphs at langpop.com. I know lots of people don’t like them because their statistics are based on search engine results but I think they are a reasonable fair indicator of popularity.

Facts from the TIOBE index:

TIOBE Index Top 20

What I find significant here is the huge share the “C like syntax” languages have.

C (15.292) + C++ (10.484) + Java (20.176) + C# (3.963) = 49.915%

This means 4 languages get half of all the attention on the web.
If we add PHP (10.637) here (somehow uses a similar syntax) we get 60.552%

As a result we can extract:

Reason number 1: Syntax is very important because it builds on previous knowledge. Also similar syntax means similar concepts. Programmers have to make less effort to learn the new syntax, can reuse the old concepts and thus they can concentrate on understanding the new concepts.

Let’s look at a group of 10 challengers:

Python (4.613) + Ruby (2.851) + Lisp/Scheme (0.449) + Lua (0.393) + SmallTalk (0.138) +
Haskell (0.137) + Groovy (0.131) + Erlang (0.110) + Caml (0.090) + Scala (0.073) = 8.985%

This is less than the attention Visual Basic gets: 10.782% and leads us to…

TIOBE Index Top 21-50Reason number 2: Too much noise is distracting. Programmers are busy and learning 10 languages to the level where they can evaluate them and make an educated decision is too much effort. The fact that most of these languages have a different syntax and introduce different (sometimes radically different) concepts doesn’t help either.

Looking at the trend for the last 7 years we can see a pretty flat evolution in popularity for most of the languages. There are a few exceptions like the decline of Perl but nothing really is earth shattering. There are seasonal variations but in long term nothing seems to change.

TIOBE Trend

This shows that while various languages catch the mind of the programmer for a short time, they are put back on the shelf pretty fast. This might be caused by the lack of opportunity to use them in real life projects. Most of the programmers in the world work on ongoing projects.

Reason number 3: Lack of pressure on the programmers to switch. The market is pretty stable, the existing languages work pretty well and the management doesn’t push programmers to learn new languages.

Number of new projects started

Looking at another site that does language popularity analysis, langpop.com, we see a slightly different view but the end result is almost the same from the point of view of challenger languages.
What I found interesting here was the analysis regarding new projects started in various languages. The sources for information are Freshmeat.net and Google Code. The results show a clear preference for C/C++/Java with Python getting some attention.

Reason number 4: Challenger languages don’t seem to catch momentum in order to create an avalanche of new projects started with them. This can be again due to the fact that they spread thin when they are evaluated. They are too many.

Other interesting charts at langpop.com are those about books on programming languages at amazon.com and about language discussions statistics. Book writers write about subjects that have a chance to sell. On the other hand a lot of discussion about all theses new languages takes place online. One thing I noticed in these discussion is the attitude the supporters of certain languages have. There is a lot of elitism and concentration on what is wrong with Java instead of pointing to what their language of choice brings useful and on creating good tutorials for people wanting to attempt a switch.

Reason number 5: Challenger languages communities don’t do a good job at attracting programmers from established languages. Telling to somebody why she is wrong will most likely create a counter reaction not interest.

Let’s look now at what is happening on the job market. I used the tools offered by indeed.com and I compared a bunch of languages to produce this graph:


Java, C, C++, C#, Python, Ruby, PHP, Scala Job Trends graph

Reason number 6: There is no great incentive to switch to one of the challenger languages since gaining this skill is not likely to translate into income in the near future.

Well, I looked at all these statistics and I extracted some reasons, but what are the qualities a language needs and what are the external conditions that will make a programming language popular?

How and when does a language become popular

  • A new language has to gain the support of a big number of programmers using, at the moment, a different language. To do this it has to leverage things those programmers already know. (C++ built on C, Java built on C++, C# built on C++, Java and Delphi)
  • A new language stands a chance when there are some pressing problems with the existing languages. For example Java managed to cover two problems plaguing the C/C++ world: complexity (C++) and memory management (C/C++). These two were real problems because projects plagued with bugs created by complexity and with memory leaks.
  • A changing market can also help a lot. Java managed to ride the Internet growth. They lost the browser battle, applets are not very used, but the switch to the server market was a huge success.
  • Based on history we can see how all successful languages had very powerful sponsors. C/C++/Java/C# are all creations of big companies like AT&T, Sun, Microsoft. All these new languages are born in universities and research institutes or are coming from very specific niche domains.
  • A popular language needs to be generic and applicable in most of the domains if not all.
  • Popular languages usually succeed fast. They have to avoid getting “old”. When programmers see a language around for many years without a growing market share they start to feel just okay not learning it.
  • Popular languages have cool names :)

So we can draw more reasons:

Reason number 7: The new languages don’t introduce an earth shattering improvement in the life of most of the programmers and projects.

Reason number 8: There is no killer application on the horizon. This means new languages compete in old markets with established players.

Reason number 9: None of these new languages has a powerful sponsor with the will and the money to push them on the market. Powerful sponsor translates in investment in the libraries - see Java. All these new languages are born in universities and research institutes or are coming from very specific niche domains.

Reason number 10: Most of these languages lingered around too much without stepping decisively into the big arena.

For one’s curiosity here is a list of talked about languages with their birth date:
Ruby (mid 1990s), Python (1991), Lisp (1958), Scheme (1970s), Lua (1993), Smalltalk (1969-1980), Haskell (1990), Erlang (1987), Caml (1985), OCaml (1996), Groovy (2003), Scala (2003)

Compare this with older successful languages:
C (1972), C++ (1983), Java (1995), C# (2001), BASIC (1964), Pascal (1970), FORTRAN (1957), Ada (1983), COBOL (1959)

It is pretty obvious most of these “new” languages lost the train to success.

Why many of the new languages will never be popular

  • I already mentioned syntax a few times
  • Some languages made strange mistakes. For example Python is a great language but the idea of using indentation as block demarcation really is a cannon ball chained to its feet. While most of the pythonistas defend this idea with a lot of energy, the truth is this feature makes it really a dangerous tool in big, world wide distributed projects - and most important enterprise projects are big and distributed. For a better analysis from somebody with real experience read this: Python indentation considered boneheaded
  • Some languages have very difficult to “get” concepts. For example most of the supporters of functional languages are proud of how concise statements are in their language. This is not really useful for somebody used to think procedural or object oriented. If the only gain from binding and twisting your mind is typing a few less lines then any experience programmer will tell you that this is not the main activity. Writing the first version is just a small part of the life cycle of a project. Typing the code is even smaller compared with the design time. From the second version the game changes dramatically. Maintainability is way more important. Also very important is to be able to add features and to refactor the code. Readability is paramount from version two, and for both development and support teams.
  • The nature of a part of these languages makes it difficult to build really good tools to support them. One very useful feature is the automatic refactoring provided by advanced tools like Eclipse.

Reason number 11: “Features” that look and are dangerous for big projects. Since there are not a lot of big projects written in any of these languages it is hard to make an unbiased evaluation. But bias is in the end a real obstacle for their adoption.

Reason number 12: Unnatural concepts (for majority of programmers) raise the entry level. Functional languages make you write code like mathematical equations. But how many people actually love math so much to write everything in it? Object oriented languages provide a great advantage: they let programmers think about the domain they want to model, not about the language or the machine.

Reason number 13: Lack of advanced tools for development and refactoring cripple the programmer and the development teams when faced with big amounts of lines of code.

How would a real Java challenger look like

  • The successful challenger should try to build on existing knowledge and infrastructure. Scala is actually getting on this road. Running on the JVM and being able to reuse Java libraries is a huge advantage. Using a similar syntax to Java is also a great decision that might push Scala into mainstream.
  • The challenger needs a killer application. Erlang might have the killer application with distributed computing features. But distributed computing is not that mainstream yet, even on the server market.
  • It has to be born inside a powerful company or to be adopted by a big sponsor. All the challenger languages are lacking a sponsor at this point. Sun seems to be interested in some of the scripting languages. But I am not sure if their attention is gonna help any of these languages or is gonna distract and kill them. And Sun already has Java so we can suspect they are trying to actually promote Java through these languages - see the scripting engine

Pick me, pick mee, pick meeee!!!

Looking at all those (smart) languages and all the heated discussions that surround them makes me think about the donkey from Shrek yelling “Pick me! Pick mee!! Pick meeee!!!”. In the end only one can be the real winner even if in a limited part of the market.

For scripting Python has potential, huge potential. But it has to do something about the indentation fetish to be able penetrate the big project market. Without that the web looks PHPish.

Ruby is elegant but alien. I saw its syntax described like “the bastard son of Perl” (just google it). Its new popularity is based not on the language itself but on a framework (Rails) that can be reproduced in other languages even if with less elegance. Struts 2 attempts just that.

Scripting languages (Groovy, Rhino…) on top of Java and the JVM are interesting but they will never be primadonnas. They cannot compete with Java because they are slower. They can be useful when scripting a Java application

is a desirable feature (VBA is an excellent tool for Microsoft products and other Windows products and it pushed Visual Basic up the scale).

Scala has a lot of good cards. Building on the JVM, familiar syntax, huge inherited library, can be as fast as Java on the JVM… But where is the sponsor and where is the killer application in a shifting market?

The danger for Java doesn’t come from outside. None of these new (actually most of them are pretty old) languages have the potential to displace Java.
The danger for Java comes from inside and it is caused by too many “features” making their way into the language and transforming if from a language that wanted to keep only the essential features of C++ into a trash box for features and concepts from all languages.

In the end I want to make it clear that I am not advocating against any of those languages. There is TAO in all of them. I actually find them interesting, cool and useful as exercise for my brain, when I have time. I recommend to every programmer to look around from time to time and try to understand what is going on the language market.

This article is part of a series of opinions and rants:

61 Responses to “13 reasons why Ruby, Python and the gang will push Java to die… of old age”

  1. I think you are neglecting something here - the ability to provide _only_ binaries (and speed reasons).

    But Ruby and Python are different. They are about fun, readabilty (yes, they are BOTH), maintainability.
    The indent is unfortunate but you are overrepresenting it:

    The C/C++/C# languages were popular because you could provide only a binary and sell that to customers. This was a way to gain income for many many years.

    The second reason is speed. C languages will always remain faster (unfortunately, because I think a compiler should “understand” what is meant and use that machine instruction, no matter what human text is used to achieve it)

    These two areas will thus NEVER replace those old languages. But I tell you, both ruby and python will gain in popularity. And PHP too (unfortunately), but you know why? Because the www will not help C-based languages that much (maybe c# but not as much)

  2. “Lately I seem to find everywhere lots of articles about the imminent dismissal of Java and its replacement with the scripting language of the day or sometimes with other compiled languages.”

    Where? I can’t think of a single article I’ve read which said Java is going to die, though I can name dozens which argue against this silly strawman. The closest thing I’ve read to articles describing the demise of Java is articles arguing that there are better languages out there; but Java being outdated and not an ideal language does not mean that its going to die anytime soon. Just look at Cobol. And in fact the only thing your google search ratings really prove is that your argument that everyone is talking about these other languages is dead wrong.

    And your arguments are not exactly strong, either. Please get over Python’s use of whitespace. Its no worse than C/C++/Java’s use of curly braces to do the same thing, except that it forces developers to write somewhat readable code (and no, whitespace does not need to be invisible; almost any editor let alone IDE can be configured to display characters to show where whitespace is and isn’t). Complaining that Scala doesn’t have a killer app yet is pretty silly when it really only began getting looked at a few years ago (and arguably it already has two killer apps, Erlang-style concurrency and connections to the JRE library). And I think you are missing the point with many of these talked about languages. For instance Erlang is being talked about not because its a brand new language that is challenging Java for its top spot in language use, but because its approach to concurrency solves many problems that Java developers are just now hitting. Just because something is old doesn’t mean you can’t learn anything from it.

  3. “The new languages don’t introduce an earth shattering improvement in the life of most of the programmers and projects.”

    WRONG! ;-)

  4. C++ wasn’t sponsored by any big company.

  5. Ruby is younger than python !!! It’s not 1990 !

  6. Well ruby has Ruby on Rails, and python django… both of which are fairly new, but I think a lot of websites will be built on these and they’ll capture a lot of php developers.

    Python is very easy to embed, being used from blender to xbmc and in all sorts of other places… jython is getting better and will be up to a par with normal python in a couple of years providing great java integration.

    And then of course theres pypy which when ready in (3 years?) will provide great speed in all sorts of environments from native to actionscript.

    In other words, I ruby and python are at a tipping point and the next 5 years will see them (esp python) really expanding into the mainstream.

  7. I think until the industry, as a whole, can quantify developer performance and its relationship to software performance we won’t see any earth-shattering shift in language popularity.

    I don’t necessarily believe it has to be corporate sponsorship that drives a language, as mentioned C++/C are open standards, but there definitely must be a “governed” and active community. For example, Ruby is definitely lacking in this area - opting for the Linux approach (benevolent dictator) until very recently. I kind of expecting the Apache Foundation to jump on board with a language, sponsoring it in the same sort of fashion as their existing projects.

    Sun’s (and to some extent Microsoft’s too) push to support more and more languages on the VM is an interesting twist. And, as these languages grow to support the native VM language the more interesting it will get. Libraries like Monkeybars which wrap the GUI pieces will get more attention for sure - assuming that you can actually get the best of both worlds (or cake and eat it too).

  8. I think this is a great, well-documented analysis. It’s hard to find articles on this subject that do not show some kind of bias against either side of the fence.

    I’m also grateful for the recollection of numbers about the subject. It seems like the new languages are at the left side of the chasm, the supposed gap between innovators and early adopters in this graph:

    http://en.wikipedia.org/wiki/Image:DiffusionOfInnovation.png

    I just expected people to get less defensive. It just talks about positioning of emerging languages, and everybody is jumping to prove the point wrong.

  9. My first observation is that any programmer who wishes to eat consistently needs to know 3 languages minimum and one of them really well.

    But I have to point out that your own chart tends to dispel some of your observations. Instead of response as gross numbers look at the last column that represents rate of change. Lets say any language with a +0.50 or better is ‘winning’. That means - VB, PHP, Java, Python & Delphi are the languages in the money. Some of which I take with a grain of salt. To think that Delphi is a ‘winner’ while JavaScript is not makes me a little anxious analysis wise.

    Python’s whitespace is not a problem. When I count the number of hours spent looking for a errant ‘}’ I should be retired already!

    “Java, the Cobol of the 21st Century” and that is exactly how I expect that this whole story will end. Java will never really go away but just become part of the internet long tail phenomena.

  10. I think you are wrong about syntax. Syntax is not hard to learn. Concepts and paradigms are. Objective C and JavaScript (both major languages that you forgot to mention) have c-style syntax, yet are conceptually very different. It’s not easy to learn one if you know the other. On the other hand, it’s quite easy to learn pascal if you know c and vice versa, because the concepts are so similar, even if the syntax is not.

    I think there’s just one overwhelming factor that decides whether a language will succeed or not: Having a major player decide to implement something very big and/or important in said language or just plain throwing lots of money at it. Such a decision may or may not have to do with certain qualities the language has.

    I’m sure that Googles decision to use Python as one of their 3 official languages that they use for production code and and especially their decision to use it for their App Engine, will benefit Python enormously. Having strange syntax won’t hinder it.

  11. I used Java to build my first web app because that is the language I learned in college. I also think Java is the language of choice at lot of universities.

    I think you need to consider that there are a lot of new programmers entering the work force each year that have strong Java background.

  12. I hope java becomes an old dinosaur a la c++. Do you know how much money / how hard it is to find a win32 c++ com expert? Those guys bank big big dough…and they are all develop in that area are in IT management, and as such there is a serious shortage of good people(course it is always hard to find good people) w/ current, sharp skills.

    If java falls by that way side, that’ll suit me just fine…

  13. Struts 2 is attempting to reproduce Rails !!!!!! Where would you even get such an idea

  14. Never use “university” and “strong background” in the same sentence when referring to undergraduates studying Java. The typical well-above-average undergraduate fresh out of college is a disaster on any code base, especially a Java code base.

    I prefer to hire computer-geek literature majors. They know how to read code first.

  15. I know you addressed the fact that many people don’t like the search engine-based rankings, but I thought I’d point out that ABAP, for example, is surely used in far more installations than its 27th-place ranking suggests. Any company using SAP uses ABAP, and SAP is used all over the place. Of course, it can’t be used outside of SAP, and so there isn’t much online about it… but that doesn’t mean it’s not widely used.

  16. I know that it won’t push Java to die, but the .net framework languages for windows development are a stiff competition to Java. The way that the code is JIT compiled makes it very fast executing.

    I didn’t see any mention of the great libraries that come with Java and the .net framework as a contributing factor to their popularity, but I think it is an important factor.

  17. PHP Rools! Python Drools!

    (Just kidding)

  18. If you really want braces in python

    http://timhatch.com/projects/pybraces/

  19. (The JVM is not going to die) + (LISP is not going to die) = ( http://www.clojure.org )

  20. ( The JVM is not going to die ) + ( LISP is not going to die ) = ( http://www.clojure.org )

  21. “Looking at the trend for the last 7 years we can see a pretty flat evolution in popularity for most of the languages.”

    Either
    a) you were hoping that nobody would actually look at your following chart
    b) your opinion is so biased that you neglected the evidence before your eyes

    Actually look at that chart. Do it now. Notice how C++, C, and Java have each declined more than 20% in the past 7 years. Notice how Visual Basic has increased more than 20% in that same time period.

    Your arguments are actually pretty well reasoned. But the evidence (at least, what you provide) shows otherwise.

    Of course, no matter when Java goes out of favor, you can always claim that you were right, and that it died of old age. When is a programming language old? Java is about 13 already. That’s kind of old.

  22. All high performance and crucial software applications (medical/aerospace/distributed network system etc) are written in C/C++: http://www.research.att.com/~bs/applications.html.

    Incredible what a “dinosaur” language can do.

  23. Very good article. Had a quick look at python a few years ago even purchased a book. What put me off was I cound not get the hang of using indentation for blocks, too much like the old assemblers/compilers where bits had to appear in a given column etc.

    What makes Java so great? is the added features (hope they don’t add much more now). new features, like auto-boxing (things the compiler does for you) makes the code harder to read at times. Sun should remove some backward old rarely used features and concentrate on making the whole thing a bit cleaner, instead of trying to match the Java clones (c#) for features.

    People complain/moan about Java and protability but have never had an issue so far. Would love to do C/C++ again just to get a break from Java.

    The thing I like about C type langs is they have generally have less than 50/60 keywords the other stuff is libs) makes learning the core lang easier. I did cobol once a long time ago, and you could tell it was designed by a woman (very verbose?/chatty?, lots of optional parts to statements that don’t do anything usefull - bit like my wife). The best languages are precise and to the point which engineers prefer.

  24. So there IS a new application coming with a restricted language capability. It is the iPhone and the language is Objective C, or, as referred to in the Apple implementation (the only active one, really), Cocoa. So it will be interesting to watch the increase in popularity of that language as the iPhone developer’s kit comes out past beta and after the World Wide Developer’s Conference in San Francisco in two weeks. That conference, sold out now for the first time, has many sessions devoted to iPhone programming.

  25. Ambiguity in indentation? You mean the ambiguity that turns up when the braces seen by the computer and the indentation seen by the human reader don’t match? I’ll take Python’s flavour of ambiguity in this area over the C/C++/Java version any day.

    Still, there’s a reason the SVN repository for the Python reference interpreter at svn.python.org has a pre-commit hook to ensure the Python files in the standard library don’t contain any leading tabs, and the standard Tools directory has a reindent.py script that strips out any leading tabs from Python files and standardises on 4 space indents. Any sane large scale Python shop will implement similar rules.

    (Oh, and that ’scary, scary, what is this code meant to do?’ example from the guy you linked to? It won’t even compile because the indentation is so badly screwed up. Leave out the braces on a C or C++ conditional statement or loop, and the compiler will silently assume you only meant to include the first statement, and leave out the rest.)

    For me personally, I like Python’s position as a glue language - the reference interpreter for hooking together components with C APIs, Jython for hooking together JVM based components and IronPython for hooking together .NET based software.

    @Thiago: All? Try looking up Ada some time.

    @Bob: I agree, the TIOBE chart doesn’t at all match the blog post’s comments around it. I see:
    - significant declines for Java, C, C++
    - slight declines for Perl, Delphi
    - significant increases for VB, PHP, Python, Ruby, C#
    (and what the heck happened in 2004 to make everyone go look for alternatives to Java?)

  26. you lost me on the first paragraph. calling python, ruby, or perl a “scripting” language exposes a bias. call them dynamic, call them interpreted, but do not call them scripting languages if you want your opinion taken seriously, it’s insulting.

  27. I believe that Scala supports the same emerging “killer app” that Erlang supports — i.e. easily and reliably leveraging all the CPUs in our emerging massively multi-core world. Scala supports the “Actor model” that Erlang has for concurrency.

    I suspect Scala will become a compelling option over the next 5 years.

  28. I find it bizarre that Perl is hardly even mentioned, let alone in your “group of 10 challengers”. Was this intentional? Perl is the #6 language in TIOBE index, and definitely should be classified along with Python and Ruby. It makes your argument quite a bit less credible.

    Also, the problem with TIOBE, in my opinion, is that while it has value, it only has a certain amount of value, and it shouldn’t be overstated.

    For instance, check out what happens when you change the search terms for “[language] programming”:

    http://lui.arbingersys.com

    C++ drops out of the top slot, and Javascript jumps right in. (See the NormalizedGeneralSearch2 metric.)

    Also, I think one metric is misleading. When you are doing public facing data analysis, you should include as much data from as many sources as possible, and allow users to inspect the collection process. That’s what I try to do with my site, LUI, above.

  29. The so-called “indentation problem” with Python is just because some bone-heads are still using spaces for indentation. Why do you want to risk hitting ’space’ or ‘delete’ the wrong number of times when changing indentation level? There’s *no such thing* as a half-indent in programming, and I love that Python essentially enforces this.

  30. “Based on history we can see how all successful languages had very powerful sponsors.” Of course, Python is now pretty much under the wing of Google, where Guido now works.

  31. I agree, Java is dying, but because they are layering cruft onto it, closures, generics, annotations. Once the train has left the station, its too late to add stuff. Generics, while wonderfully powerful, are cursed with a nearly C++ syntax. Anytime a professional developer has to look carefully at a line of code to figure out what it does, that is death. C++ was really cursed with all the const pointer stuff.

    What you didn’t mention, and which is nearly critical today, and will be more critical in the future is parallelism. The CPU folks can’t make a single CPU faster, but they can grow 4 or 8 on a chip and sell them for $200. Writing robust multi-threaded applications for these quad and octo processors is really hard. Much too hard.

    While C and C++ claimed highest performance titles for ages, they provide nothing to help the Lake Woebegon Programmer (all barely above average) build high performance systems.

    This is the next big thing.

  32. Pat Farrell hit the nail on the head. I cannot agree more. I don’t think Java is dying, but I think Sun is making a mistake by adding all that crud to Java. I also don’t like the annotation overkill (i.e. EJB descriptors in the code).

  33. .net framework.
    enough said.

    This article doesn’t even mention some of the most important issues. Java will die, it’s old and slow (albeit faster than it used to be) and Microsoft’s Visual Studio will replace it more and more. I’m not saying I like it but that’s what I’ve seen so far in all the companies I’ve talked to.

  34. Well, I think most of you left a very important part out of the equation. That is the developer tool. The language is the language but you have to write the code somewhere and for those that say you can do it in notepad “GET LOST!”. Companies are spending money for good code/on time code and you need something to deliver that with. I dabbled in Delphi and Java and finnaly I arrived to C# and one of the biggest reasons for staying vas the IDE, VISUAL STUDIO ROCKS. I know Java has Eclipse but somehow I don’t find that very responsive and full featured.

    Also another important thing is the driver behind the technology. While Microsoft is cursed around corners by all kind of code junkies, they actually managed to put a direction to the .Net technologies, all follow a well thought path and I give C# and VB.Net, even C++ my vote of confidence in the next decade.

  35. This is the truth of all interpreter / vm based langs, their interpreter / vm are mainly (or every of the) are made from c/c++ lang.

    Why bother learn the script based lang, except JavaScript, if you can just make everything you need with c/c++.

    And the www is still support .cgi isnt it? c/c++ lang is still useful on this area.

    But, for interest reason, i guess its just fine to learn the other lang. The workforce of java,php,c/c++ is unarguably the driving of the success of the famous lang.

    did you know the best language is the computer language that can program for itself, no need for human to learn on it. until that language is come, i rather stick with mainstream lang.

  36. “For scripting Python has potential, huge potential. But it has to do something about the indentation fetish to be able penetrate the big project market.”

    Oh come on; Python is cool because of the indentation, among other things. It makes code readable and easy to maintain, because “writing nicely” is enforced by the language itself. Code written in languages with a different syntax require more maintenance, hence more demand in folk with that skill.

    Also, re: #9, Python’s “batteries included” philosophy has never let me down. So far I was able to find a library for each of my exotic needs.

  37. ” The new languages don’t introduce an earth shattering improvement in the life of most of the programmers and projects.”

    You keep telling yourself that.

    The thing is I don’t care about ‘winning’ or ‘popularity’ - all I care about is the advantage my company has in terms of people resources and what we can achieve in what time (and compared to our competitors)

    So please keep using Java

  38. As others have said, Ruby is indeed younger than Python. The first public release was made in 1995. From Wikipedia:
    “The language was created by Yukihiro Matsumoto, who started working on Ruby on February 24, 1993, and released it to the public in 1995.”

  39. I noticed Javascript as number 11 in the Facts from the TIOBE index, meaning it’s gaining acknowledgement quite fast.

    And how to explain the absence of AJAX from these statistics ?

    I, myself, I am a strong believer in the capacity of JavaScript combined with HTML (DHTML) as a cross-browser, cross-platform and cross-media scripting language.

  40. “The thing is I don’t care about ‘winning’ or ‘popularity’ - all I care about is the advantage my company has in terms of people resources and what we can achieve in what time (and compared to our competitors)”

    It seems that things have always been that way. The best performers don’t care about what’s popular - they just use the tools that are most effective. I use Rebol because I’m 10x more productive than I could ever be with Python (and forget about Java or C). It’s not popular at all, and I’m fine with that.

    http://musiclessonz.com/rebol.html

  41. Your complaints about Python using indentation to show code structure (instead of the braces-plus-indentation that C++ uses, for example), seem kind of silly. A large number of people really like this about Python, so it’s clearly not the case that it’s a show-stopper.

    In fact, I’ve never heard of anyone who used Python for six months solid, and then said that they still hated the indentation thing. It’s a misperception, and Python actually has the better method here.

  42. ruby and python is a perl2 not java2. Java is a completly diffrent language.

  43. Agree with David S regarding the iPhone development platform and given the author’s comment:

    “Based on history we can see how all successful languages had very powerful sponsors. C/C++/Java/C# are all creations of big companies like AT&T, Sun, Microsoft.”

    As the VC from Kleiner Perkins said during Apple’s iPhone Software Roadmap presentation, the iPhone and the development on it could become more important to the world than the PC. That’s a bold statement and I sense he might not be wrong.

  44. you’ve either never really written much of anything in a functional language, or you don’t know what a mathematical equation is.

    there are plenty of reasons functional languages haven’t really caught on, but “it makes you write code that looks like mathematical equations” is not one of them, because it’s not true.

  45. What was the tool used to create the line graph/chart?

  46. Seriously, the indentation complaint about Python is pretty weak and extremely superficial. It’s perfectly natural after about 30 seconds because all (reasonable) programmers of C-style languages indent their code anyway. Python just elevates good indentation from a suggestion to a requirement.

    There are lots of reasons why a sensible person would decide Python is not useful for their project, but indentation is not one of them.

    Speaking as someone who uses and loves the productivity Python offers, let me supply you with some actual reasons why a C/C++/Java programmer would not want to start using Python:

    Slower execution, poor multithreading performance (see “GIL”), a lack of static typing, too much flexibility to put in the hands of inexperienced programmers, difficulty in calling your existing libraries (it’s not too hard to generate Python interfaces to C/C++ code, but the effort is not zero), a lack of language-enforced data encapsulation, less mature IDE support, and maybe a few others I can’t think of right now…

    I don’t find any of those to be dealbreakers for most programs I write, but some people would, depending on their development needs and style.

  47. Java is a big error at universities. Poor students.
    Python is the best !!!

  48. Reason number 14: Java is easy to learn, so stupid people can programming in java - they need only 100.000 courses etc. :)

  49. 1. Pretty good analysis. Pity you left out the whole Algol tradition dating from 1958 thru 1970 and continued by Pascal, modula ada etc …
    3. Syntaxt IS very important, as you say. But C is not good syntax, so why …?
    4. Good and free compilers are critical.
    teaching to the young, grade school and earlier is as important as in any religion.
    5. I doubt there will be new “programming languages”. Probably the future lies in “composition lagnauges” for large systems.
    6. And finally, someone give me a definition of a “scripting languages” and explain how it differs from a programmin glanguage!

  50. I see one inherent flaw in your statistics. It’s based on searches performed at search engines.

    There are several reasons people use search engines for programming languages. 1) Find a new tool or technique. 2) Find the latest version of the compiler/interpreter. 3) They are stuck and need programming advice/assistance to solve a problem.

    I’d say that the vast majority of searches performed are for help in coding (except Java which people may be trying to find out where to download the interpreter). You also have to account for people that don’t know much about programming and think that JavaScript is the same as Java (at least for the first few searches).

    All this taken into consideration, I’d say that the statistics don’t say that Java is more widely used, just that it’s programmers have the most problems/questions.

    There are several languages that are not on there including RPG which is VERY widely used in IBM Midrange programming. Did the statistics collectors just search for languages they know of (or believe to be valid)? Or does that mean that programmers in languages that were left off know what they’re doing and don’t require assistance from the Google community?

    It’s very easy to find statistics and warp them to your thesis, but taking all the facts into consideration, and understanding the collection methodology will probably render a quite different interpretation of the facts.

  51. Objective c gaining on Java because of apple WWDC? Well, apparently the attendance at Javaworld is triple that of WWDC.

    The thing I like about Java is it is a reasonable programming language for the computer (enabling refactoring, reliable large APIs) and the human (refactoring, safety, and just about everyone’s code looks the same). Small “clever” one liners will generally get broken into reused functions, why not start with a syntax that recognizes that. Serious code bases gets written then rewritten and passed around and rewritten. Java is the best mainstream language that acknowledges this. And the libraries are superb in breadth and quality, all open source. It doesn’t hurt that you can use Java on everything from a key fob to a mobile to a desktop app to a browser app to a server.

    Having never used Python seriously I can’t comment on the white space issue, but if you have a fragment of code and the spacing is borked, but it will still run (incorrectly), that’s the very definition of insanity. With brace based languages that require declarations variables will be out of scope and it generally just won’t compile, and you can use editor features to find the problem.

    Personally I find annotations to be great and their rapid uptake and simplification of Hibernate/EJB prove their value. But the core language should be cleaned up at some point.

    I would like to see more use of Java, it should be a systems level language for a complete experience of being able to examine, understand and reuse any part of what you’re working on, this was tried in the past, but the technology has advanced and the time has come to try again.

  52. @ohwell

    if you have a python code fragment that is improperly indented and add it to your existing code, it won’t run. Instead it will raise an exception.

    I’ll admit that I’m bias toward python, but a lot of the arguments put forth here against it and similar languages are pretty weak.

    I guess it really depends on the specific domain you work in, but from my point of view there is a lot of momentum behind python, and also ruby, at the moment. A quick perusal of major tech related news site articles seems to confirm this.

  53. the proliferation of languages in my opinion has created a big mess in the development world.
    every day some new languages are coming up adding more confusion than needed. The biggest problem nowadays is that to do a project today , you actually need more people or people having “fluency” in more languages.
    Having mastery of one or two languages is understandable, but fluency in over 5 languagues automatically means you are using a jack of all trade, master of none personality and this never equates to efficiency.

    We should go back to the drawing board and resimplify the development landscape. I believe a lot of the technologies added are just hype. One example among others is XML, I don’t want to start a flame war, xml is just a bloated overkill( think xml, xpath, xsl, xquery, parser, dom, sax, schema etc… you need all these to do what really ? just to create a data file that in the end comes up to 10 times more bloated than it should be !!!)

    Xml has no real value, except making it more readable to a user who needs to read the data in an XML file, while the majority of XML data is consumed by system or applications directly, which would have done better using flat files, with predefined layout. Even XML is not usable by end user at they are , they still need to be converted to tabular for usign excel or any spreadsheet app to be usable. Human mind works with data better when it is in tabular form..

    In the company I worked for, we jumped on the XML band wagon like every body because management wanted that , now we have done a 180 degree turn and gone back to flat file, which are a lot faster and needs less overhead to process. for end user data, the data is represented directly into tabular form by our programs. so far we haven’t suffered at all by going back to flat files for data interchange, although when the decision was made to go back to flat files, there were some concerns it could cause some problems.

  54. I think you are spot on. One of the main reasons Java is stronger than C++ is because Java stayed away from all the detailes that make a C++ program unreadable. However, Java is adding more and more of these stupid things (along with good things) and it looks like we will have a monster soon.
    And like C++, there is pretty good arguments for each new feature, but all combined it is just to much.
    Most fast, small and understandable open source projects go the same way. they start with a useful function which you can use after 10 minutes. Two years later they have merged with eight other projects, have an 800 page introduction book and the core functionality is hidden six layers down.
    For the other languages: saving some keystrokes is not impressive if you make the code harder to read. In small projects they have a merit because they are similair to prototyping tools. But creating a big, maintainable program means quality is key.

  55. @Henrik Holmström
    Sorry for the delay in response, I didn’t notice the new comment. I think the typing of the initial code is the least expensive step in the life of a product. Maintenance is the most expensive and there clarity of design and implementation are paramount.

  56. To Markus,

    How exactly is Ruby maintainable? I’ve already seen such wild swings in Ruby on Rails that between minor version numbers, the way certain STANDARD libraries work create an air of complete unpredictability. How is that “fun”, exactly? Duck-typing is another area which makes Ruby programmers “warm and fluffy”, but explain to me how having to query every single bloody object with a “respond_to?” is superiour to simple specify what object it was to begin with (or which it inherits) as in done in static-type languages?

    And no - the effects of tabbing in Python is not being overstated. The effects of the tabbing rigidity makes the language unusable (or at least insanely ugly) to use under some real condition. Imagine trying to embed Python script inside an HTML page (heaven forbid). Your tabbing would be completely screwed up.

    So, over a year after your post, one can clearly see that Ruby and Python have NOT made this gigantic impact that everyone assumed. Why? Because once your actually use it in a really large project, the cracks and lack of maintainability become VERY apparent VERY quickly.

  57. Nathan and others,

    please stay with Java.

  58. Java Zombie.

    Don’t be a turd. I actually like many other languages other than Java. Simply because I’ve smacked Ruby and Python around, you assume I’m a fanboy.

    Added to this your lack of an actual counter-argument to my points suggests you have nothing really intelligent to say, so perhaps it’s best to keep your mouth shut.

    As for programming languages, just to set you straight, I enjoy Groovy, Scala, Pascal, NetRexx, Modula-3, C, C++ (not really a fan of Objective-C), even a bit of Icon now and then (among other languages).

    So “please stay with Java” really shows where you personally feel the threat to you dinkie little languages comes from, eh?

  59. Best places to play, best strategies to win. Player ratings & reviews of top online casinos & pokers with highest payouts & biggest bonuses.

  60. I was quite surprised when I looked through your useful article reffering to this post. I couldn’t consider that such essay paper was written not by buy essay service! You’re a cool professional, I guess.

  61. I suppose, it’d better to range programming languages according to they popularity for special areas, like web development, system software development, database development, enterprise systems development etc.

    It’s evident that ActionScript can’t be the competitor of Java or C++ because they are applied in completely different ways. i wonder how these people haven’t counted HTML or CSS in this case?

Leave a Reply

Are you human? Type this in the box below:

  • Tracking

  • License

    • Creative Commons License