Software
The physical components of a computer (the hardware) are not useful by themselves. Before they can function as intended, computers need programs to coordinate the activities of these physical components. In addition, they need programs designed to perform specific tasks, such as word processing, payroll calculations, budget analyses, data manipulation, or the presentation of information to students. All such programs are known as software.
A program is a series of instructions that tells the computer what to do. When the computer actually follows the instructions, we say that it executes the program. Computers will do only what they are told; they cannot make inferences or reach decisions by themselves. Consequently, every detail must be provided, because with missing steps or details the program will fail to perform as desired.
Programs of all types share one common feature. They consist of a list of instructions that the central processor can recognize. In reality, we rarely write the instructions that the processor itself needs; rather, we write instructions that are later translated into these by a special program called either a compiler, condenser, or an interpreter, depending on how it performs the translation. At the processor level, instructions are very primitive, consisting of short sequences of bits representing numbers, which makes them difficult to use. Fortunately, instructions have been developed that are more meaningful to people, such as PRINT or GOTO that have meanings similar to their English-language counterparts. These are far easier to use and are called high-level. A whole set of instructions is called a language.
Programs fall into three broad categories: operating systems, programming languages, and application programs. The term software applies to all of these. Just as hardware includes printers, VDU’s, card readers, and a host of other devices, so software includes all the various types of programs that exist. Operating systems control and coordinate the activities or operations of the computer; programming languages enable people to write programs; and application programs consist of the instructions necessary to perform specific tasks. For example, a system program would enable the computer to send the results of a payroll program to a printer.
Operating systems are programs that control the computer and are supplied with it. Part of the operating system controls the operation of the hardware such as activating printers and disk drives. Another part accepts input from the keyboard. Other parts perform tasks like allocating memory to various programs, or determining the order in which programs should be processed.
Each operating system is designed specifically for the computer it controls and thus enables the computer to optimize the use of the hardware features. Unfortunately, some operating systems are so badly written or so poorly documented that this is not always the case. This state of affairs is changing, however, and operating systems are becoming increasingly easy to use. Generally, users cannot and should not make changes to operating systems.
Programming languages. As mentioned earlier, the central processor receives instructions in machine language, a very primitive or low-level form of communication. Because it is so difficult for people to write extensive programs in machine language, there developed very rapidly what became called high-level languages. These are languages that use instructions similar to English words.
An application program is one that performs a specific task or solves a particular problem. It also has the general characteristic that it was either written specifically for a particular purpose, or designed in such a way that it could be tailored to a particular situation.
A school, for example, may use computers extensively to provide instruction and remediation. To keep track of how various students are progressing, it may be necessary to have the computer accumulate the results of each student’s performance and automatically update the student’s records each time new data are obtained. A program that keeps track of grades could first access these records and then print out a composite report for the teacher. Such an application program could be designed specifically for a particular school taking into account some of the unique details of the school’s operation.
Instead of writing this record-keeping program just for one particular school, however, an alternative approach would be to investigate the needs of a number of schools before designing the program, and to incorporate into the program the capability of satisfying many schools’ needs. Each school that implemented the program would have to make minor adjustments to suit its own unique needs. A program like this is also an application program, but it differs from the one above in that it has a general structure and can be manipulated to meet a variety of specific needs. In general, such programs are less expensive to buy because they have a larger market, but they have more constraints built into them.
In the field of educational computing, application programs include instructional programs, programs that handle grades, and various programs that allows a teacher to create and administer tests or drills.
Software, therefore, is what makes computer hardware useful. It consists of all types of programs: those that allow the various parts of a computer to function and to operate together; the languages that enable one to write new programs and the programs that perform specific tasks.