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