My Recent Perspective On Programming Languages

2009 August 17
by Hamed
Share

Every time I start on a new project, one of the initial questions is always what programming language to use. Most of the time this depends on the actual frameworks available for that language. My opinion has changed over the years as I’m sure it has for other software developers too. During my years at Georgia Tech, pretty much every project I worked on was done in C, that’s what I started out with. Yes, we did Java as well many times, but not nearly as much as C code. At different jobs in my career and as well on personal projects, I’ve gone from doing C to Java to Javascript to Ruby to Objective-C.

But the most important question is what the requirements of the project you’re working on is. Often developers end up using a language/framework that they’re familiar with (which is a valid consideration). Other times we like to try out a new language on a project just to learn something new. Just be careful always to keep the requirements of the project in mind.

Java

As a language, Java is great, there’s not much wrong with it. When you use it properly, it lends itself to use good design patterns. One of it’s downsides is that it takes more lines of code to do something in Java than a dynamic language. The JVM, however, is a beauty — it’s fast, stable, and self-optimizes. But for me when I think of Java I shudder because of the “enterprise” stigma attached to it. There’s so many frameworks and libraries out there, and it’s very easy to over-architect your project and end up using a framework that at the end of the day doesn’t perform and becomes bulky. It’s not Java that’s the problem, it’s misuse and misunderstanding of the frameworks that can make your project overly-complicated.

These days I never choose Java when I think about doing a web project, there’s simply many better choices. However, if I was doing a highly transactional application (such as financial or telecomm), then Java would be my choice.

Ruby

Let’s face it, Ruby on Rails is a great framework, and it’s what made Ruby popular. If you diss it because it’s “too slow” for a website, then you just haven’t done your research. The simplicity of Ruby is what makes Rails work, even though there have been copies of the Rails framework made for other languages. And actually, I really enjoy the development community around Ruby, they really are pushing out great stuff. The one downside (if you can call it that) is that there are so many updates made to the Rails framework that you always have to try and keep up so you’re doing things the “Rails way”.

While Ruby and Rails both make things easier for the developer, that doesn’t mean that everyone can just write a Rails app and so there’s no “skill” involved. The simplicity provides the developer to think about higher-level problems such as better database models, good design and application flow, and a more intuitive UI.

Objective-C

Ahh, not many people choose this ever, but if you ever have coded for OS X or the iPhone you will have done Objective-C. The language is C-based and more or less straight forward. The OO-syntax is kinda funky, but once you get used to it, it’s fun to use. The big downside for me is that I always find myself having to use some libraries that are C or C++ based inside my Objective-C project. This makes it very confusing when writing code, trying to remember how a method or object should be invoked.. and never mind the difference of memory management between the 3 languages. But I’m not a complete expert on Objective-C, so I may just be doing things wrong.

By the way, the article that I’m writing here was inspired from reading my buddy Amro’s opinion on Objective-C.

Javascript

Obviously JS is used these days mostly within browsers. In fact, the most painful experiences I’ve had in software development has come from worrying about different JS implementation across modern browsers. But sometimes it’s not the exact JS language implementation as opposed to more subtle things such as performance and DOM manipulation.

I’ll be honest, I enjoy writing JS these days, it’s not that terrible. I know there’s many non-web projects that even try to run JS as the back-end server, and why not? After all, JS of course is really a dialect of ECMAScript.

One Response leave one →

Trackbacks & Pingbacks

  1. My Recent Perspective On Programming Languages | Coolestan | HiTechBooks

Leave a Reply

Note: You can use basic XHTML in your comments. Your email address will never be published.

Subscribe to this comment feed via RSS