A computer program () belongs to the software (collective term for programs and the associated data) of a computer. It is usually available on a data carrier as an executable program file, often in so-called machine code, which is loaded into the computer's main memory for execution.
Theoretically, a simple text editor and a compiler/interpreter for the respective programming language are sufficient for programming (). In practice, however, a number of additional tools are used to simplify typical programming tasks. These include, for example, text editors with special features such as syntax highlighting, auto-completion and refactoring - whereby the transition to the Integrated Development Environment (IDE) is fluid. In addition, there are various tools for debugging, so-called debuggers, as well as programs for performing static and dynamic tests. A profiler can also be used for performance analysis. If several developers are working on the same software, versioning systems are usually used that store the code, including previous versions, on a central server to which all participating programmers have access.
In programming, a
program library (
) (lib for short) refers to a collection of subroutines that offer solutions to problems that are thematically related. Libraries are in contrast to programs no independently executable units, but they contain auxiliary modules, which are requested by programs.
In computer programming, a software
framework (
) is a universal, reusable software environment that provides standard methods for creating and deploying applications. Software frameworks may include support programs, compilers, code libraries, toolsets, and application programming interfaces (APIs).