January 9th, 2007

  Pick your need, pick your tool.


I had a friend recently who asked about what programming languages they should learn. He primarily works as a system and network administrator, and had been bombarded by ‘Learn Ruby!’ from a bunch of evangelists recently. I assured him it wasn’t necessary, and came up with this interesting list.

What language you work in really depends on what you need to do. In my definitely not so humble opinion, here are the best of breed languages/platforms for each of a set of needs, if you just want to Get Stuff Done.

Applications – Java. It’s cross platform with rich libraries, and 1.6 makes it even better.

Glue – Perl and bash are best for gluing things together. On Windows this category doesn’t really exist.

Web – Ruby on Rails is the best tool out there right now. You also need Javascript, CSS and HTML.

Speed – C++ is best when it must be fast, but usually in service to another language, except for…

Video Games – C++, because speed often trumps other considerations.

Database – If you touch a database, you need to know SQL.

Applet – Flash/ActionScript is the best applet language right now.

Embedded – I believe C is still the gold standard, but I haven’t done embedded development in a while.

Mobile – Java ME appears to be the only platform-agnostic answer currently, but again, not my field.

The above is based on my knowledge, as of right now. I can make a strong argument for each of them, but that would require being negative in various ways about other languages for comparison. Instead I prefer to note that other languages or platforms may still be good for each need, but these are the best.

Just like Ruby on Rails exploded onto the scene, this list may not hold true in a week, so it’s more a ‘snapshot’ than a ‘bible’. It’s also based on my knowledge of what makes for good software development, balancing (depending on the need) features that make development less error-prone, speed, cross platform capabilities, maturity, match between the development (and mental) model and the need, available tools, etc…

Hope it’s an interesting view into my development mindset.

— Morgan Schweers, CyberFOX!

1 Comment

  1. On Tatjana Says:

    I’d agree but for one point – while bash is neat for interactive use, portability requirements would favour classical bourne shell for scripting.
    More and more scripts (mostly created in a Linux environment) are surfacing nowadays that claim to need “/bin/sh”, when they’re unconsciously perusing a number of bash-specific idiomatics. The crux lies with distributions naming their “bash” as “sh” obviously.
    So for “glue ” (nice category), I’d advocate perl and sh.
    I still need to take a look at RoR – and your post has convinced me even more so 🙂