A compiled language is a computer programming language whose source code is typically compiled, or translated into machine code, to produce an executable program. Compilers are utility programs made to translate a specific implementation of a programming language into an executable binary file that is designed to run under a certain operating system. This stand-alone executable file can be run on any compatible platform without assistance from another program and without the need to be recompiled. Some common compiled languages are Ada, C++ and Fortran.
Computer programs can also be written in an interpreted language or a scripting language. The decision to implement a project in a compiled language is usually related to the far greater execution speed of its programs. Increased speed is seen to offset what is generally a more complex development and maintenance process. Operating systems and utilities that need direct access to hardware often require the efficiency of a compiled language.
Interpreted languages must be analyzed, translated and executed by an interpreter utility each time the program is run. If the interpreter is not resident on a computer, then the program cannot be executed. In a compiled language, this time consuming analysis and translation is carried out once at compile time and the executable needs no utility program to run. When speed or the need for low-level hardware access is not a factor, the relative ease with which an interpreted program can be implemented might make it an attractive option.
Scripting languages are often implemented to give users greater control over compiled language programs or to provide additional functionality. This type of language must be interpreted at runtime, as well. The most familiar use of scripting language is on Internet web pages, where the browser acts as the script interpreter. Such languages have existed since the time of early mainframe computers, however, to automate simple processes.
When developing a software project there are often choices to be made between the efficient use of computer resources and the cost of development time. This can lead to a mix of compiled language and interpreted or scripting language within a particular project. Time and resource critical elements of a program are usually best coded in a compiled language. Interfaces and elements with fewer resource requirements might be more economically developed in an interpreted language. Even elements that will eventually be implemented in a compiled language might be more cost-effectively prototyped as an interpreted language program.