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.


dado1945 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" ( )
Jonathan Allen 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);

Jonathan Allen 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

Respect and Code Reviews

Code Reviews in a development team only function best, or possible at all, when everyone approaches them with respect. That’s something I’ve usually taken for granted because I’ve had the opportunity to work with amazing developers who shine not just in their technical skills but in their interpersonal skills on a team. That isn’t always the case, so I’m going to put into words something that often exists just in assumptions.
You have to respect your code. This is first only because the nature and intent of code reviews are to safeguard the quality of your code, so even having code reviews demonstrates a baseline of respect for that code. But, maybe not everyone on the team has the same level of respect or entered a team with existing review traditions that they aren’t acquainted with.
There can be culture shock when you enter a team that’s really heavy on code reviews, but also if you enter a team or interact with a colleague who doesn’t share that level of respect for the process or…

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 only re…

How To Care If BSD, MIT, or GPL Licenses Are Used

The two recent posts about some individuals' choice of GPL versus others' preference for BSD and MIT style licensing has caused a lot of debate and response. I've seen everything as an interesting combination of very important topics being taken far too seriously and far too personally. All involved need to take a few steps back.

For the uninitiated and as a clarifier for the initiated, we're dealing with (basically) three categories of licensing when someone releases software (and/or its code):
Closed Source. Easiest to explain, because you just get nothing.GPL. If you get the software, you get the source code, you get to change it, and anything you combine it with must be under the same terms.MIT and BSD. If you get the software, you might get the source code, you get to change it, and you have no obligations about anything else you combine it with.The situation gets stickier when we look at those combinations and the transitions between them.

Use GPL code with Closed S…