Selecting a programming language 4/10

In selecting a programming language, a software engineer will need to consider the following:

Is it a standards based language?
  • Many programming languages are based on a standard; other languages are standard due to their age or use group size.
  • In this decision:
    • Is the language widely supported, whether or now it is a standard?
    • Is the language a standard?
      • If there is a standard, is it easily understood when you read it?
      • If there isn’t a standard, are there easy ways for the language to be learned by your team?
      • Does the language support the input from non-software programmers and other designers on the team?
Do you require real time constraint programming language?
  • “Real time” or “real time constraints” programming languages are usually platform specific, this refers to requirement that operational deadlines from event to system response. As a software engineer you must always be aware that programmers, electrical engineers and industrial engineers will often write requirements that call for this type of system, when the actual customer does not require the real time system.
  • Decision making process:
    • Examine the requirements and talk to the customer, do they both agree that a “real time” system is required, or is the expectation for a “real fast” system (performance). If they are looking for “real fast” instead of “real time” you can use one of the non-real time approaches, which are less expensive.
    • If the customer does specify a “real time” system, are they willing to pay for the increase in development costs?
Does that software have strong corporate or community support?
  • Community or commercial support can make a real difference in the success of a project. Community or commercial support means that your software team have resources beyond the project scope. If your project is sensitive, you will also need to advise your software team on what can be discussed outside of the company for security reasons.
  • Decision points:
    • Are there government requirements to use the language, for instance Ada and it’s subset Spark use was mandated by the US Federal government. However, it is not considered a commercially viable language.
    • Is the programming language community size large?
    • Is the programming language community growing or shrinking?
  • Does the language have an integrated development environment (IDE)?
    • Although not all experienced programmers agree, the software engineering should consider the use of an IDE that functions with a program management tool.
    • How to make the decision around the integrated development environment:
      • Is it easy to use?
      • Does the IDE support different worker role such as database, developer, architect and so forth, or is it one size fits all?
      • Is it easy to support project management from the IDE with integrated check in/out tools?
      • Is there commercial interest in the language, for instance is the language used in game design, this means that students are motivated to learn the language. Are there other motivations for students in college to learn the programming language.
      • Are you working on a government job that requires the use of certain languages
      • What hardware platform are you targeting?


[i] C++ specifications

[ii] C# ECMA standard 334

[iii] C ISO/IEC 9899:1999

[iv] Ada standard

[v] Eiffel standard

[vi] FORTRAN standard

[vii] ECMAScript (javascript standard): https://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf