3.3.1 Choosing an Appropriate Programming Language

There are numerous factors to consider when selecting an appropriate programming language for a specific project. 

For some projects there will be little choice due to the nature of the targeted environment and device.

When choosing a programming language a variety of different criteria should be considered including:

  • The nature of the project. 
    • Different languages are suited to the solution of different types of problems. 
    • An artificial intelligence application will be suited to a different language compared to software to run an online store. 
    • The best language to write a low level hardware driver will be very different to the best language to write a platform game. 
    • Research is required to determine the most suitable language for the type of software project. 
  • The intended environment 
    • including hardware, operating system and network use has a large impact on the most suitable language. 
    • There are interpreted languages designed for use on web servers and others which operate within client web browsers. 
    • Some languages compile down to an intermediate code (such as Java’s byte code) and will execute on multiple different operating systems. 
    • Other languages or language variants are designed for smart phones or tablets.
  • The experience of the programmers. 
    • It takes a significant amount of time and effort to learn a new language and to become an expert requires experience which can only be obtained over time. 
    • Therefore, it is often better to select a language the developer’s are already familiar with rather than choose a new language despite the new language being more appropriate for a particular project.
  • Event driven or sequential approach. 
    • Software applications which require a graphical user interface (GUI) often use an event driven approach. 
    • This means subroutines within the  software execute in response to events initiated by the user, such as clicking a button or selecting from a menu. 
    • Other events such as an incoming network message or a sensor detecting movement are also events the system can detect. 
    • The design of event driven code is different to sequential code as there is no definite start and end. 
    • A sequential program has a single start, the processing commences and then finally the program ends. The code controls the order of execution, which includes directing the user through the logic. 
    • Event driven programs are controlled and led by the user. As the user initiates commands the program runs the code associated with that event.
  • Maintainability. 
    • Does the language encourage or enforce good practice in terms of well structured and self contained modules which are easy to maintain and reuse? 
    • Is there a large community of programmers and a large library of code which can be examined for ongoing support?

Comments