Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

Chapter -1: Overview of computer software and programming languages

Computer
A computer is a device that can be instructed to carry out arbitrary sequences of arithmetic or
logical operations automatically. The ability of computers to follow generalized sets of
operations, called programs, enables them to perform an extremely wide range of tasks.
A computer system consists of two major elements: hardware and software.

Computer Hardware
Computer hardware is the collection of physical parts of a computer system. This includes the
computer case, monitor, keyboard, and mouse. It also includes all the parts inside the computer
case, such as the hard disk drive, motherboard, video card, and many others. Computer hardware
is what you can physically touch.

Input Unit
 It is an external device that is connected to the CPU.
 It is used to feed data and instructions for solving the problem at hand.
 The control unit sends signal to this unit to receive data and instructions from the user,
which is communicated to the CPU.
Examples: Keyboard, Mouse, Joystick, Scanner, Trackball, Light Pen, Touch screen,
Touch pad, Bar code reader, Microphone, etc.

Output Unit
 This is used to display the result obtained after execution of a program.
 Whenever the user wants the output from the computer, the control unit sends signal to
this unit to be ready to accept processed data from memory and display it.
Examples: Monitor, Printer, Scanner, Plotter, Speaker, Headphones, Fax, etc.

CPU (Central Processing Unit)


 CPU fetches program instructions from RAM (input), interprets and processes it
(execution) and then sends back the computed results so that the relevant components can
carry out the instructions.

Compiled By: Deepak Kr Singh, Pradeep Khanal


 It is further divided into two components:
1. ALU (Arithmetic & Logical Unit).
2. CU (Control Unit).

ALU (Arithmetic & Logical Unit)


 All calculations are carried out in the ALU.
 It consists of electronic circuitry which performs the basic arithmetic operations like +, -,
*, /.
 It also consists of electronic circuitry that performs logical operations are gives us results
in the form of true or false.

CU (Control Unit)

 It controls and co-ordinates the activities of all the units of a computer system.
 It acts as the central nervous system of the computer.
 It controls and times signals to various units to co-ordinate for the specific operation.

MU (Memory Unit)

 This is a storage device of the computer.


 It stores the data and instructions fed by the user and also the result which is produced
after processing the same data.
 There are two types of memory, one is called volatile memory and the other is non-
volatile memory.
 In volatile memory, information is retained as long as power is supplied to the chips. In
non-volatile memory, information is retained, even though power is not supplied.
Computer Software (2074, 2072, 2070)

It is a computer program which is a sequence of instructions designed to direct a computer to


perform certain task. A software is an interface between user and computer. It is responsible for
controlling, integrating and managing the hardware components of a computer system and for
accomplishing specific task. Different software's are used to solve different problems.

Software Types:

1.1 System Software

System software consists of several programs, which responsible for controlling, integrating and
managing the individual hardware components of a computer system. System software is
generally prepared by the computer manufacturers. These software products comprise of
programs written in low-level languages, which interact with the hardware at a very basic level.
System software serves as the interface between the hardware and the end users. It enables
application programs to execute properly. It consists of three basic operations as follows:

Compiled By: Deepak Kr Singh, Pradeep Khanal


- Saving data on disk

- Making computer to work for us

- Printing a document etc

Example: Operating System

Operating System: An OS is a collection of software that manages computer hardware


resources and provides common services for computer programs.

The OS is a vital component of the system software in a computer system.

Application programs usually require an OS to function.

1.2 Application Software

Application software is specific purpose software which is used by user for performing specific
task. It includes set of programs that do real work for users. There are two types of application
software.

a) General Purpose Software

These are designed to perform general task. Examples are:

 Word Processing Software


Enables users to create, edit, format and edit textual documents such as letters. Example:
Microsoft Word, Open Office etc.
 Presentation Software
Practice of showing and explaining the contents of a topic to an audience or learner
visually. Example: Microsoft Power Point, Corel Presentation etc.
 Electronic Spreadsheet Software
Enables users to manipulate a table of data usually making numerical and business
calculations and projections. Examples: Microsoft Excel, Corel Quattro Pro, Lotus 1-2-3
etc.
 DBMS Software
Enables users to create and maintain a database in which data is organized for ease of use
and manipulation. Example: Access, SQL Server, MySQL etc.
 Desktop Publishing Software
