Programming Language choice is a topic filled with opinion.
Language choice is a topic filled with opinion. Most programmers have a favorite language, and most programmers have languages they hate. 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.
Your choice of language can depend on many factors. If it’s for a personal project or hobby, you may settle for a language you know. If your choice depends on available resources, you might end up with really cryptic approaches. Or, you could spend a lot of time developing reusable components, which can cause the documentation to become a nightmare. Many companies stick to a strict set, C/C++, Perl, and Java for example. The reasons are usually that “everyone else is doing it, and we need to be able to support our code in the future.”
There are likely to be a large number of different factors to take into account when making this choice, such as the past experience of the programmers; the re-use of existing modules; the compilers available, including the speed of execution of their generated code; and the portability of the programs. These are undoubtedly important aspects to take into account, but these should be balanced against any adverse effects on the software quality, either in terms of the final product or on the software development process.
Issues affecting software quality
1. The Design of the Programming Language.
2. The Specification of the Programming Language, and it’s incorporation into a Programming Language Standard.
3. The Quality of the Compiler Implementation.
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 to consider while selecting a programming language, whether it is for personal use or for a large project within an organization.
Factors to consider
1) Targeted platform: The most important factor to consider is the platform where the program will run. Think in terms of the Java™ language and C. If the program is written in C and needs to be run on Windows® and Linux® machines, it would require platform compilers and two different executables. A very similar argument applies for websites. They should all look and work the same across all browsers. Using CSS3 tags, HTML5, without checking browser compatibility, will cause the same site to look and behave differently across browsers.
2) Elasticity: The “elasticity” of a language is the ease with which new features can be added to the existing program. Elasticity can involve adding a new set of functions, or using an existing library to add a new feature.
3) Time to production: The time to production is the time it takes to make the program go live. Time to production is very dependent on the size of the code. Theoretically, the easier it is to learn a language, the smaller the amount of code and, hence, less time to go live.
4) Performance: The performance of a language should matter when the target environment doesn’t offer much scope for scaling.
5) Support and community: Just as good software needs a community following to help it grow, a programming language should also have a strong community behind it. A language with an active forum is likely to be more popular than even a great language that doesn’t have help at hand.
Perl is a good example of the importance of community. The Comprehensive Perl Archive Network (CPAN) is a community-driven effort. CPAN’s main purpose is to help programmers locate modules and programs not included in the Perl standard distribution.
6) Popularity: You are more likely to find people to collaborate with if you use a popular language. You are also more likely to find reference material and other help. Unfortunately, the most popular language globally may not be a good match for your problem domain.
7) Tool support: Popularity usually buys tool support (and some languages are easier to write tools for). If you are a tool-oriented user, choose a language with good tool support.
8) GUI requirements: When developing software, a GUI (Graphical User Interface) may be required. If a GUI is required then it can take up a lot of time and code. For example, creating a GUI in C++ will be more complex than creating a GUI in Visual Basic.
9) Cost: There are monetary costs associated with choosing your programming language, and the difference between these must of course be considered. For example many C and C++ compilers can be acquired for free, under the influence of the Free Software Foundation. However if you wan’t to use the best version of VB.net you will have to pay a significant amount for it, as you would if you wanted to use Flash for web programming. Even within the same language and development kit, you may find certain features unlocked only in the more expensive version, while a limited model can often be had for free (as in the express edition for VB.net, C#.net, and the others in that family).
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.