What is computer software

Software, consisting of programs, enables a computerSystem software helps run the computer hardware
to perform specific tasks, as opposed to the physicaland computer system. It includes operating systems,
components of the system (hardware). This includesdevice drivers, diagnostic tools, servers, windowing
application software such as a word processor, whichsystems, utilities and more. The purpose of systems
enables a user to perform a task, and systemsoftware is to insulate the applications programmer as
software such as an operating system, which enablesmuch as possible from the details of the particular
other software to run properly, by interfacing withcomputer complex being used, especially memory and
hardware and with other software or customother hardware features, and such accessory devices
software made to user specifications.as communications, printers, readers, displays,
Computer software is so called in contrast tokeyboards, etc.
computer hardware, which encompasses the physicalProgramming software usually provides tools to assist
interconnections and devices required to store anda programmer in writing computer programs and
execute (or run) the software. In computers, softwaresoftware using different programming languages in a
is loaded into RAM and executed in the centralmore convenient way. The tools include text editors,
processing unit. At the lowest level, software consistscompilers, interpreters, linkers, debuggers, and so on.
of a machine language specific to an individualAn Integrated development environment (IDE) merges
processor. A machine language consists of groups ofthose tools into a software bundle, and a programmer
binary values signifying processor instructions (objectmay not need to type multiple commands for compiling,
code), which change the state of the computer frominterpreter, debugging, tracing, and etc., because the
its preceding state. Software is an ordered sequenceIDE usually has an advanced graphical user interface,
of instructions for changing the state of the computeror GUI.
hardware in a particular sequence. It is usually written inApplication software allows end users to accomplish
high-level programming languages that are easier andone or more specific (non-computer related) tasks.
more efficient for humans to use (closer to naturalTypical applications include industrial automation,
language) than machine language. High-level languagesbusiness software, educational software, medical
are compiled or interpreted into machine languagesoftware, databases, and computer games.
object code. Software may also be written in anBusinesses are probably the biggest users of
assembly language, essentially, a mnemonicapplication software, but almost every field of human
representation of a machine language using a naturalactivity now uses some form of application software.
language alphabet. Assembly language must beIt 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 byA program may not be sufficiently complete for
John W. Tukey in 1957. In computer science andexecution by a computer. In particular, it may require
software engineering, computer software is alladditional software from a software library in order to
computer programs. The concept of reading differentbe complete. Such a library may include software
sequences of instructions into the memory of a devicecomponents used by stand-alone programs, but which
to control computations was invented by Charlescannot work on their own. Thus, programs may include
Babbage as part of his difference engine. The theorystandard routines that are common to many programs,
that is the basis for most modern software was firstextracted from these libraries. Libraries may also
proposed by Alan Turing in his 1935 essay Computableinclude 'stand-alone' programs which are activated by
numbers with an application to thesome computer event and/or perform some function
Entscheidungsproblem. Types(e.g., of computer 'housekeeping') but do not return
Practical computer systems divide software into threedata to their calling program. Programs may be called
major classes: system software, programmingby one to many other programs; programs may call
software and application software, although thezero to many other programs.
distinction is arbitrary, and often blurred.