Is a tool for graphics designers and non-designers to create visual communications for
professional or desktop printing as well as for online or on screen electronic publishing.
Example: Quark Express, Adobe Page Maker etc.
 Graphics Software

Compiled By: Deepak Kr Singh, Pradeep Khanal


Enables a person to manipulate visual images on a computer system. Example: Adobe
Photoshop etc.
 Multimedia Software
Includes a combination of text, audio, still images, animation, video or interactivity
content forms.

b) Specific Purpose Software

 Inventory Management System and purchasing System


An attempt to balance inventory needs and requirement to minimize total cost, resulting
from obtaining and holding an inventory.
 Payroll Management System
Enable organization to encompass every employees of the organization who receives a
regular wages or other compensation.
 Hotel Management System
 Reservation System

Difference between system software and application software (Probable Question)

S.No. System Software Application Software


1. System software is used for operating Application software is used by user to
computer hardware. perform specific task.
2. System software are installed on the Application software are installed
computer when operating system is according to user’s requirements.
installed
3. In general, the user does not interact In general, the user interacts with
with system software because it works application sofwares.
in the background.
4. System software can run Application software can’t run
independently. It provides platform for independently. They can’t run without the
running application softwares. presence of system software.

Compiled By: Deepak Kr Singh, Pradeep Khanal


5. Some examples of system softwares Some examples of application softwares
are compiler, assembler, debugger, are word processor, web browser, media
driver, etc. player, etc.

1.3 General software features and recent trends (2071, 2069)

Features of a good computer program

 Portability
A program should be supported by many computers. The program should compile and
run smoothly on different platforms.
 Maintainability
It is the process of fixing program errors and improving the program. If a program is easy
to read and understand, then its maintenance will be easier.
 Efficient
Program is said to be more efficient, if it takes less space and easily converted to machine
language.
 Reliable
The user's actual needs will change from time to time, so program is said to be reliable if
it works smoothly in every version.
 Machine Independent
Program should be machine independent. Program written on one system should be able
to execute on any other without any changes.
 Cost Effectiveness
Cost effectiveness is the key to measure the program quality. Cost must be measured over
the life of the program and must include both cost and human cost of producing these
programs.
 Flexible
Program should be written in such a manner that it allows to add new features without
changing the existing modules.
 Interoperability
The ability of software to exchange information with the other applications. With the help
of this characteristics, the use of information can be made transparent.
 Correctness
Every program should meet all specifications expected by the users.
 Reusability
The software can be called reusable, if the users will have the ability to use the software
code with some modification for the different purposes. More complex software can be
developed in short span of time by reusing the existing software.

Compiled By: Deepak Kr Singh, Pradeep Khanal


 Security
In recent times, the security threats has increased over the internet. As a result of which,
this factor has become extremely important. There should be proper measure taken, while
developing software due to which user's data can be kept safe from threats.

Software recent trends (Assignments)

Explain About 2018 trends

IOT,

Block Chain

Deep Learning

Machine learning

Neural networks

Different problem oriented language

1.4 Generation of programming languages (2073, )

In general, a language is a communication medium between two people. We often use English,
German, French, Hindi etc. etc. languages to share our thoughts with each other. You might
know that a computer can do nothing automatically if we don’t give proper instructions to it. So,
to communicate with a computer or to talk with a computer we also need a language. So that we
can tell a computer to play a song, play a video, copy a file or something else. The languages
used to give such instructions to a computer are referred as the programming language. There are
different generations of programming languages are available. In total, there are 5 generations of
programming languages are available. Let’s discuss all of these 5 generations of programming
languages in details.

Compiled By: Deepak Kr Singh, Pradeep Khanal


1st generation of programming languages (Machine Language).
Machine language is the only programming language that the computer can understand directly
without translation. It is a language made up of entirely 1s and 0s.There is not, however, one
universal machine language because the language must be written in accordance with the special
characteristics of a given processor. Each type or family of processor requires its own machine
language. For this reason, machine language is said to be machine-dependent (also called
hardware-dependent).
Machine language programs have the advantage of very fast execution speeds and efficient use
of primary memory. Use of machine language is very tedious, difficult and time consuming
method of programming. Machine language is low-level language. Since the programmer must
specify every detail of an operation, a low-level language requires that the programmer have
detailed knowledge of how the computer works. Programmers had to know a great deal about the
computer’s design and how it functioned. As a result, programmers were few in numbers and
lacked complexity.

