ifacethoughts

Deciding On Programming Languages

Joel Spolsky has touched a basic and important topic – choice of programming languages for development. A wrong decision here can ruin the entire effort of software development. Well, not always, but a feeling of using an improper language down the line is too frustrating, it kills motivation for writing better software.

There are lot of choices available there, and it is not just about languages anymore, it is about platforms. The dotNets, Java, PHP, Python, C/C++, Perl and more recently Ruby are some of the names you will come across. Most of them offer similar features, some of them are equally mature and some of them represent the leading edge technology. While the choice can narrow down for Web development, it still does not make it any easier considering that the everyday Web software is developed for the lowest common denominator. So, how do we decide which one to go with?

Joel says choose the mature and industry-tested ones and then choose the one you know best, which is quite true. However, I feel there are some additional factors that can affect choice of the languages. The biggest one is choose the one that can satisfy the clients’ requirements. An excellent example of such a requirement is that a product should be portable across multiple operating systems. The suitability cannot be determined absolutely and wholly, it has to be done by looking at different factors.

Integration

Today, software development is hardly about developing just one piece of software. The buzzword is integration. Web is made for communication and softwares talk to each other. If you are developing a product for a specific client you have to consider the existing ecosystem. There might be existing applications or some future requirements which have to be considered. If you are developing for multiple clients then you have to consider the domains rather than just applications to talk to. A very simple example is that if you develop a event handling system, it is possible that it might have to talk to other calendars. If it is a specific client you can focus solely on compatibility with that. If it is for multiple, you might have to comply with the industy standards like iCal.

Sometimes these features are more easily available in some frameworks in specific languages than others. Sometimes choice of the language is implicitly made by selecting a framework.

Open Source

We cannot ignore the open source pool of software available. Sometimes the sheer presence of huge community and required features can drive selection of the framework/tool and hence the language. What would you do if your client wants a blog? Would you choose WordPress, Movable Type or one of the other thousands of existing blogging engines? Whichever you choose will dictate the ecosystem and the programming language along with it.

This is so true for Content Management Systems today. There are thousands of options available, and most of the times you choose a CMS to develop software for your client. In such cases choice of the programming languages is hidden.

Domain Specific Languages

We have looked only at, what we call, the generic programming languages. There are also some Domain Specific Languages (DSL) available that can make software development much easier. A commonly used example of DSL is SQL which is targetted towards database programming.

Type Of Programming

Though not popular yet, there are more than a couple of programming types. The archaic, but very effective procedural programming, the logical programming, the popular imperative programming and object oriented programming, the now popular functional programming and the new ones like aspect oriented programming. Wow, that’s quite a list! Sometimes the requirements can demand a specific programming style. A feature of functional programming is the multiple dispatch ability, which can make software development easier in some cases. An example that made rounds recently was that the Linspire/Freespire project adopted Haskell, a functional programming language for its core development.

Architecture Paradigms

As with the programming, even the architecture paradigms have been actively evolving. The web architecture itself has been a hot topic of discussions. Sometimes adoption of architectural style can lead to narrowing down the choice of programming languages.

As an example, if you decide to use ROA then Ruby might be the appropriate choice, in spite of the faults pointed out by Joel.

I believe that combinations of all these factors will be different for different projects. Complications increase two-fold when you have to build a demonstration or a prototype quickly before starting with the product development. Sometimes it might be appropriate to build a team that knows the language that needs to be used rather than using one that the existing team knows. Of course it has its own implications, but which one is better can be decided only when we consider a project. Till then we can only try to iterate through all the factors and make sure we consider them.

Discussion [Participate or Link]

  1. Choosing Language And Platform on iface thoughts said:

    […] is so obvious that the choice of the programming language is implied? As it is, I think there are a lot of factors to consider for deciding on a programming language for development. And a lot of these factors are […]

  2. C# And Java Comparison | iface thoughts said:

    […] will not be helpful to decide whether you should use C# or Java for your project, something else rules that world. It will be more useful from a learning perspective, especially if you know one of […]

  3. The Hollywood And Broadway Of Programming Languages | iface thoughts said:

    […] languages are not good. But they might not be enough. Selecting a programming language might be influenced by many factors, not just the popularity. And choice of a language usually leads to choice of the platform […]

  4. JavaScript On Rails | iface thoughts said:

    […] while back I said that some frameworks are so productive today that they might drive choice of your programming language. Well, it is not absolutely true if you are ready to put in effort and show your love for the […]

  5. TP: My bookmarks said:

    […] Deciding On Programming Languages […]

  6. Popular Programming Languages | iface thoughts said:

    […] the popularity affect your choice of programming language? No, but it is a good indication of where the industry is […]

Say your thought!

If you want to use HTML you can use these tags: <a>, <em>, <strong>, <abbr>, <code>, <blockquote>. Closing the tags will be appreciated as this site uses valid XHTML.

freshthoughts

contactme

Abhijit Nadgouda
iface Consulting
India
+91 9819820312
My bookmarks

badgesand...

This is the weblog of Abhijit Nadgouda where he writes down his thoughts on software development and related topics. You are invited to subscribe to the feed to stay updated or check out more subscription options. Or you can choose to browse by one of the topics.