7.2: Choosing Implementation Languages
A programming language is often selected before a development project begins or may be specified in the requirements. The selection of a programming language depends on several factors, including business goals, market strategy, language features, familiarity and expertise in a language, compatibility with available hardware and software systems, and compatibility with organizational models, processes, procedures, practices, methodologies, and tools. The factors determining the language choice for a software development project affect cost, schedule, quality, and achievement of other project objectives.
This section discusses OO implementation. "OO" is a design abstraction, meaning it can be implemented in several (perhaps many) ways. It is implemented via programming language features built into an OOL (Object Oriented Language). However, there are other ways to implement OO. For example, OO could be implemented at a lower level, using operating system processes, data, and network functions, or it could be implemented at a higher level, using a development environment. OO could even be implemented at the lowest level via hardware or firmware. Consider project requirements that specify an application design that shall be deployed for any programming language and computer hardware with a full-function operating system.
Construction languages include all forms of communication that a human can use to specify an executable problem solution to a computer. As you read, differentiate between different languages and three general kinds of notation used for programming languages: linguistic (word-like strings of text), Formal (words and text strings backed up by precise, unambiguous, and formal or mathematical definitions), and visual (direct visual interpretation and placement of visual entities).
Software construction includes coding of components, linking with library code, and integration of components to form a complete system. Software construction is an activity where the transition from the solution domain (planning, architecture, design) to the problem or real-world domain starts or increases depending on the software development methodology used. This gives a concise and relevant overview of software construction. It is relevant for all programming languages: old languages like COBOL and FORTRAN, current languages like Java, C++, and Python, internet languages like HTML and JavaScript, and distributed and concurrent programming languages.