2nd Generation of programming languages (Assembly Language).


The first step in making software development easier and more efficient was the creation of
Assembly languages. They are also classified as low-level languages because detailed
knowledge of hardware is still required. They were developed in 1950s. Assembly languages use
mnemonic operation codes and symbolic addresses in place of 1s and 0s to represent the
operation codes. A mnemonic is an alphabetical abbreviation used as memory aid. This means a
programmer can use abbreviation instead of having to remember lengthy binary instruction
codes.
Although assembly languages represented an improvement, they had obvious limitations. Only
computer specialists familiar with the architecture of the computer being used can use them. And
because they are also machine dependent, assembly languages are not easily converted to run on
other types of computers.
Before they can be used by the computer, assembly languages must be translated into machine
language. A language translator program called an assembler does this conversion. The
advantages of programming with assembly languages are that they produce programs that are
efficient, use less storage, and execute much faster than programs designed using high-level
languages.

3rd Generation of programming languages (Procedure Oriented Language).


Third generation languages, also known as high-level languages, are very much like everyday
text and mathematical formulas in appearance. They are designed to run on a number of different
computers with few or no changes.
Objectives of high-level languages
 To relieve the programmer of the detailed and tedious task of writing programs in
machine language and assembly languages.
 To provide programs that can be used on more than one type of machine with very few
changes.
 To allow the programmer more time to focus on understanding the user’s needs and
designing the software required meeting those needs.

Compiled By: Deepak Kr Singh, Pradeep Khanal


Most high level languages are considered to be procedure-oriented, or Procedural languages,
because the program instructions comprise lists of steps, procedures, that tell the computer not
only what to do but how to do it. The programmer spends less time developing software with a
high level language than with assembly or machine language because fewer instructions have to
be created.
A language translator is required to convert a high-level language program into machine
language. Two types of language translators are used with high level languages: compilers and
interpreters.

4th Generation of programming languages (Problem Oriented Language).


Fourth generation languages are also known as very high level languages. They are non-
procedural languages, so named because they allow programmers and users to specify what the
computer is supposed to do without having to specify how the computer is supposed to do it.
Consequently, fourth generation languages need approximately one tenth the number of
statements that a high level languages needs to achieve the same results. Because they are so
much easier to use than third generation languages, fourth generation languages allow users, or
non-computer professionals, to develop software.
Objectives of fourth generation languages
 Increasing the speed of developing programs.
 Minimizing user effort to obtain information from computer.
 Decreasing the skill level required of users so that they can concentrate on the application
rather than the intricacies of coding, and thus solve their own problems without the aid of
a professional programmer.
 Minimizing maintenance by reducing errors and making programs that are easy to
change.

Depending on the language, the sophistication of fourth generation languages varies widely.
These languages are usually used in conjunction with a database and its data dictionary.
Five basic types of language tools fall into the fourth generation language category.
1. Query languages
2. Report generators.
3. Applications generators.
4. Decision support systems and financial planning languages.
5. Some microcomputer application software.

5th Generation of programming languages (Natural Language).


Natural Languages represent the next step in the development of programming languages, i-e
fifth generation languages. The text of a natural language statement very closely resembles
human speech. In fact, one could word a statement in several ways perhaps even misspelling
some words or changing the order of the words and get the same result. These languages are also
designed to make the computer “smarter”. Natural languages already available for
microcomputers include Clout, Q&A, and Savvy Retriever (for use with databases) and HAL
(Human Access Language).

Compiled By: Deepak Kr Singh, Pradeep Khanal


The use of natural language touches on expert systems, computerized collection of the
knowledge of many human experts in a given field, and artificial intelligence, independently
smart computer systems.

1.5 Categorization of high level languages

Programming Language

High Level Language Low Level Language

Procedure Oriented language Machine Language

Object Oriented Language


Assembly Language

Problem Oriented Language

Natural Language

Figure: Classification of Programming Language

 High Level programming language is language that is more user friendly, to some extent
platform-independent and abstract from low-level computer processor operations such as
memory access.

 Low- Level language is a programming language in which each statement or instruction


is directly translated into a single machine code. It is machine dependent, i.e. a particular
low level language works only for a certain machine.

Procedure Oriented Language:


The most high level language today are procedure-oriented languages. In these languages, one or
more related blocks of statements that perform some complete function are grouped together into
a program module, or procedure, & given a name such as "Procedure A". If the same sequence of
operations is needed elsewhere in the program, a simple statement can be used to refer back to
procedure. In essence, a procedure is just a mini-program. A large program can be constructed by
grouping together procedures that perform different tasks. Procedural languages allow programs
to be shorter and easier for the computer to read, but they require the programmer to design each
procedure to be general enough to be used in different situations.

Compiled By: Deepak Kr Singh, Pradeep Khanal


Object Oriented languages:
Object-oriented languages are outgrowths of functional languages. In object-oriented languages,
the code used to write the program and the data processed by the program are grouped together
into units called objects. Objects are further grouped into classes, which define the attributes
objects must have.
A simple example of a class is the class Book.
Objects within this class might be Novel and Short Story. Objects also have certain functions
associated with them, called methods. The computer accesses an object through the use of one of
the object's methods. The method performs some actions to the data in the object and returns this
value to the computer. Classes of objects can also be further grouped into hierarchies, in which
objects of one class can inherit methods from another class. The structure provided in object-
oriented languages makes them very useful for complicated programming tasks.

Problem Oriented Languages:


Third generation languages are valuable, but they require training in programming. Many people
wanting to write programs found it difficult to learn the syntax of third level languages.
Problem-oriented languages, also known as 4GLs (fourth generation languages) and very high
level languages, require little special training on the part of the user.

Problem-oriented Languages were designed to solve specific problems e.g. querying databases
and allowed the programmer to concentrate more on the problem rather than spending time
learning the complex syntax of the language. Some of these fourth-generation languages are used
for special applications as described below.

Query Languages enable users, who are not programmers, to use certain easily-understandable
commands to search and generate reports from a database. An example would be the commands
used by clerical officers to look for specific information on a personnel database-like date of first
appointment or job title.

Application Generators contain a number of modules, which are logically related program
statements that have been pre-programmed to accomplish specific tasks. An example would be a
module that calculates value-added tax (VAT) on products. The programmer can simply state
which task is needed for a particular application. The application generator creates the program
code by selecting the appropriate modules.

Natural Languages:

As they have evolved through the generations, computer languages have become more
humanlike. The fifth generation language refers to using natural languages, such as English,
French or Japanese, to communicate with computers. These languages are still under
development. They aim at providing people with a more natural interface to communicate with
computers. Users, therefore, will not require special training for writing programs. Researchers
also hope that natural languages will enable a computer to learn to "remember" information, as
people do, and to improve upon it. The standard definition of a fifth generation language (5GL)
is a computer language that incorporates the concepts of artificial intelligence to allow direct
human communication. Additionally, these languages would enable a computer to learn and to

Compiled By: Deepak Kr Singh, Pradeep Khanal


apply new information as people do. Rather than coding by keying in specific commands, we
would communicate more directly to a computer using natural languages. The natural languages
commonly in practices are LISP (List Processing) and PROLOG (Programming Logic) etc.

Procedure Oriented Languages Problem Oriented Languages


Difficult to learn Easy to learn
Requires the specification of how to Requires the specification of what to
perform a task. perform. System knows how to perform.
Difficult to debug the programs. End users need not to specify the alternatives
because all default alternatives are built.
From the above points, it can be said that Similarly, these can be used by both non-
these are designed for professional professional and professional programmer.
programmer.
Generally, code is difficult to read, Because of English like commands, code is
understand and maintain. easier to read, understand and maintain.
These languages use file for storing and These languages use database for storing and
retrieving data. retrieving data.

Low level language High level language


They are faster than high level language. They are comparatively slower.

Low level languages are memory efficient. High level languages are not memory efficient.

Low level languages are difficult to learn. High level languages are easy to learn.
Programming in low level requires Programming in high level do not require any
additional knowledge of the computer additional knowledge of the computer
architecture. architecture.
They are machine dependent and are not
They are machine independent and portable.
portable.
They provide less or no abstraction from They provide high abstraction from the
the hardware. hardware.
They are more error prone. They are less error prone.
Debugging and maintenance is comparatively
Debugging and maintenance is difficult.
easier.
They are generally used for developing They are used to develop a variety of
system software’s (Operating systems) and applications such as – desktop applications,
embedded applications. websites, mobile software’s etc.

Compiled By: Deepak Kr Singh, Pradeep Khanal

You might also like