Saturday, September 16, 2006

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.

5 comments:

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" (http://en.wikipedia.org/wiki/Eclipse_(computing) )

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.

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

VB
wordDocument.PrintOut()

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).

I write here about programming, how to program better, things I think are neat and are related to programming. I might write other things at my personal website.

I am happily employed by the excellent Caktus Group, located in beautiful and friendly Carrboro, NC, where I work with Python, Django, and Javascript.

Blog Archive