Since the computer knows only what the program tells it, the program must tell it everything it needs to know about the process being executed or the problem being solved. This requires a step-by-step approach, developed by the programmer in such a way that no steps are assumed to be known by the computer. These steps are then converted into a program that is written in a computer language. There are many (well over 100) computer languages that can be used to communicate with a computer. Each computer language, like a human language, has its own vocabulary and grammatical rules, but most share a similar logical approach to communication with the computer. Commonly used languages are BASIC, COBOL, FORTRAN, Pascal, LOGO, and C.
An ever-growing number of software packages are available to the computer user. In fact, nobody can make even a reasonable estimate of the number of programs that are available. With this wide variety of software, beginning users can become confused about what they need to purchase. To unravel all of the talk about software packages, we must first categorize the types of software that are used in a computer. The three major categories are systems software, utility software, and applications software. Usually, all three of these software types are at work in the computer at the same time, each serving a different purpose.
The first of these, systems software, is extremely important because it controls the operations of the other two types of software as well as controlling the computer itself. The most important part of systems software is the operating system, which directs the operations of the computer.
Utility software controls day-to-day "housekeeping" operations. These include such operations as making copies of information, displaying a list of user information, and using different computer languages on a computer.
Applications software constitutes the greatest proportion of the software used on computers. This software performs the specialized tasks that we hear so much about, including calculating payrolls, guiding space shuttles, doing word processing or home budgeting, and playing games.
We can view these three types of software and the way they work concurrently in the computer as an "onion". The outer layer of the onion is applications software, which is evident to the user since it is the software that actually performs the desired task. Underneath the applications software is the utility software, which is invisible to the user until a housekeeping chore—such as copying information—is required. Finally, at the core of our "onion" is the systems software, which is almost completely invisible to the user.
Systems software controls the operation of the computer and makes it possible for the other types of software to execute their tasks. The primary component of systems software is known as the operating system. The operating system manages the many tasks that are going on concurrently within a computer, such as handling the input and output operations and managing the transfer of information between internal memory and the secondary storage. On mainframes, the operating system manages the allocation of processing capability to each of the numerous persons who may be using the computer simultaneously. In this environment, the operating system must also handle all of the requests for different types of operations that come from each of the users.
On a personal computer, the operating system deals with only one user, so an important operation is managing the transfer of information between the internal memory and secondary storage. Since all PCs in use today have the capability of using magnetic disks as secondary storage, the term disk operating system (DOS) is commonly used to describe a PC's operating system. Several different brands and types of computers can use the same operating system, so it has been possible to achieve some degree of standardization among personal computers through the operating systems. Three commonly used generic operating systems that are not machine specific are MS-DOS (Microsoft DOS), OS/2 (Operating System/Two), and UNIX, all of which run on a variety of makes and models of PCs. In addition, there are several machine-specific or proprietary operating systems for machines such as the Apple II series and the Macintosh series of PCs.
These three generic PC operating systems are differentiated by the number of tasks and users they can control. MS-DOS is directed toward the use of a single machine to run a single piece of applications software. It is currently the most popular of the three operating systems, with millions of PCs using it. The capability of a personal computer to run MS-DOS software is usually considered the criterion for determining whether or not it is an IBM compatible PC, that is, a PC that runs software written for the original IBM PC or one of its successors, the IBM PC XT, PC AT, or PS/2 series of computers. Computers that are not IBM compatible include the Apple II and Apple Macintosh series.
OS/2 is a single-user, multitasking operating system that was jointly developed in 1987 by IBM and the world's largest PC software developer, Microsoft. With OS/2, a user can run multiple tasks concurrently. For example, the user can work with a word processing package and, at the same time, run a mathematical model that requires several hours to complete its calculations. Finally, UNIX, which was originally developed by AT&T for use on minicomputers, has been converted to run on PCs and can direct multiple machines running multiple tasks in a network.
Operating system is an interface between hardware and user; it is responsible for the management and coordination of activities and the sharing of the resources of the computer. The operating system acts as a host for computing applications that are run on the machine. As a host, one of the purposes of an operating system is to handle the details of the operation of the hardware. This relieves application programs from having to manage these details and makes it easier to write applications. Almost all computers (including handheld computers, desktop computers, supercomputers, video game consoles) as well as some robots, domestic appliances (dishwashers, washing machines), and portable media players use an operating system of some type. Some of the oldest models may however use an embedded operating system that may be contained on a compact disk or other data storage device.
Operating systems offer a number of services to application programs and users. Applications access these services through application programming interfaces (APIs) or system calls. By invoking these interfaces, the application can request a service from the operating system, pass parameters, and receive the results of the operation. Users may also interact with the operating system with some kind of software user interface (UI) like typing commands by using command line interface (CLI) or using a graphical user interface (GUI, commonly pronounced “gooey”). For hand-held and desktop computers, the user interface is generally considered part of the operating system. On large multi-user systems like Unix and Unix-like systems, the user interface is generally implemented as an application program that runs outside the operating system. (Whether the user interface should be included as part of the operating system is a point of contention.)
Common contemporary operating system families include BSD, Darwin (Mac OS X), Linux, SunOS (Solaris/OpenSolaris), and Windows NT (XP/Vista/7). While servers generally run Unix or some Unix-like operating system, embedded system markets are split amongst several operating systems.
Working on a computer—either a mainframe or a personal computer—requires that the user keep track of a library of information that is organized into files. Files are units of information (programs, documents, data, and so on) to which the user or software can assign a name. The systems, utility, and applications software all work with files. A common utility software command is to provide a list of the names of the files. Files are often modified, copied between disks or between disk and tape, or combined with language software to write and run programs. These and numerous other operations fall into the utility software category.
In many cases, the utility software is integrated with the system software in such a way that the user gives a single command and the combination of operating system and utility software carries it out. There also exists utility software, separate from the operating system, for working with files. Examples include PC Tools and the Norton Utilities.
By far the largest amount of software available to the computer user is in the area of applications software. The applications for which software has been written cover the entire range of human activities. Applications software is available for a wide range of topics, such as religion, politics, astronomy, marriage counseling, contract bridge, horse racing, generating of lottery numbers, genealogy, finance, word processing, and ham radio. All the computer applications are examples of the use of applications software. In fact, it would be safe to say that software exists (or will soon exist) for any topic you can think of.
Most applications software is available in the form of software packages, which include programs and a written description, called the documentation, of the program. The documentation will often include a user's manual that provides detailed instructions on using the package.
A problem with applications software is how to find the proper software for a given application. Mainframe computer centers usually have libraries that contain information on new software as well as offer classes on using software. Personal computer software is widely advertised in specialty magazines such as Byte and PC/Computing and is sold through retail outlets and by mail. Software packages are often reviewed in newspapers and magazines, and seminars and classes on using existing software are also available.