Tuesday, July 10, 2007

Programmer Vs. Programming Language

How many times must I see forum posts such as; Programming Language A Vs. Programming Language B? Which is better? Okay okay, here it is. I'm about to let you all in on a little secret, are you ready for this? I'm about to give you the BEST programming language. That's right no more flow charts, pie charts, no more heated debate or discussion, just the hands down best programming language. And that language is... "Whichever suits your needs best."

Let me throw this into perspective for all of you. Okay so pretend your a carpenter (that's right for once we're going to imagine our hands working on something other than a computer), i wanna contract you out to say build a house. Now this house is pretty much a carbon copy of most other houses around the neighborhood, very little changes to it's structure. How would you suggest we start building. - Okay stop right here. Now we could possibly say to ourselves, "Well well well, in the future we may wanna plan ahead to dormer it, maybe add an apartment on." Yes that is true, but what if you know for a fact that isn't going to happen? Should I spend more time creating a blue print for ease of adding on an extension in the future if I know that the extension will never exist? To me it sounds like a waste of money, time, effort, etc... So we eventually decide against that, and were good to roll. Right? Wrong. Well what tools should we use? Well I could potentially trade off customizability for a framework that a company sells. It almost cuts my build time in a third, as well as getting everything that I wanted on the blueprint done in record time. Or I could grow the trees, mine some steel, create the tools, grow more trees, get the lumber for the house from those trees, build the house using the tools I created and be done with a house that could of taken me 2 months to build at a record 15 years. And then after all that, look back at my blueprints and all the tools I have and realized I never planned ahead to use any of this in the future anyway, so I'm gonna throw all that stuff out after I'm done. Thank god I'm not a carpenter, yea, I'm just a computer programmer, no hard decisions on what tools to use, ill just stick to C.

And there it is, the underlying similarity. You see, creating a program, is much like building a home or other structure. It all starts with the blueprints. Some programmers tend to over complicate themselves here, thinking too far into the future. Now don't get me wrong, hindsight is 20/20 and sometimes it can be ugly if you don't try to look beyond what your plans currently are. But if you know for a definite that the project your building start and ends here, there is absolutely no need to waste time, money, and effort on creating an entire plug-in system that will eventually have,... no plug ins. As for the tools we use to create our application, the dreaded choice of programming language, many people will swear by the language they know best. I look at it like this, use/learn most of the languages you come across. It will save you a ton of work in the future. If everything we saw today was programmed in assembly code, because it offers such blazing speed and almost 1 to 1 compilation into machine code, we would be still be waiting for the release of Windows 2000. Oh and bugs, god would there be bugs, buffer overflows, memory waste, and god knows what other types of human error mistakes on god knows how many lines of code. If an application that needs to be developed comes along that I can use Java on, I'm doing it. Or if an application comes along that needs lower level access, guess what? I'm writing it in C/C++. If I'm creating a quick web application, I may just jump to use Ruby or Python, maybe RoR (Ruby on Rails) solution. But if I need a web application that needs to make use of one of the billion libraries available already on PHP guess what? I'm programming it in PHP. And don't forget pre-existing and pre-packaged frameworks. Many of which happen to be royalty-free and great solutions for quick projects that share a similarity.

The point I'm getting at is, all these languages were created to fill in a need at a given time. And as time goes by, popularity may fluctuate for these languages, but in the long run, they will all still be there. For goodness sakes people still use COBOL and FORTRAN. If it fits the bill and it's going to get it done the best, and in the least amount of time, then that's that language you use. Sure I may be able to use a screwdriver to build everything as a carpenter, but if I utilize the right tool at the right time, not only will I be saving myself allot of time and frustration, but my quality of work will be looked upon as robust and superior.

So the Best language is the language that is going to get the job done efficiently, as well as productively, and will fit your clients/boss needs to exact specification. Even though I'm sure the flame wars will continue between which language is better, I urge all new programmers, please, please, take in all the knowledge about new languages that gain any type of main stream popularity. It could make the difference when your at the job site and you have the extra tool in your belt to get the job done better and quicker than the competition.

2 comments:

Anonymous said...

Good post.

Anonymous said...

Helpful guide.