A set of instructions that cause a computer to perform one or more tasks. The set of instructions is often called a program or, if the set is particularly large and complex, a system. Computers cannot do any useful work without instructions from software; thus a combination of software and hardware (the computer) is necessary to do any computerized work. A program must tell the computer each of a set of minuscule tasks to perform, in a framework of logic, such that the computer knows exactly what to do and when to do it.
Programs are written in programming languages, especially designed to facilitate the creation of software. In the 1950s, programming languages were numerical languages easily understood by computer hardware; often, programmers said they were writing such programs in machine language.
Machine language was cumbersome, error-prone, and hard to change. In the latter 1950s, assembler (or assembly) language was invented. Assembler language was nearly the same as machine language, except that symbolic (instead of numerical) operations and symbolic addresses were used, making the code considerably easier to change.
The programmable aspects of computer hardware have not changed much since the 1950s. Computers still have numerical operations, and numerical addresses by which data may be accessed. However, programmers now use high-level languages, which look much more like English than a string of numbers or operation codes.
Well-known programming languages include Basic, Java, and C. Basic has been modified into Visual Basic, a language useful for writing the portion of a program that the user ˇ°talks toˇ± (i.e., the user interface or graphical user interface or GUI). Java is especially useful for creating software that runs on a network of computers. C and C++ are powerful but complex languages for writing such software as systems software and games.