About Me

My photo
Northglenn, Colorado, United States
I'm primarily a BI Developer on the Microsoft stack. I do sometimes touch upon other Microsoft stacks ( web development, application development, and sql server development).

Friday, September 28, 2007

Choosing a programming language...

An interesting checklist to follow when starting out in computer science or developing one skills to get hired.

1) Is it a standards based language?

You will want to develop your skills in a language that is either supported very well or is a standard. Example of languages that have standards: C++, C#, C, Ada, Eiffel, Fortran, ECMAScript...

2) Does the language have strong corporate or community support?

An ideal language will have enough support for the following reason:

  • Career Placement - it is very important to be able to market yourself. Learning or honing your skills in a language that is dead or soon to be will limit your options. Go to a popular job searching website, like dice.com and do a search on your programming language. See how many hits do you get. Also while viewing the popularity of the language, also view what other support is needed for that job. For example, HTML might return a lot of hits, but usually there will be other web development requirements that follow such as javascript, asp.net, ajax, php, etc..

  • Developing Skills - when searching for a language it is also important to see how much support there is in developing your skills. Does the language come with some sort of Integrated Development Environment (IDE). The IDE should be easy to use, support multiple roles (developer, database, etc..), support tools (addins), support commercial interest (Game Design, App Development, Web Development, ...), and also implement features that make development less of a hassle.

3) What are you interested in developing?

Some languages are better suited for certain styles of commercial interest. A language that is suitable for game design, might not be the best for web development. While, some languages are solely used for a single purpose, like artificial intelligence, database design, etc... others are not. Some languages, such as C#, have a wide spectrum of uses that can be useful if you are having trouble fitting toward one type of interest. For example, if you want to develop window applications and develop interesting web pages.

4) How productive/robust is the language?

At this point, you might still have a list of several languages still to consider. One thing to look into is how productive and robust is the language. Some languages are very robust allowing you to have more options for developing more intrigued items, but it might take longer to develop in that environment. Some languages that are more productive will allow for quick turnover, but might be limited in what can be done.

You might also have to consider what other support the language might have from other languages. In web development: a language like javascript is a great support to other languages that don't have as much power. While asp.net might be very powerful on the server side, it needs the help of javascript to do some more robust options on the client side.

5) Do you want to be versatile/portable?

As you probably have noticed, that some languages are platform dependent. Developing in a language that is only supported toward one type of operating system, web browser, etc... is a tough decision. This is basically limiting your audience, or upsetting your users (like Linux users who have to switch over to Windows)

While a operating system like Windows is the most popular, do you want to also develop for *nix, Apple, HP, etc... Some languages are designed only for one operating system, while others are more versatile. Languages that are versatile and easily portable can be tougher to develop with. A language like C would probably work on most operating systems, but at a price where it is somewhat limited and tough to learn to develop with.

6) How easy is it to do maintenance?

A language that is maintainable is a very nice luxury. To be able to update, clean, and apply easy documentation should be something to look for to help save time (and money).

For example, in C# 2.0, a nice feature that is noticeable is when changing the name of a variable. The IDE basically ask the programmer if it is OK to go through the whole project, where the variable is in scope, if it should change the name there as well. In past, I would have to use a search and replace while stepping through each one checking if it should be replaced, or use a regular expression to limit the search pattern.

With that all said, I hope this is a decent check list to help find and target a language. It should be said, that some languages are easier to learn, if given a background in other languages.

A language like C was a gateway to other popular languages like C++, C#, Python, Java, etc... A programmer that learned one of these languages will have a quicker learning curve when introduce to these other languages. This might be a factor as the days of the C has been dieing down, but a programmer with this knowledge had a easier time switching to a more popular language and not becoming obsolete. Compare this to a language like COBAL which is not very popular and doesn't have any transition language that I know of.

No comments: