Kilroy Balore, CyberFOX! ([info]foxcode) wrote,
@ 2007-01-09 19:25:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Current mood: thoughtful
Entry tags:coding

Pick your need, pick your tool.
Greetings,

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!

View this post on my blog




Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…