Why so many languages?
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…
- Posted in: Programming