Skip to main content

3 1/2 out of 10 Languages You Should Learn Right Now

Yes, I do believe a good developer has to know more than a handful of languages. Ten sure is an arbitrary number to pick, but whatever!

Read the list, I don't want to recap it.

Of the ten languages listed, I don't find three and a half of them compelling choices.
  • C#
  • Python
  • JavaScript
  • AJAX (this is the half)
Some people might find that an odd list. If you know a little about any of the languages, you might find it even odder. If you know a lot about the languages, you'll have no trouble agreeing, I feel confident.

C# is largely what Java should have been. Python is, of course, a fantastic language for most purposes. JavaScript is essential for web work, and web work is essential for getting the rent paid, these days. AJAX, much the same.

C# and JavaScript get some crap from the OSS communities. People look down their noses at C#, having such a distaste for all things wearing the brand of Gates. JavaScript can be an ugly, incompatable-with-anything mess, but it can be elegant and powerful, as well. Both languages can play very nicely with Python, via good web services and toolkits.

Python gets some cruft from the communities who normally work with C# and JavaScript. C# developers are often not open source fans, and they don't know what these weird hippies are talking about, because Visual Basic is just fine. JavaScript users often work exclusively in the web industry, where languages like PHP reign supreme. Python and PHP do not clash, so the JavaScript world hasn't had a great past with respect to Python. A lot of this is changing with the work being done at Mozilla getting Python support into the platform, adopting Python features for JavaScript 2.0, and PyPy being able to compile a python interpreter to JavaScript (crazy!).

And, quickly, why the other 6 1/2 languages just don't make the cut, or under what circumstances you might justify learning PHP, for example.
  • PHP
    So many of us hate it, but we work with it day in and day out. Sometimes you hate what you do, but you the bills it pays. Do many people enjoy PHP? No, but many of those people get paid for it.
  • Perl
    Very little perl these days is used off the web, and if you don't have the freedom to use something fun like Python, then PHP is even a more fitting choice than Perl.
  • Ruby and Ruby on Rails
  • Ruby on Rails isn't really a language, unless you buy into the idea that Ruby allows for use as a DSL engine. Ruby was around for a long time with no fan real fanbase, until Rails stole the scene and we are largely just waiting for the tidal wave to subside. Ruby isn't a terrible language, but I find it odd and there is little weight in a language that is effective carried by a single product.
  • Java
    The promise this language once showed has waned just in time to see Sun almost get the picture before its flame is extinguished. The niche Java fit is filled nicely with languages like Python and Ruby.
    There is a long held stubborn view in the Java world that all things must be Java. Look at their toolkits written entirely in Java, and even prefering low-level work done in Java, rather than wrap existing libraries. Much of this is in the name of portability, but in the end it just means that I have to wait longer for Eclipse to load than it took my machine to boot up in the first place.
  • VB.Net
    I have not used the .Net versions of Visual Basic, but its ancestor is not a fun thing to live with. Even given its improvements (so I hear), it looses a lot of its weight anymore.
    These statements should be taken with salt, because I haven't worked with VB.Net, but here they are anyway. Being a .Net language, it shouldn't matter what language you use, so long as it utilizes the CLR. That means you could even use C# or Python to write the code for Excel and Access, which was one day the only reason anyone had to touch Visual Basic. So with the advent of IronPython, and the myriad of languages that can take VB's place in any given project, where is the need for this language anymore?
As Johnny Storm says, "Flame on!"

PS - That was a punny reference to flamewars. ... get it? ahem. I'm leaving.


Anonymous said…
AJAX isn't really a language but in general I must agree.

C/C++ will not dissapear for a long time as well. At least for low level stuff. While PyPy is not complete :-)
Anonymous said…
Java niche place?

When browsing job search engines Java fits more than 40% of software developer vacancies, while next on the list C++ is less than 15%.

I tried C# once, but it is years behind Java in many important areas (no JPA, no JMS, poor performance).

