Saturday 3 September 2022







In this chapter, we are going to learn about the concept of program, programming,

programming process and different categories of programming languages used for computer systems, A program is basically a set of instructions to be executed by computer to perform

some task. The process of writing a program is called programming. The person who writes the program is called programmer. When a programmer writes a program, he or she goes through a particular process. This process of developing a program is called programming process. The programmer can use any language from hundreds of available programming languages for program development.



We lmow that a computer system basically consists of two parts: hardware and software.Without software, computer-hardware cannot do anything hence computer is nothing but a piece of metal without software. To make the computer-hardware to do something, we must install and use software in our computer system. Now the question arises what is software?

Software is a set of computer programs which are designed and developed to perform desired tasks on computer. It is the software which makes a computer capable of data processing,storing and retrieval. Basically, softwares are categorised into two types: system software and application software. System software are designed and developed to control the functionality & to operate computer system hardware while the application software are designed and developed to perform specific tasks using computer system. System softwares are more complex as compared to application softwares. The development (programming) of system softwares require more skills as compared to application software development.


Software is usually not a single entity. It is a set (collection) of programs. A programmer must write instructions in a prescribed sequence of the programming language being used for development so that the computer system becomes capable of successfully performing the desired task. Thus, we can say that a Program is a set of Instructions that the computer executes.

The process of writing system program is known as System programming and the programmer for the same is called System Programmer whereas writing application program is known as application programming and the programmer for the same is called application programmer,



The programming languages are similar to natural languages which are used in our daily life such as Punjabi, Hindi and English etc. As we use natural languages for communication purposes, similarly computer programming languages are used to communicate with the computer systems and to make computers work as desired through softwares.System programs (Example: Operating Systems) are designed to control & operate the input/output devices, memory, processor etc. To write system program, such as operating system, programmer needs to control the hardware components of computer system. It is possible only if the programmer knows the internal architecture of hardware components.Therefore, system programming is the task of skilled programmers that have a detailed knowledge

of the hardware components of the computer system. Machine, Assembly and C languages are widely used to develop system programs.Application programs are developed to perform a particular task or to solve a particular problem. For example: student management system, library management system, payroll system,inventory control system, word processors, spread sheets, graphics software etc are application

programs. Application programmer does not need to possess in-depth hardware knowledge.The most popular application programming languages are PYTHON, COBOL, FORTRAN,BASIC, PASCAL, C, C++, JAVA ete.


6.3.1 Types of Programming Languages

In this era, hundreds of programming languages are available. These languages are categorised on the basis of their ability to develop different kinds of software. Some of the programming languages are best for writing system software while some others are best suitable for writing application software or mobile applications:


For designing and developing system programs, low level programming languages are used while for developing application-programs, many high level programming languages have been designed. Let's know more about different type of programming languages:


A. Low Level Languages : Machine language and assembly languages are called low

level languages. These programming languages are close to computer hardware and have more direct access to the features of the hardware. These are used to develop drivers, high performance code, kernels for operating systems etc. A detailed explanation of low-level languages is given below:


a. Machine Language : Machine language is also known as Binary Language. It is

considered as the first generation of computer programming languages. Machine

language is the fundamental language for computer systems because this language is

directly understood by the computer hardware. Unlike high level programming

languages, there is no need for translation of machine language code to make it understandable by the computer. This language consists of only two binary digits - 0 and 1.

Every instruction in machine language consists of two parts: Opcode and operand, as shown in the diagram below:


Fig. 6.3 Instruction Format in Machine Language

Here, Opcode is the Operation Code and Operand is the Operation Address, The first part - Operation code is the command which tells the computer what operation is

going to be performed. The second part - Operation Address is the memory address

which tells the computer where to find the data for the operation to be performed.

Because the instruction codes are written using binary digits 0 and 1 only, so it

becomes difficult to remember the machine instruction codes in binary format. There

ate many advantages and disadvantages of using machine language some of which

are explained below:


Advantages of Machine Language:Binary format instructions are directly understood by computer without any

translation.Machine instructions are executed fast because these are executed directly without any translation.


Disadvantages of Machine Language:

It is difficult to remember the machine instruction codes as they are made up of

complex combinations of binary digits 0 and 1.


It is the most difficult process to find errors in the machine instruction codes.

Highest level of knowledge of low-level internal details of hardware is required for programming in machine language.

Programs developed in machine language are machine dependent because machine

instructions are written according to the underlying architecture of computer system.So, these instructions are machine specific which cannot be executed on the computer systems having different architecture.


b. Assembly Language : This language is also known as Symbolic Language because

symbolic names of instructions are used instead of binary codes. This language is

considered as second generation of computer programming languages. The major

benefit of assembly language as compared to machine language is that it reduces

coding time and the amount of information the programmer has to remember. The

symbolic names of instructions can be easily remembered therefore it also becomes easy to find errors in the program and to modify it as compared to machine language.Despite of these benefits, programming in assembly language still requires in-depth technical knowledge of hardware. So, programmer must be aware with the machine architecture for programming in assembly language. Due to this hurdle, programs written in assembly language are still machine-dependent. These programs cannot be executed on other machines having different architectures.

Symbolic names used for operation codes in Assembly Language are called Mnemonic

Codes. For example: the codes for addition, subtraction, multiplication, and division operation are ADD, SUB, MUL and DIV respectively in Assembly language. These codes are the examples of Mnemonic codes.


Now the question arises how do computers execute the assembly language code

because computers can execute instructions only in binary format. In order to execute

an assembly language code on a computer, it must be translated into equivalent

machine understandable code. For this translation, a translator program, named

Assembler, is used. Assembler is a language translator program which translates the assembly language code into equivalent machine code. In the following sections, we will study in detail about the assemblers.


Advantages of Assembly Language:

It is easy to learn and remember the codes of assembly language because it uses

English like codes instead of binary digits as compared to machine language.


Finding and correcting errors in the assembly language program is easy when compared to machine (binary) language.


Assembly language programs have the equivalent efficiency of the machine language programs.


Disadvantages of Assembly Language:

Knowledge of low level internal details of hardware is required for programming in

assembly language. Therefore hardware technical skills are required for the programmer to do programming in assembly language.


Programs developed in Assemblylanguage are machine dependent because assembly

instructions are written according to the underlying architecture of computer system.So these instructions are machine specific which cannot be executed on the computer systems having different architecture.


B. High Level Languages : The primary objective of developing high level languages is that these languages facilitate a large number of people to build programs or software without

the need to know the intemal low level details of computer system hardware. These languages are designed to be machine-independent.


High level languages are English like languages. These languages use simple & special characters and numbers for programming. Therefore, these languages make it easy for common people to learn and write computer programs. An instruction written in high level language is usually called a Statement. Each high level language has its own rules for writing program instructions. These rules are called Syntax of the language. Some of the commonly used High Level Languages are: PYTHON, BASIC, COBOL, FORTRAN, PASCAL, C, C++, JAVA, C SHARP etc.


Similar to Assembly Language, high level languages cannot be directly understood by

computer systems. Language translators are required for translating them into machine

understandable format. There are two approaches for translating high level languages into


machine code: first is via Compiler and other is via Interpreter. Each high level language has its own translator program. We cannot translate a program written in one specific high level language with the compiler of some other specific language. For example, we cannot compile C program using COBOL compiler or vice-versa.

Some of the common categories of high level languages are discussed below:


Procedural or Procedure Oriented Languages : Procedural languages are considered

as the Third Generation of Programming Languages (3GLs). In procedural

languages, a program can be written by dividing it into small procedures or subroutines.


Each procedure contains a series of instructions for performing a specific task.Procedures can be re-used in the program at different places as required.These languages are designed to express the logic of a problem to be solved. The order of program instructions is very important in these languages.Some popular Procedural languages are FORTRAN, COBOL, Pascal, C language etc.


Problem-Oriented or Non-Procedural Languages : Problem oriented languages

are also known as Non-Procedural languages. These languages are considered as the Fourth Generation of Programming Languages (4GL). These languages have

simple, English-like syntax rules and they are commonly used to access databases. It

allows the users to specify what the output should be instead of specifying each step one after another to perform a task. It means there is no need to describe all the details of how the data should be manipulated to produce the result. This is one step ahead

from third generation programming languages. These languages provide the user-friendly program development tools to write instructions.Using these languages, user writes the program using application generator that allows data to be entered into the database. The program prompts the user to enter the needed data and then it checks the data for its validity. Examples of problem oriented languages are: SQL (Structure Query Languages), Visual Basic, C# etc. The objectives of these languages are to increase the speed of developing programs and reduce errors while writing programs.



Object-Oriented Programming Languages : The Object-Oriented programming

concept was introduced in the late 1960s, but now it has become the most popular

approach to develop software.In these programming languages, a problem can be

solved by dividing it into a number of objects. Object-Oriented languages support the concept of object, class, encapsulation, data hiding, inheritance and polymorphism etc.Now-a-days, most popular and commonly used Object-Oriented programming (OOPs) languages are C++ and Java.


