Why so many languages?


Some of you that know me realize I have a passion for several different programming languages and I regularly use many of them at various times. (I’m about to babble endlessly after reading an article about different programming languages.) While it’s perfectly normal for a Java developer to be skilled in the various flavors of SQL, XML, and Javascript I happen to reach out and adopt other languages for reasons not limited to curiosity. For example, While being fluent in Java, RPG, VB, SQL, and XML/XSL stuff I regularly study Groovy, read up on Python, have been teaching myself C# and low level .Net CLR code, I sometimes take tutorials and do programming exercises in C++, I’m reading about Haskell, Lisp and other exotic languages as well. (And that’s just a few of the languages I study.) Why would someone be bothered with so many obscure languages? Let me answer with a scenario. If your doctor had only one patient room, one ancient thermometer, a stethoscope, and a blood-pressure cuff you wouldn’t feel too comfortable. Most doctors offices of today have a myriad of tools including XRay machines cool little 3 second thermometers, needle guns that can give you a shot quicker than your pain centers can register the ouch, and other stuff. It’s practically a requirement for a doctor to have all of the latest gadgetry. It’s also mandatory for your auto-mechanic to know about more than just engines and transmissions. He/She needs to understand advances electronics, coolant systems, emission control, and it’s advantageous to even know audio acoustics. When you take your car in for an examination it’s better if the mechanic could tell you the buzzing noise is coming from RF nosie through your speakers due to faulty stereo wiring rather than, “Ma’am your engine, transmission, axles, and brake shoes all check out OK! We’re clueless!” So why if it’s OK for these other professions to be so versatile in their skill sets would it be strange for a programmer to learn as many different programming languages as he/she felt necessary?

The fact of the matter is that each language specializes in a particular area and when you limit your self to 3-6 general purpose languages you limit your area of comfortability. I feel every developer should know at least one or two low level languages like C or even assembly. It brings you close to the machine and gives you insight on things you would otherwise never be aware of. I also bellieve every developer should be skilled at a couple high level languages such that everything they do isn’t muddied in the low level details of a machine address or a database schema or something like that. Developers need to be able to understand the machine at it’s lower levels but also need to be able to focus on the high level ideas of a particular problem without tripping over the details. To be really good you have to know why scripting languages are valuable, when a certain routine needs to be broken down into C/C++, where to apply XML. It also helps to know the difference between Unicode and ASCII, ASCII and EBCDIC, UTF-8 and UTF16, what CCSID stands for and when you need to consider it. You won’t get any of that unless you’ve dealt with many different programming languages and many different platforms. (Many present day programmers probably won’t even hear about EBCDIC but if you come from and iSeries background then you wouldn’t know anything else.)

Another benefit is insight on so many different way to tackle a particular problem. Imperative programming languages like Java excel in certain kinds of processing and lend to a certain expressiveness where declarative languages such as XSL/SQL excel in other areas. Functional languages such as Lisp can tremendously reduce the amount of code but can take longer to master or familiarize with. Dynamic languages like Ruby and Groovy allow you to create mini languages or dialect that closely match the requirements while also boasting the features of both imperative and functional languages. Mastering each skill gives you the ability to consider such things like expressing a domain specific problem in a more imperative language rather than conforming the requirements to the language’s syntax. Expressing high level ideas in lower level languages while understanding the low level mechanics behind the high level constructs is what it’s all about. Aaaiiight, I haven’t told you anything new. I think I’m done rambling so I’ll give you the box below to send your rebuttal. I’ll accept all comments ranging from “You’re insane! Nobody needs assembler!” to “there goes the news van again!” I only ask that you keep all comments coherent even if they are off topic and refrain (as much as possible) from foul language. Hollaback…

1 Comment

  1. tzjswj

    Hello! Cool guestbook, interesting information. Keep it UP.
    Thank you!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 250 other followers

%d bloggers like this: