LINFO

Software Definition



Software is a generic term for programs that are used by computers and other products that contain logic circuitry (e.g., processors). In a broader sense it can also refer to all information (i.e., both programs and data) in electronic form, and it can provide a distinction from hardware, which refers to media and systems on which software can exist and be used.

A program is a sequence of instructions understandable by a computer's main processor, i.e., central processing unit (CPU), that indicates which operations the computer should perform on a set of data. It is created by a human (or, usually, numerous humans) first typing its source code in any of dozens of programming language with the use of a text editor and often an integrated development environment (IDE). This human-readable version is then converted by a specialized program called a compiler into object code, and then into executable (i.e., runnable) files, which can be understood directly by computers' CPUs. The term software can refer to programs at any version or stage, from source code to final, executable programs.

Software can be conveniently divided into two main categories: system software and application software. The former, which includes operating systems, programming languages, compilers, device drivers, servers, windowing systems and various utilities, helps run the computer hardware and serves as a base for the application programs. The most commonly used language by far for writing system software is C.

Application software allows a user to accomplish one or more specific tasks. Typical application categories include office suites, business software, educational software, database systems, art programs and computer games. Most popular application programs today uses graphical user interfaces (GUIs). Among the most popular languages for writing application software are C, C++ and Java.

Software requires hardware, which is the physical substrate on which software exists and runs, and hardware is useless without software. Hardware devices include memory chips and modules, storage devices and media, processors (i.e., the main logic units of computers), various circuit boards, busses (i.e., sets of wires that are used to connect the processor, memory and other devices) and input and output devices (e.g., displays, keyboards and mice).

In order to be used, software must be loaded into the computer's memory, which is usually composed of RAM (random access memory) chips, from the storage medium where it is kept. Storage refers to devices or media that can retain data for relatively long periods of time, for example, years or even decades. This contrasts with memory, whose contents can be accessed (i.e., read and written to) at extremely high speeds but which are retained only temporarily (i.e., while in use or only as long as the power supply remains on). Examples of storage devices include hard disk drives (HDDs), floppy disks, optical disks (e.g., CDs and DVDs) and magnetic tape.

The term software dates back to at least 1850. At that time it referred to a type of garbage that would decompose, and hardware referred to garbage that would not decompose. The current usage dates back to at least 1958, when John W. Tukey, a highly influential statistician who held posts at both Princeton University and Bell Labs, used it in an article in the January 1958 issue of American Mathematical Monthly. Titled The Teaching of Concrete Mathematics, the following passage occurs near the beginning:

Today the "software" comprising the carefully planned interpretive routines, compilers, and other aspects of automative programming are at least as important to the modern electronic calculator as its "hardware" of tubes, transistors, wires, tapes and the like.

Software has grown to be a huge business and one of the world's largest industries. Moreover, it has come to be important only for itself, but also because it increasingly facilitates and enhances an expanding range of other activities. For example, it allows businesses to greatly reduce their costs and improve their productivity, and it makes possible many types of research and development that would be very difficult or impossible without it (e.g., molecular biology and space exploration).

The software industry has continued to evolve at a rapid pace. Among the most important long-term trends has been the development of new and improved tools (e.g., programming languages, compilers and IDEs) that increase the ease of creating new programs. This has resulted in a reduced cost for any given level of functionality and performance, and it has also made possible the development of increasingly more complex software with greater levels of functionality and performance.

Another important trend has been the emergence of free software (i.e., software that is free both with regard to price and with regard to use, including modifying, copying and redistributing) as an increasingly viable alternative in the areas that have long been dominated by proprietary (i.e., commercial) software, most notably operating systems, office suites and database systems. Many industry experts expect that this trend is just at its beginning, and that free software will become the dominant form of software for most types of applications within a few years as a result of (1) its continued improvement in performance, (2) the fact that it is free (thereby saving its users tens of billions of dollars annually in acquisition and licensing costs) and (3) its potential users becoming more familiar with it and its advantages.






Created November 26, 2005.
Copyright © 2005 The Linux Information Project. All Rights Reserved.