A program is usually bundled along with documentation and any dependent data and libraries. This bundle is collectively referred to as software. Such software is further classified into system software and application software.
A program is an ordered set of operations that implements one or more algorithm in order to solve some problem or complete a task. Programs are usually written by a programmer using a programming language, however they may also be created automatically using specialized code generators.
Programs coded in human-readable forms are often times compiled to produce machine code (such as in the case of C and C++). Programs may also be compiled into p-code to be executed by a virtual machine, an interpreter, or a hardware implementation that can execute that p-code (such as in the case of Java and Ada). Alternatively, programs in human-readable forms may also be interpreted and executed directly by an interpreter or specialized hardware (such as MATLAB and some versions of BASIC).