| Software, consisting of programs, enables a computer | | | | System software helps run the computer hardware |
| to perform specific tasks, as opposed to the physical | | | | and computer system. It includes operating systems, |
| components of the system (hardware). This includes | | | | device drivers, diagnostic tools, servers, windowing |
| application software such as a word processor, which | | | | systems, utilities and more. The purpose of systems |
| enables a user to perform a task, and system | | | | software is to insulate the applications programmer as |
| software such as an operating system, which enables | | | | much as possible from the details of the particular |
| other software to run properly, by interfacing with | | | | computer complex being used, especially memory and |
| hardware and with other software or custom | | | | other hardware features, and such accessory devices |
| software made to user specifications. | | | | as communications, printers, readers, displays, |
| Computer software is so called in contrast to | | | | keyboards, etc. |
| computer hardware, which encompasses the physical | | | | Programming software usually provides tools to assist |
| interconnections and devices required to store and | | | | a programmer in writing computer programs and |
| execute (or run) the software. In computers, software | | | | software using different programming languages in a |
| is loaded into RAM and executed in the central | | | | more convenient way. The tools include text editors, |
| processing unit. At the lowest level, software consists | | | | compilers, interpreters, linkers, debuggers, and so on. |
| of a machine language specific to an individual | | | | An Integrated development environment (IDE) merges |
| processor. A machine language consists of groups of | | | | those tools into a software bundle, and a programmer |
| binary values signifying processor instructions (object | | | | may not need to type multiple commands for compiling, |
| code), which change the state of the computer from | | | | interpreter, debugging, tracing, and etc., because the |
| its preceding state. Software is an ordered sequence | | | | IDE usually has an advanced graphical user interface, |
| of instructions for changing the state of the computer | | | | or GUI. |
| hardware in a particular sequence. It is usually written in | | | | Application software allows end users to accomplish |
| high-level programming languages that are easier and | | | | one or more specific (non-computer related) tasks. |
| more efficient for humans to use (closer to natural | | | | Typical applications include industrial automation, |
| language) than machine language. High-level languages | | | | business software, educational software, medical |
| are compiled or interpreted into machine language | | | | software, databases, and computer games. |
| object code. Software may also be written in an | | | | Businesses are probably the biggest users of |
| assembly language, essentially, a mnemonic | | | | application software, but almost every field of human |
| representation of a machine language using a natural | | | | activity now uses some form of application software. |
| language alphabet. Assembly language must be | | | | It is used to automate all sorts of functions. |
| assembled into object code via an assembler. | | | | Program and library |
| The term "software" was first used in this sense by | | | | A program may not be sufficiently complete for |
| John W. Tukey in 1957. In computer science and | | | | execution by a computer. In particular, it may require |
| software engineering, computer software is all | | | | additional software from a software library in order to |
| computer programs. The concept of reading different | | | | be complete. Such a library may include software |
| sequences of instructions into the memory of a device | | | | components used by stand-alone programs, but which |
| to control computations was invented by Charles | | | | cannot work on their own. Thus, programs may include |
| Babbage as part of his difference engine. The theory | | | | standard routines that are common to many programs, |
| that is the basis for most modern software was first | | | | extracted from these libraries. Libraries may also |
| proposed by Alan Turing in his 1935 essay Computable | | | | include 'stand-alone' programs which are activated by |
| numbers with an application to the | | | | some computer event and/or perform some function |
| Entscheidungsproblem. Types | | | | (e.g., of computer 'housekeeping') but do not return |
| Practical computer systems divide software into three | | | | data to their calling program. Programs may be called |
| major classes: system software, programming | | | | by one to many other programs; programs may call |
| software and application software, although the | | | | zero to many other programs. |
| distinction is arbitrary, and often blurred. | | | | |