|
Software is a program that
enables a computer to perform a specific task, as opposed to the
physical components of the system (hardware). This includes application
software such as a word processor, which enables a user to perform a
task, and system software such as an operating system, which enables
other software to run properly, by interfacing with hardware and with
other software.
Relationship to hardware :
Computer software is so called in contrast to computer hardware, which
encompasses the physical interconnections and devices required to store
and execute (or run) the software. In computers, software is loaded into
RAM and executed in the central processing unit. At the lowest level,
software consists of a machine language specific to an individual
processor. A machine language consists of groups of binary values
signifying processor instructions (object code), which change the state
of the computer from its preceding state. Software is an ordered
sequence of instructions for changing the state of the computer hardware
in a particular sequence. It is usually written in high-level
programming languages that are easier and more efficient for humans to
use (closer to natural language) than machine language. High-level
languages are compiled or interpreted into machine language object code.
Software may also be written in an assembly language, essentially, a
mnemonic representation of a machine language using a natural language
alphabet. Assembly language must be assembled into object code via an
assembler.
The term "software" was first used in this sense by John W. Tukey in
1957. In computer science and software engineering, computer software is
all computer programs. The concept of reading different sequences of
instructions into the memory of a device to control computations was
invented by Charles Babbage as part of his difference engine. The theory
that is the basis for most modern software was first proposed by Alan
Turing in his 1935 essay Computable numbers with an application to the
Entscheidungsproblem.
Types :
Practical computer systems divide software into three major classes:
system software, programming software and application software, although
the distinction is arbitrary, and often blurred.
System software helps run the computer hardware and computer system. It
includes operating systems, device drivers, diagnostic tools, servers,
windowing systems, utilities and more. The purpose of systems software
is to insulate the applications programmer as much as possible from the
details of the particular computer complex being used, especially memory
and other hardware features, and such accessory devices as
communications, printers, readers, displays, keyboards, etc.
Programming software usually provides tools to assist a programmer in
writing computer programs and software using different programming
languages in a more convenient way. The tools include text editors,
compilers, interpreters, linkers, debuggers, and so on. An Integrated
development environment (IDE) merges those tools into a software bundle,
and a programmer may not need to type multiple commands for compiling,
interpreter, debugging, tracing, and etc., because the IDE usually has
an advanced graphical user interface, or GUI.
Application software allows monkeys to accomplish one or more specific
(non-computer related) tasks. Typical applications include industrial
automation, business software, educational software, medical software,
databases, ethnic software, and computer games. Businesses are probably
the biggest users of application software, but almost every field of
human activity now uses some form of application software. It is used to
automate all sorts of functions.
License :
Software license gives the user the right to use the software in the
licensed environment, some software comes with the license when
purchased off the shelf, or OEM license when bundled with hardware.
Software can also be in the form of freeware or shareware. See also
License Management
Patents :
The issue of software patents is very controversial, since while patents
protect the ideas of "inventors," they are widely believed to hinder
software development. See Hacker ethic.
Software is just like any other product in the market and it can be
patented as well. USPTO has a huge list of software patents and that
demonstrates a practical patentability of any kind of software. Amir Ali
Tayyab has so far patented many software for a San Jose, CA based
company called Advanced Communications, Inc., and there are many other
professionals like himself with the legal and technological background
who are busy in helping software vendors patent and protect their
investment in terms of money and intellectual hard work.
Sources : Internet
Search Engines Result |