Logic-Oriented languages : These languages use logic programming paradigms as

the design approach for solving various computational problems. Any program

written in a logic programming language is a set of sentences in logical form. These

sentences express facts and rules about some problem domain, Major logic

programming language families include Prolog, Answer Set Programming (ASP) and

Datalog. In all of these languages, rules are written in the form of clauses. Such

languages are very beneficial in the field of Artificial Intelligence and Robotics.


Advantages of High Leve} Languages : Some of the common advantages of high level

languages are given below:

High Level languages are easy to learn and understand as compared to low level

languages. It is because the programs written in these languages are similar to

English-Like statements.


The errors in a high level language program can be easily detected and removed. All the syntax errors are detected and removed during the compilation process of the program.


These languages provide a large number of built-in functions that can be used to

perform specific task during programming which results in huge time saving i.e.

much faster development.


Programs written in high level language are machine independent. A program written

for one type of computer architecture can be executed on another type of computer

architecture with little or no changes.


Disadvantages of High Level Languages : Some of the common disadvantages of high

level languages are given below:


A program written in high level languages has lower efficiency & speed as compared

to equivalent programs written in low level languages.


Programs written in high level languages require more time and memory space for



High level languages are less flexible than low level languages because normally

these languages do not have direct interaction with computer's hardware such as CPU, memory and registers.



Language translators are also called Language Processors. These are the system programs which are helpful to develop programs. Language translators are designed primarily to perform

two main functions as described below:


These are designed to translate source programs into machine's object code. Source programs may be written in Assembly Language or High Level languages while

object code is a code that a computer CPU can understand without any translation.


These translator programs are also designed to detect any syntax errors in the source program. Successful translation of source program into object program takes place only if the source program does not have any syntax errors in it.

Each language has its own translator program which can translate the program written only in that specific language. Assembler is a translator program which can translate the source program written in assembly language only. Similarly each high level language has its own

translator program, known as Compiler and Interpreter. Some High level languages use Compiler (for example: C/C++ Language) while some other uses Interpreter (for example: BASIC language). But there exists also some languages which have both compiler and interpreter for different levels of translation, for example: JAVA is a language which has both compiler and

interpreter. All these types of translator programs are discussed below:


6.4.1 Assembler

It is a language translator which converts assembly language program into machine-

understandable format. The program written in assembly language is called Source Program.This source program cannot be directly understood by the computer system. That is why it must be translated into machine understandable format for the execution. It is the assembler which translates this assembly language source program into machine understandable program.The soutce program after translation (in machine understandable form) is called Object Program (Code). This object program is provided to processer for execution.

As shown above the input to assembler is an Assembly Language Program and the output of assembler is a program is in the machine understandable from.


6.4.2 Interpreter and Compiler

There are two types of language translators for High level languages i.e. 1. Interpreters



These translators are used for translating source programs written in High Level

languages into machine understandable form,In the first approach, i.e, Interpreter, one statement of high level language program is taken at a time and it is translated into machine instruction which is executed immediately by the

processor. It means no object program is saved in this approach of translation. Whenever we want to execute the program we have to translate the source program every time.


Interpreters do not require large memory space to translate and execute programs. The main disadvantage of interpreters is that they require same amount of time whenever we execute programs on a computer system because every statement of source program must be translated every time.


In the other approach, i.c. Compiler, all statements of the high level language program are taken at a time and they are translated into machine understandable form which is stored as Object Program in Memory. This object program is provided to computer system whenever program is executed. Compilers take more time to translate source program as compared to

interpreter. But compiled object program runs much faster than the interpreted program.


Each High Level language has its own compiler. We cannot compile the source code of one language with the compiler of another language. For example FORTRAN compiler cannot compile the source code written in COBOL language and vice-versa.

The difference between an interpreter and a compiler may be understood with the help of following analogy. Suppose we want to translate a speech from Tamil to Hindi. We can use two approaches to do this translation. In first approach, translator listens to a sentence in Tamil and

immediately translates it into Hindi. In the second approach, the translator listens to the whole passage in Tamil and then gives the equivalent Hindi passage. An interpreter is similar to first

approach of translation where sentence-by-sentence translation is carried out whereas compiler is similar to second approach where whole passage is translated in a single step.



We know that a computer needs a program to tell it what to do. Instructions in the program guide the computer how to solve the given problem. But developing a program is not a simple and easy task. A programmer has to go through a specific process for developing a program

successfully. The steps involve in the programming process are listed below and are required to be followed in the same sequence:

1. Defining the problem to be solved

