The computer, as a machine, can do nothing for you without the software. Software is required for the functioning of computer. Software programs instruct computer about the actions to be performed, so as to get the desired output. The purpose of this chapter is to introduce you to the different categories of software.
A computer system consists of hardware and software. The computer hardware cannot perform any task on its own. It needs to be instructed about the tasks to be performed. Software is a set of programs that instructs the computer about the tasks to be performed. Software tells the computer how the tasks are to be performed; hardware carries out these tasks. Different sets of software can be loaded on the same hardware to perform different kinds of tasks. For example, a user can use the same computer hardware for writing a report or for running a payroll program. The components like monitor, keyboard, processor, and mouse, constitute the hardware (Figure 6.1). In this chapter, we will discuss the different categories of computer software.
Figure 6.1 Making diagrams using hardware and software
Software can be broadly classified in two categories:
System software provides the basic functions that are performed by the computer. It is necessary for the functioning of a computer. Application software is used by the users to perform specific tasks. The user may choose the appropriate application software, for performing a specific task, which provides the desired functionality. The system software interacts with hardware at one end and with application software at the other end. The application software interacts with the system software and the users of the computer. Figure 6.2 shows the hierarchy of software, hardware and users.
Figure 6.2 Software hierarchy
System software provides basic functionality to the computer. System software is required for the working of computer itself. The user of computer does not need to be aware about the functioning of system software, while using the computer. For example, when you buy a computer, the system software would also include different device drivers. When you request for using any of the devices, the corresponding device driver software interacts with the hardware device to perform the specified request. If the appropriate device driver for any device, say a particular model of a printer, is installed on the computer, the user does not need to know about the device driver, while printing on this printer.
The purposes ofthe system software are:
On the basis of their functionality, system software may be broadly divided into two categories (Figure 6.3) as follows—
Figure 6.3 System software
Operating System (OS) is an important part of a computer. OS intermediates between the user of a computer and the computer hardware. Different kinds of application software use specific hardware resources of a computer like CPU, I/O devices and memory, as needed by the application software. OS controls and coordinates the use of hardware among the different application software and the users. It provides an interface that is convenient for the user to use, and facilitates efficient operations of the computer system resources. The key functions of OS are—
Some available operating systems are Microsoft Disk Operating System (MS-DOS), Windows 7, Windows XP, Linux, UNIX, and Mac OS X Snow Leopard.
A device driver acts as a translator between the hardware and the software that uses the devices. In other words, it intermediates between the device and the software, in order to use the device.
Some devices that are commonly connected to the computer are—keyboard, mouse, hard disk, printer, speakers, microphone, joystick, webcam, scanner, digital camera, and monitor. For proper working of a device, its corresponding device driver must be installed on the computer. For example, when we give a command to read data from the hard disk, the command is sent to the hard disk driver and is translated to a form that the hard disk can understand. The device driver software is typically supplied by the respective device manufacturers.
Programmers can write the higher-level application code independently of whatever specific hardware devices it will ultimately use, because code and device can interface in a standard way, regardless of the software superstructure, or of the underlying hardware. Each version of a device, such as a printer, requires its own hardware-specific specialized commands. In contrast, most applications instruct devices (such as a file to a printer) by means of high level generic commands for the device, such as PRINTLN (print a line). The device-driver accepts these generic high-level commands and breaks them into a series of low-level, device-specific commands, as required by the device being driven.
Nowadays, the operating system comes preloaded with some commonly used device drivers, like the device driver for mouse, webcam, and keyboard. The device drivers of these devices are pre-installed on the computer, such that the operating system can automatically detect the device when it is connected to the computer. Such devices are called plug and play devices. In case the computer does not find the device driver, it prompts the user to insert the media (like a CD which contains the corresponding device driver) provided along with the device. Most device manufacturers, host the device drivers for their devices on their companies’ websites; users can download the relevant driver and install it on their computer.
Figure 6.4 Device driver (i) CD of a printer (ii) Sony audio recorder
System utility software is required for the maintenance of computer. System utilities are used for supporting and enhancing the programs and the data in computer. Some system utilities may come embedded with OS and others may be added later on. Some examples of system utilities are:
Figure 6.5 Antivirus software on a computer
Figure 6.6 A hard disk having three partitions—C, E, and F
The system utilities on a computer working on Windows XP OS can be viewed by clicking <Start><All Programs><Accessories><System Tools>. Figure 6.7 shows system tools in Windows XP.
Figure 6.7 Some system tools in Windows XP
A Programming Language consists of a set of vocabulary and grammatical rules, to express the computations and tasks that the computer has to perform. Programming languages are used to write a program, which controls the behavior of computer, codify the algorithms precisely, or enables the human-computer interface. Each language has a unique set of keywords (words that it understands) and a special syntax for organizing program instructions. The programming language should be understood, both by the programmer (who is writing the program) and the computer. A computer understands the language of 0∙s and 1∙s, while the programmer is more comfortable with English-like language. Programming Language usually refers to high-level languages like COBOL, BASIC, FORTRAN, C, C++, Java etc. Programming languages fall into three categories (Figure 6.8):
Figure 6.8 Programming languages
Regardless of the programming language used, the program needs to be converted into machine language so that the computer can understand it. In order to do this a program is either compiled or interpreted.
Figure 6.9 shows the hierarchy of programming languages. The choice of programming language for writing a program depends on the functionality required from the program and the kind of program to be written. Machine languages and assembly languages are also called low-level languages, and are generally used to write the system software. Application software is usually written in high-level languages. The program written in a programming language is also called the source code.
Figure 6.9 A program in machine language
A program written in machine language is a collection of binary digits or bits that the computer reads and interprets. It is a system of instructions and data executed directly by a computer∙s CPU. It is also referred to as machine code or object code. It is written as strings of 0’s and 1∙s, as shown in Figure 6.10. Some of the features of a program written in machine language are as follows:
Figure 6.10 Machine language code
A program written in assembly language uses symbolic representation of machine codes needed to program a particular processor (CPU) or processor family. This representation is usually defined by the CPU manufacturer, and is based on abbreviations (called mnemonics) that help the programmer remember individual instructions, registers, etc. Small, English-like representation is used to write the program in assembly language, as shown in Figure 6.11. Some of the features of a program written in assembly language are as follows:
Figure 6.11 Assembly language code
ADD 2, 3
LOAD A
SUB A, B
A program in a high-level language is written in English-like language. Such languages hide the details of CPU operations and are easily portable across computers. A high-level language isolates the execution semantics of computer architecture from the specification of the program, making the process of developing a program simpler and more understandable with respect to assembly and machine level languages. Some of the features of a program written in high-level language are as follows:
In addition to the categorization of programming languages into machine language, assembly language, and high-level language, programming languages are also classified in terms of generations in which they have evolved. Table 6.1 shows the classification of programming languages based on generations.
Translator software is used to convert a program written in high-level language and assembly language to a form that the computer can understand. Translator software converts a program written in assembly language, and high-level language to a machine-level language program (Figure 6.13). The translated program is called the object code. There are three different kind of translator software:
Figure 6.12 A C++ program
First Generation | Machine language |
Second Generation | Assembly language |
Third Generation | C, COBOL, Fortran, Pascal, C++, Java, ActiveX (Microsoft) etc. |
Fourth Generation | .NET (VB.NET, C#.NET etc.) Scripting language (Javascript, Microsoft Frontpage etc.) |
Fifth Generation | LISP, Prolog |
Table 6.1 Generations of programming languages
Figure 6.13 Translator software
Assembler converts a program written in assembly language to machine language. Compiler and interpreter convert a program written in high-level language to machine language. Let’s now discuss, briefly, the different kinds of translator software.
Assembly language is also referred to as a symbolic representation of the machine code. Assembler is a software that converts a program written in assembly language into machine code (Figure 6.14). There is usually a one-to-one correspondence between simple assembly statements and machine language instructions. The machine language is dependent on the processor architecture, though computers are generally able to carry out the same functionality in different ways. Thus the corresponding assembly language programs also differ for different computer architectures.
Figure 6.14 Assembler
A program written in a high-level language has to be converted to a language that the computer can understand, i.e. binary form. Compiler is the software that translates the program written in a high-level language to machine language. The program written in high-level language is referred to as the source code and compiled program is referred as the object code. The object code is the executable code, which can run as a stand-alone code. It does not require the compiler to be present during execution. Each programming language has its own compiler. Some languages that use a compiler are C++, COBOL, Pascal, and FORTRAN. In some languages, compilation using the compiler and linking using the linker are required for creating the executable object code.
The compilation process generally involves two parts—breaking down the source code into small pieces and creating an intermediate representation, and, constructing the object code for the intermediate representation. The compiler also reports syntax errors, if any, in the source code.
The purpose of interpreter is similar to that of a compiler. The interpreter is used to convert the high-level language program into computer-understandable form. However, the interpreter functions in a different way than a compiler. Interpreter performs line-by-line execution of the source code during program execution. Interpreter reads the source code line-by-line, converts it into machine understandable form, executes the line, and then proceeds to the next line. Some languages that use an interpreter are BASIC and Python.
Difference Between a Compiler and An Interpreter: Compiler and Interpreter are used to convert a program written in high-level language to machine language; however, they work differently. The key differences between a compiler and an interpreter are as follows:
Linker is a program that links several object modules and libraries to a single executable program. A source code of a program is often very large consisting of several hundred or more lines. The source code may also include reference to libraries. All these independent modules may not be stored in a single object file. The code is broken down into many independent modules for easy debugging and maintenance. Before execution of the program, these modules and the required libraries are linked together using the linker software. The compiled and the linked program are called the executable code.
The loader software is used to load and re-locate the executable program in the main memory. Software has to be loaded into the main memory during execution. Loader assigns storage space to the program in the main memory for execution. Figure 6.15 shows the working of a Java Runtime Environment (JRE). The java source file Sample.java is compiled and converted into a set of bytecodes and are stored in Sample.class file. At runtime, the class loader loads the bytecodes from the hard disk, checks it, and runs it in an interpreter. The interpreter executes the bytecode and makes calls to the underlying hardware.
Figure 6.15 Working of java runtime environment
Figure 6.16 Hierarchy of program execution
The hierarchy of program execution from writing the program to its execution is shown in Figure 6.16.
The software that a user uses for accomplishing a specific task is the application software. Application software may be a single program or a set of programs. A set of programs that are written for a specific purpose and provide the required functionality is called software package. Application software is written for different kinds of applications—graphics, word processors, media players, database applications, telecommunication, accounting purposes etc.
Some examples of application software packages (Figure 6.17) are as follows:
Figure 6.17 Some application software
Different kinds of software are made available for use to users in different ways. The user may have to purchase the software, can download for free from the Internet, or can get it bundled along with the hardware. Nowadays with the advent of Cloud computing, many application software are also available on the cloud for use through the Internet, e.g. Google Docs. The different ways in which the software are made available to users are:
Accounting software |
Freeware |
Program |
Anti-virus utility |
Generations of |
Programming languages |
Application software |
Programming languages |
Public domain software |
Assembler |
High-level language |
Retail software |
Assembly language |
Image processing |
Shareware |
Backup |
software |
Software |
Block device driver |
Interpreter |
Software package |
CAD/CAM software |
Linker |
Source code |
Character device driver |
Loader |
Spreadsheet software |
Compiler |
Low-level language |
System profiling |
Cryptographic utility |
Machine language |
System software |
Data compression utility |
Network managers |
System utility |
Demo software |
Object code |
Translator software |
Device driver |
OEM software |
Web browser software |
Disk cleaners |
Open-source software |
Word processing |
Disk compression |
Operating system |
software |
Disk partitioning |
Plug and play devices |
|
Executable code |
Presentation Software |
|
Section 6.1–6.3
1. _____ and _____ are the two main categories of software.
2. What is the purpose of system software?
3. What is system software?
4. Give two examples of system software.
5. Describe the two categories of system software.
Section 6.3.1–6.3.3
6. What is the need of an operating system?
7. Describe the functions of an operating system.
8. “OS controls and coordinates the use of hardware among the different application software and the users”. Explain.
9. Name any three operating systems.
10. Define a device driver.
11. What are plug and play devices?
12. Give an example of a plug and play device.
13. Where is the device driver of the plug and play device located on the computer?
14. What is the purpose of a device driver?
15. What are character device driver and block device driver?
16. Give an example of a character device driver.
17. Give an example of a block device driver.
18. What are the uses of system utilities?
19. List any five system utilities and also list the purpose of each.
20. Explain the purpose of the following system utilities in one line—(i) Anti-virus, (ii) Data compression, (iii) Cryptographic, (iv) Disk compression, (v) Disk partitioning, (vi) Disk cleaners, (vii) Backup utility, (viii) System Profiling utility, (ix) Network managers.
Section 6.3.4–6.3.4.4
21. Why are programming languages used?
22. What is the need for programming languages?
23. Name the three categories of programming languages.
24. What are low-level languages?
25. Define source code?
26. Define object code?
27. Machine language is hardware dependent—True or False.
28. List the key features of machine language.
29. List the key features of assembly language.
30. List the key features of high-level languages.
31. Why is it difficult to write a program in machine language?
32. State three features of the program written in machine language?
33. Why is it easier to write a program in high-level language than the assembly language?
34. Classify the programming languages based on their generations?
35. COBOL and C are _____ generation languages.
36. Name two high-level languages.
Section 6.3.5–6.3.7
37. What is the purpose of an assembler?
38. What is an executable code?
39. What is the purpose of a compiler?
40. How does an interpreter work?
41. Name two high-level languages that use compiler for translation.
42. Name two high-level languages that use interpreter for translation.
43. What is the purpose of linker?
44. What is the purpose of loader?
45. Draw the cycle from the writing of the program in a high-level language to its execution.
Section 6.4
46. Define a software package.
47. What is the use of application software?
48. Explain the purpose of the following application software in one line—(i) Word processing software, (ii) Image processing software, (iii) Accounting software, (iv)Spreadsheet software, (v) Presentation software, (vi) Web browser software, and (vii) Geographical Information Systems.
49. Give an example each of the following application software—(i) Word processing software, (ii) Image processing software, (iii) Accounting software, (iv) Spreadsheet software, (v) Presentation software, (vi) Web browser software, and (vii) Geographical Information Systems.
50. What are the different ways of acquiring software?
Extra Questions
51. Give full form of the following abbreviations
52. Write short notes on:
53. Give differences between the following:
3.145.91.254