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