Software is a set of computer programs and associated documentation and
data. This is in contrast to hardware, from which the system is built and
which actually performs the work.
At the lowest programming level, executable code consists of machine language
instructions supported by an individual processor—typically a central
processing unit (CPU) or a graphics processing unit (GPU). Machine language
consists of groups of binary values signifying processor instructions that
change the state of the computer from its preceding state. For example, an
instruction may change the value stored in a particular storage location in
the computer—an effect that is not directly observable to the user.