<Previous Lesson

Introduction to Programming

Next Lesson>


Lesson 2


o Software Categories
o System Software
o Application Software
o History of C language
o Development Environment of ‘C’

Software Categories

Software is categorized into two main categories
o System Software
o Application Software
Page 8

System Software

The system software controls the computer. It communicates with computer’s hardware
(key board, mouse, modem, sound card etc) and controls different aspects of operations.
Sub categories of system software are:
o Operating system
o Device drivers
o Utilities

Operating system

An operating system (sometimes abbreviated as "OS") is the program that manages all
the other programs in a computer. It is a integrated collection of routines that service the
sequencing and processing of programs by a computer. Note: An operating system may
provide many services, such as resource allocation, scheduling, input/output control, and

data management.


“Operating system is the software responsible for controlling the allocation and usage of hardware
resources such as memory, central processing unit (CPU) time, disk space, and peripheral devices. The
Page 9
operating system is the foundation on which applications, such as word processing and spreadsheet
programs, are built. (Microsoft)”

Device drivers

The device driver software is used to communicate between the devices and the
computer. We have monitor, keyboard and mouse attached to almost all PC’s; if we look
at the properties of these devices we will see that the operating system has installed
special software to control these devices. This piece of software is called device driver
software. When we attach a new device with the computer, we need software to
communicate with this device. These kinds of software are known as device drivers e.g.
CD Rom driver, Sound Card driver and Modem driver. Normally manufacturer of the
device provide the device driver software with the device. For scanners to work properly
with the computers we install the device driver of the scanner. Nowadays if you have
seen a scanner, it comes with TWAIN Drivers. TWAIN stands for Technology Without
An Interesting Name.

Utility Software

Utility software is a program that performs a very specific task, usually related to
managing system resources. You would have noticed a utility of Disk Compression.
Whenever you write a file and save it to the disk, Compression Utility compresses the file
(reduce the file size) and write it to the disk and when you request this file from the disk,
the compression utility uncompressed the file and shows its contents. Similarly there is
another utility, Disk Defragmentation which is used to defragment the disk. The data is
stored on the disks in chunks, so if we are using several files and are making changes to
these files then the different portions of file are saved on different locations on the disk.
These chunks are linked and the operating system knows how to read the contents of file
from the disk combining all the chunks. Similarly when we delete a file then the place
where that file was stored on the disk is emptied and is available now to store other files.
As the time goes on, we have a lot of empty and used pieces on the disk. In such situation
we say that the disk is fragmented now. If we remove this fragmentation the chunks of
data on the disk will be stored close to each other and thus reading of data will be faster.
For the purpose of removing fragmentation on the disk the Defragmentation utility is
The compilers and interpreters also belong to the System Software category.

Application software

A program or group of programs designed for end users. For example a program for
Accounting, Payroll, Inventory Control System, and guided system for planes. GPS
(global positioning system), another application software, is being used in vehicles,
which through satellite determines the geographical position of the vehicle
Page 10

History of C language

The C language was developed in late 60’s and early 70’s, in Bell Laboratories. In those
days BCPL and B languages were developed there. The BCPL language was developed
in 1967 by Martin Richards as a language for writing operating systems software and
compilers. In 1970 Ken Thompson used B language to create early versions of the UNIX
operating system at Bell Laboratories. Thus both the languages were being used to
develop various system software even compilers. Both BCPL and B were ‘type less’
languages, every data item occupied one ‘word’ in memory and the burden of treating a
data item as a whole number or real number, for example was the responsibility of the
Dennis Ritchie developed a general purpose language, called C language, by using
different features of BCPL and B languages. C uses many important concepts of BCPL
and B while adding data typing and other features. In the start C became widely known as
the development language of the UNIX operating system, and the UNIX operating
system was written by using this C language. The C language is so powerful that the
compiler of C and other various operating systems are written in C. C language has
almost unlimited powers to do with computers. You can program to turn on or off any
device of computer. You can do a lot to hard disk and other peripherals. It is very easy to
write a program in C that stops the running of computer. So be careful while
programming in C.
The C language and UNIX operating system widely spread in educational and research
institutions. There was C and UNIX everywhere. Due to the wide spread of C, different
researchers started to add their features in the language. And thus different variations in C
came into existence. Many universities developed their own C by adding different
features to the C language developed by Ritchie. These variations led to the need of a
standard version of C. In 1983 a technical committee was created under the American
National Standards Committee on Computer and Information Processing to provide an
unambiguous and machine-independent definition of the language. In 1989 the standard
was approved. ANSI cooperated with the International Standard Organization (ISO) to
standardize C worldwide.

Tools of the trade

As programmer we need different tools to develop a program. These tools are needed for
the life cycle of programs


First of all we need a tool for writing the code of a program. For this purpose we used
Editors in which we write our code. We can use word processor too for this, but word
processors have many other features like bold the text, italic, coloring the text etc, so
when we save a file written in a word processor, lot of other information including the
text is saved on the disk. For programming purposes we don’t need these things we only
need simple text. Text editors are such editors which save only the text which we type. So
for programming we will be using a text editor
Page 11

Compiler and Interpreter

As we write the code in English and we know that computers can understand only 0s and
1s. So we need a translator which translates the code of our program into machine
language. There are two kinds of translators which are known as Interpreter and
Compilers. These translators translate our program which is written in C-Language into
Machine language. Interpreters translates the program line by line meaning it reads one
line of program and translates it, then it reads second line, translate it and so on. The
benefit of it is that we get the errors as we go along and it is very easy to correct the
errors. The drawback of the interpreter is that the program executes slowly as the
interpreter translates the program line by line. Another drawback is that as interpreters are
reading the program line by line so they cannot get the overall picture of the program
hence cannot optimize the program making it efficient.
Compilers also translate the English like language (Code written in C) into a language
(Machine language) which computers can understand. The Compiler read the whole
program and translates it into machine language completely. The difference between
interpreter and compiler is that compiler will stop translating if it finds an error and there
will be no executable code generated whereas Interpreter will execute all the lines before
error and will stop at the line which contains the error. So Compiler needs syntactically
correct program to produce an executable code. We will be using compiler in our course


Another important tool is Debugger. Every programmer should be familiar with it.
Debugger is used to debug the program i.e. to correct the logical errors. Using debugger
we can control our program while it is running. We can stop the execution of our
program at some point and can check the values in different variables, can change these
values etc. In this way we can trace the logical errors in our program and can see whether
our program is producing the correct results. This tool is very powerful, so it is complex


Most of the time our program is using different routines and functions that are located in
different files, hence it needs the executable code of those routines/functions. Linker is a
tool which performs this job, it checks our program and includes all those routines or
functions which we are using in our program to make a standalone executable code and
this process is called Linking


After a executable program is linked and saved on the disk and it is ready for execution.
We need another process which loads the program into memory and then instruct the
processor to start the execution of the program from the first instruction (the starting
point of every C program is from the main function). This processor is known as loader.
Page 12
Linker and loaders are the part of development environment. These are part of system
The following figure represents a graphical explanation of all the steps involved in
writing and executing a program.
Preprocessor program
processes the code.
Loader puts program
in memory.
CPU takes each
instruction and
executes it, possibly
storing new data
values as the

program executes.

Compiler creates object
code and stores

it on disk.

Linker links the object
code with the libraries


Primary Memory


Primary Memory

<Previous Lesson

Introduction to Programming

Next Lesson>


Lesson Plan


Go to Top

Copyright © 2008-2013 zainbooks All Rights Reserved
Next Lesson
Previous Lesson
Lesson Plan
Go to Top