And be realistic, Eclipse load fast, really fast and run fast, really fast if you have enough RAM -512 MBytes-. It's just that Eclipse stores "everything in an inmemory relational database" ( )
Anonymous said…
VB.Net appears to be the only language that plays well with COM.

It is really hard to use COM with C#. Since C# doesn't support late binding, you have to write a lot of reflection code. This is especially true with the libraries that only offer late bound access to some of their methods.

C# also doesn't handle reference and optional parameters very well. Since you cannot cast away the refence behavior, you have to create a bunch of temporary variables of type object. Often these end up holding a pointer to Reflection.Missing.

object missing = Reflection.Missing;
wordDocument.PrintOut(ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing);

Anonymous said…
> I tried C# once, but it is years behind Java in many important areas (no JPA, no JMS, poor performance).

JMS: MS Message Queues was released a long time ago.

JPA: LINQ is the MS answer to JPA and related technologies. Alas, that is at least a year away.

You need to be more specific about your performance concerns. I know the VS IDE sucks, but where are you seeing
Anonymous said…
>> MS: MS Message Queues was released a long time ago.

The case is that a Message system is just as usefull as the number of different platforms it support. And while JMS is industry standard that interact with main ones (IBM, SAP, Oracle...) MS Message Queue just interact with itself. And if your soft. doesn't interact with IBM, SAP and Oracle your soft. is out of business.

>> JPA: LINQ is the MS answer to JPA and related technologies. Alas, that is at least a year away.

That's probably why so many people prefer NHibernate (the mate of Hibernate, that preceded JPA).

Popular posts from this blog

CARDIAC: The Cardboard Computer

I am just so excited about this. CARDIAC. The Cardboard Computer. How cool is that? This piece of history is amazing and better than that: it is extremely accessible. This fantastic design was built in 1969 by David Hagelbarger at Bell Labs to explain what computers were to those who would otherwise have no exposure to them. Miraculously, the CARDIAC (CARDboard Interactive Aid to Computation) was able to actually function as a slow and rudimentary computer.  One of the most fascinating aspects of this gem is that at the time of its publication the scope it was able to demonstrate was actually useful in explaining what a computer was. Could you imagine trying to explain computers today with anything close to the CARDIAC? It had 100 memory locations and only ten instructions. The memory held signed 3-digit numbers (-999 through 999) and instructions could be encoded such that the first digit was the instruction and the second two digits were the address of memory to operate on

The Range of Content on Planet Python

I've gotten a number of requests lately to contribute only Python related material to the Planet Python feeds and to be honest these requests have both surprised and insulted me, but they've continued. I am pretty sure they've come from a very small number of people, but they have become consistent. This is probably because of my current habit of writing about NaNoWriMo every day and those who aren't interested not looking forward to having the rest of the month reading about my novel. Planet Python will be getting a feed of only relevant posts in the future, but I'm going to be honest: I am kind of upset about it. I don't care if anyone thinks it is unreasonable of me to be upset about it, because the truth is Planet Python means something to me. It was probably the first thing I did that I considered "being part of the community" when I submitted my meager RSS feed to be added some seven years ago. My blog and my name on the list of authors at Plan

Pythonic Defined

Introduction Losing is Good Strings Dictionaries Conclusion Introduction Veterans and novices alike of Python will hear the term "pythonic" thrown around, and even a number of the veterans don't know what it means. There are times I do not know what it means, but that doesn't mean I can define a pretty good idea of what "pythonic" really means. Now, it has been defined at times as being whatever the BDFL decides, but we'll pull that out of the picture. I want to talk about what the word means for us today, and how it applied to what we do in the real world. Languages have their strengths and their idioms (ways of doing things), and when you exploit those you embrace the heart of that language. You can often tell when a programmer writing in one language is actually more comfortable with another, because the code they right is telltale of the other language. Java developers are notorious for writing Java in every language they get their hands on. Ho