2. Pian the solution of the problem

3. Coding the solution in the high level language

4. Compile the program

5. Test and Debug the program

6. Decumenting the program


These steps can be explained in detail as follows:

6.5.1 Defining the problem

It is the first step in the programming process. Before a programmer begins his task, he must need to know the extensive details of the problem to be solved through programming. The details of the problem should be provided to the programmer so that he gets a clear understanding of it. Analysis of the problem shows what the required inputs and outputs will be for the solution of problem. After having a clear understanding of the problem, programmer starts thinking about how to solve the given problem.


6.5.2 Planning the Solution

The next step after defining the problem is to prepare a detailed list of steps required to be catried out for solving the problem, We will take an example which shows why planning is required for solving the problem. A teacher asks the student to solve a specific mathematical problem and the student is not familiar with the steps involved in solving the problem. Thus, he

would not be able to solve it. The same principle applies to writing computer programs also. A programmer cannot write the instructions for any program unless he understands how to solve the problem manually.


If a programmer knows the steps for solving the problem but while programming, if he applies the steps in the wrong sequence or he forgets to apply any of these steps, he will get a wrong output or even no output at all. Hence to write an effective program, a programmer has

to write all instructions in the correct sequence. Therefore, to ensure that the instructions of the program are appropriate and are in the correct sequence, the programmer must plan the

program before start writing it. For planning and defining the steps for the programs,programmers normally use Algorithms and Flow-Charts. Both of these approaches are explained below in detail: Algorithms

The development of an algorithm is basic requirement to computer programming. It is a step-by-step description of how to solve a given problem. An algorithm consists of finite steps and a guaranteed result. When these steps are carried out as specified in the algorithm, it produces the required output. The construction of the algorithm requires creative thinking.Before developing a program, a programmer first set out the algorithm so that he can visualize the possible alternatives to solve the given problem. In order to qualify for the sequence of steps, to be called an algorithm, it should have the following features:

1, Each step should be accurate.

2. Each step should be unambiguous, i.e. it should not have dual meaning.

3. The inputs and outputs should be carefully specified.

4. Steps should not be repeated infinitely.

5. After executing the steps, the required output must be produced.


To gain a clear understanding of algorithms, let us consider some simple examples of defining algorithms.


Problem Statement 1 : Calculate and print multiplication of two numbers:


Step1: Start

Step2: Read two numbers A and B.

Step3: Multiply A and B and store result in C.

Step4: Print C.

Step5: Stop.


Problem Statement 2: Write an algorithm to find whether a given number is Odd

or Even.



Step1: Start

Step2: Read a Number A

Step3: Divide the number A by 2 and get remainder value

Step4: If remainder of the division is zero then

Print "Number is Even"Else

Print “Number is Odd"

Step5: Stop


Problem Statement 3: Write an algorithm to print “India is Great" 10 times:


Step1: Start

Step2: Count = 1

Step3: While (Count<=10)

Step4: Print “India is great"

StepS: Count=Count + 1

[End of While loop]

Step6: Stop Flow Charts

Flow charts are the common ways to represent algorithms. These are also frequently used by the programmers for planning of the program. Programmers often find them very helpful for developing effective and correct programs.


A flowchart is a pictorial representation of the algorithm. Programmers often draw flow charts to visually organize the sequence of steps defined in the algorithm. It uses different types

of symbols/shapes to represent different types of instructions. The process of drawing a flowchart for an algorithm is known as flowcharting.Normally, an algorithm is first represented as flowchart, and the flow chart is then expressed in a programming language to develop a computer program. The main advantage of this two-step approach in program development is that a programmer can more easily detect logical

errors in the program logic because a flow chart shows the flow of operations in the pictorial form. Once the flow chart is ready, the programmer can concentrate only on coding of operations. This normally ensures an error-free program.

Experienced programmers, sometimes, write programs without drawing flowcharts.

However, beginners should first draw a flowchart to effectively do the programming. Moreover,it is a good practice to have a flow chart along with the computer program. It proves to be very

useful during testing of the program as well as during modifications in the program.

Before preparing flowcharts, we have to learn about the different symbols used in the flowcharts. Some of the basic symbols used in the flowcharts are:

Now let us consider some examples of flowcharts sc that we get familiar with the concept of flowcharts:


a. Draw a flowchart to Calculate and print multiplication of two numbers

(Flowchart for Algorithm-I):



Now, we have a clear understanding of how to plan the steps to solve the given problem.Once, inputs, outputs, algorithms and flowcharts have been clearly defined, the next step is to translate these steps into a program using High level programming languages.


6.5.3 Coding the Solution:

The sequence of operations defined in flow-chart can be converted into instruction using some High-Level programming language, such as C, C++, and PASCAL etc. Coding is the process of writing the instructions using programming language to make a program. This

program file is known as source program or source code. This code is stored in a disk file. This program contains the logic or steps for solving the problem. For example, let us consider the following source code using C language for the Algorithm-I:


6.5.4 Compile the program

After writing program code in High level language, we have to translate it into such a form that computer can understand & execute it because computer can understand instructions only in binary format.A compiler is a small program that translates the source program into a

machine understandable form (i.c. object code). This conversion of source code into object code is known as Compilation. During compilation, compiler also scans the source program for syntax errors. If there are syntax errors in the program, compiler generates error messages.

These errors must be corrected to generate the object code. Then the object code will be stored in a disk file. Whenever we want to execute the program, this object code is supplied to computer for execution.


6.5.5 Testing and Debugging the Program

Testing and debugging are important steps in the software development. Testing is a

process which makes it sure that program (software) performs the intended task. Testing is a time-consuming task. As long as human beings make programs, the programs will have errors.These program exrors are called Bugs. The process of detecting and correcting such bugs is

called Debugging. Generally, two types of errors are found in the programs:


Syntax Errors : These errors occur when we do not follow the rules or syntax of

programming language being used. These types of exrors are automatically detected

by compilers during compilation process. A program cannot be successfully compiled

until all of the syntax errors in the program are removed. Some examples of syntax errors in C language are: missing semicolon, variable not declared, un-terminated string, compound statement missing etc.


Logical Errors : These errors occur when there are errors in the logic of the program.If our program has logic errors, though it will compile successfully but it may produce wrong result/output. Such types of errors cannot be detected by the compilers.


These errors are either traced out manually by the programmer or some debugging tools may be used to detect such errors. Programmer can detect any faulty logic by examining the output.


6.5.6 Documenting the Program

The final stage in the development process of a program is documentation. The term

documentation means specifying the important information regarding the approach and logic applied in the program by the programmer. The documentation enables other programmers to understand the logic and purpose of the program. It is also helpful in the maintenance of the




1. A Program is a set of instructions while a Software is a set of programs.

2. A Programmer is the person who writes the program code.

3. The Process of writing a program is called Programming

4. Machine language is directly understood by computer and consists of binary digits 0 and 1.

5. Assembly Language use mnemonic codes to write instructions in the program.

6. High Level languages use alphanumeric codes to write instructions in the program.

7. Assembler is a language translator which translates Assembly language source program into machine understandable format which is called Object Program Code.

8. Compiler is a language translator which translates High Level language source program into machine understandable format which is called Object code.

9. Algorithm is a set of finite steps to solve some specific problem.

10. Flowchart is the pictorial representation of the algorithm.

11. Writing the instructions to make a program using some computer language is called coding.

12. Finding and correcting errors in the program is called Debugging.



1. Multiple Choice Questions

1. Set of instructions is called .

a Group

b. Software

c. Program

d. None of these


2 Which language is directly understood by computer without any translation?

a. Procedure Oriented Language

b. Machine Language

c. Assembly Language

d. High Level Language


3. Mnemonic codes & symbolic addresses are used in which programming language?

a. Object Oriented Language

b. Non-Procedural Language

c. Assembly Language

d. Machine Language


4. Which translator does not save object code after translation of source program written in high level language?

a. Translator

b. Compiler

c. Assembler

d. = Interpreter


5. Process of finding and correcting errors in a program is called

a. Compilation

b. Coding

c. Debugging

d. Documentation



2. Fill in the Blanks:

1. A person who writes the program is called

2 Lew level internal details of hardware are required for programming in

3 is the pictorial representation of algorithm

4 Process of translating source program written in high level language into object

code is called

5 Those errors which are not detected by the compilers are called errors.


3. Write the Full form of following:

1. Opcode

2 Operand

3 4GL

4. SQL

5. OOP



4. Short Answer Type Questions. (Write the answers in 4-5 lines)

1. What is Programming?

2 What are Procedure Oriented Programming Languages?

3. Write the names of different symbols used in flowcharts.

4. Write the steps used in Programming Process.

5. What are Syntax Errors?




5. Long Answer Type Questions. (Write the answers in 10-15 lines)

1. What are low level programming languages? Explain their advantages and


2 What are Language Translators? Explain any one translator in detail.

3 What is algorithm? Explain the different features that an algorithm should have.

4 Explain different types of errors found in the computer programs.