0% found this document useful (0 votes)
2 views

notes1software

Computer software is categorized into system software, which manages hardware components, and application software, which performs specific tasks for users. The relationship between hardware and software is essential, as both must work together for a computer to function effectively. Programming languages are classified into low-level and high-level languages, with high-level languages being more user-friendly and machine-independent, while low-level languages provide more control but are machine-dependent.

Uploaded by

Ravindra Kumar
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

notes1software

Computer software is categorized into system software, which manages hardware components, and application software, which performs specific tasks for users. The relationship between hardware and software is essential, as both must work together for a computer to function effectively. Programming languages are classified into low-level and high-level languages, with high-level languages being more user-friendly and machine-independent, while low-level languages provide more control but are machine-dependent.

Uploaded by

Ravindra Kumar
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

Computer Software

Basic understanding of software and its components

Computer Software Definition : Software is a set of multiple instructions called


software, often broken into two major categories: system software that provides the
basic non-task specific functions of the computer, and application software which is
used by users to accomplish specific tasks.
1. System Software: System software is responsible for controlling, integrating, and
managing the individual hardware components of a computer system so that other
software and the users of the system see it as a functional unit without having to be
concerned with the low-level details such as transferring data from memory to disk,
or rendering text onto a display. Generally, system software consists of an operating
system and some fundamental utilities such as disk formatters, file managers, display
managers, text editors, user authentication (login) and management tools, and
networking and device control software.
2. Application Software: Application software, on the other hand, is used to
accomplish specific tasks other than just running the computer system. Application
software may consist of a single program, such as an image viewer; a small
collection of programs (often called a software package) that work closely together
to accomplish a task, such as a spreadsheet or text processing system; a larger
collection (often called a software suite) of related but independent programs and
packages that have a common user interface or shared data format, such as Microsoft
Office, which consists of closely integrated word processor, spreadsheet, database,
etc.; or a software system, such as a database management system, which is a
collection of fundamental programs that may provide some service to a variety of
other independent applications.
Software is created with programming languages and related utilities, which may
come in several of the above forms: single programs like script interpreters,
packages containing a compiler, linker, and other tools; and large suites (often called
Integrated Development Environments) that include editors, debuggers, and other
tools for multiple languages.
Hardware: Hardware is a comprehensive term for all of the physical parts of a
computer, as distinguished from the data it contains or operates on, and the software
that provides . instructions for the hardware to accomplish tasks. The boundary
between hardware and software is slightly blurry - firmware is software that is "built-
in" to the hardware, but such firmware is usually the province of computer
programmers and computer engineers in any case and not an issue that computer
users need to concern themselves with.
A typical computer (Personal Computer, PC) contains in a desktop or tower case the
following parts:
 Motherboard which holds the CPU, main memory and other parts, and has
slots for expansion cards.
 power supply - a case that holds a transformer, voltage control and fan.
 storage controllers, of IDE, SCSI or other type, that control hard disk , floppy
disk, CD ROM and other drives; the controllers sit directly on the
motherboard (on-board) or on expansion cards.
 graphics controller that produces the output for the monitor.
 the hard disk, floppy disk and other drives for mass storage.
 interface controllers (parallel, serial, USB, Fire wire) to connect the computer
to external peripheral devices such as printers or scanners.

Relationship between Hardware and software


For A Computer to produce useful output its hardware and software must
work together. Nothing useful can be done with the hardware on its own and
software cannot be utilized without supporting hardware.

To take an analogy, a cassette player and its cassettes purchased from the
market as hardware. Hence, the songs recorded on the cassettes are its
software. listen to a song, that song has to be recorded on one of the cassettes
first, which is then mounted on the cassette player and played. Similarly, to
get a job done by a computer, the corresponding software has to be loaded in
the hardware first and then executed. Following important points regarding
the relationship between the hardware and software are brought out by this
analogy:
1-Both hardware and software are necessary for a computer to do useful jobs.
Both are complementary to each other.
2-Same hardware can be loaded with different software to make a computer
perform different types of jobs just as different songs can by played using the
same cassette player.
3-Except for upgrades (like increasing main memory and hard disk
capacities, or adding speakers and moderns, etc) hardware is normally a one-
time expense whereas software is a continuing expense. Like we buy new
cassettes for newly released songs or for songs whose cassettes, we do not.
have, we buy, new software to be run on the same hardware as and when need
arises or funds become available.

Computer Language
A programming language is a formal constructed language designed to
communicate instructions to a machine, particularly a computer.
Programming languages can be used to create programs to control the
behavior of a machine or to express algorithms.

A programming language is a set of commands, instructions, and other syntax


use to create a software program. Languages that programmers use to write
code are called "high-level languages." This code can be compiled into a "low-
level language," which is recognized directly by the computer hardware.

High-level languages are designed to be easy to read and understand. This


allows programmers to write source in a natural fashion, using logical words
and symbols. For example, reserved words like function, while, if, and else
are used in most major programming languages. Symbols like, ==, and != are
common operators. Many high-level languages are similar enough that
programmers can easily understand source code written in multiple languages.
Examples of high-level languages include C++, Java, Perl, and PHP.
Languages like C++ and Java are called "compiled languages" since the
source code must first be compiled in order to run. Languages like Perl and
PHP are called "interpreted languages" since the source code can be run
through an interpreter without being compiled. Generally, compiled languages
are used to create software applications, while interpreted languages are used
for running scripts, such as those used to generate content for dynamic
websites.

Low-level languages include assembly and machine languages. An assembly


language contains a list of basic instructions and is much more difficult to read
than a high-level language. In rare cases, a programmer may decide to code a
basic program in an assembly language to ensure it operates as efficiently as
possible. An assembler can be used to translate the assembly code into.
machine code. The machine code, or machine language, contains a series of
binary codes that are understood directly by a computer's CPU. Needless to
say, machine language is not designed to be human readable.

Classification of Programming Language:


Computer programming language can be classified into two major categories:
 Low Level
 High Level

Low Level Languages


The languages which use only primitive operations of the computer are
known as low language. In these languages, programs are written by means
of the memory and registers available on the computer. As we all know that
the architecture of computer differs from one machine to another, so far each
type of computer there is a separate low level programming language. In the
other words, Programs written in one low level language of one, architectural
can’t be ported on any other machine dependent languages. Examples are
Machine Language and Assembly Language.

Machine Language
In machine language program, the computation is based on binary numbers.
All the instructions including operations, registers, data and memory locations
are given in there binary equivalent. The machine directly understands this
language by virtue of its circuitry design so these programs are directly
executable on the computer without any translations. This makes the program
execution very fast. Machine languages are also known as first generation
languages.

A typical low level instruction consists essentially of two parts:

• An Operation Part:
Specifies operation to be performed by the computer, also known as Opcode.

• An Address Part: Specifies location of the data on which operation is to be


performed.

Advantages

Machine language makes most efficient use of computer system resources like
storage, registers, etc. the instruction of a machine language program are
directly executable so there is no need of translators. Machine language
instruction can be used to manipulate the individual bits in a computer system
with high execution speed due to direct manipulation of memory and registers.

Drawbacks

Machine languages are machine dependent and, therefore, programs are not
portable from one computer to other. Programming in machine language
usually results in poor programmer productivity. Machine languages require
programmers to control the use of each register computer’s Arithmetic Logic
Unit and computer storage locations in the must be addressed directly, not
symbolically. Machine language requires a high level of programming skill
which increases programmer training costs. Programs written in machine
language are more error prone and difficult to debug because it is very difficult
to remember all binary equivalent of register, opcode, memory location, etc.
program size is comparatively very big due to non-use of reusable codes and
use of very basic operations to do a complex computation.

Assembly Language
Assembly language is also known as second generation languages. These
languages substitutes alphabetic or numeric symbols for the binary codes of
machine language. That is, we can use mnemonics for all opcodes, registers
and for the memory locations which provide us with a facility to write reusable
code in the form of macros. Has two parts, one is macro name and the other
is macro body which contains the line of instructions. A macro can be called
at any point of the program by its name to use the instruction. A macro can be
called at any point of the program by its name to use the instructions given in
the macro repetitively.

These language require a translator known as “Assembler” for translating the


program code written in assembly language to machine language. Because
computer can interpret only the machine code instruction, once the translation
is completed the program can be executed.

Advantages

Assembly language provide optimal use of computer resources like registers


and memory because of direct use of these resources within the programs.
Assembly language is easier to use than machine language because there is no
need to remember or calculate the binary equivalents for opcode and registers.
An assembler is useful for detecting programming errors. Assembly language
encourages modular programming which provides the facility of reusable
code, using macro.

Drawbacks

Assembly language programs are not directly executable due to the need of
translation. Also, these languages are machine dependent and, therefore, not
portable from one machine to another. Programming in assembly language
requires a high level of programming skills and knowledge of computer
architecture of the particular machine.

High Level Languages (HLL)


All high level language are procedure-oriented language and are intended to
be machine independent. Programs are written in statements akin to English
language, a great advantage over mnemonics of assembly languages require
languages use mnemonics of assembly language. That is, the high level
languages use natural language like structures. These languages require
translators (compilers and interpreters) for execution. The programs written
in a high level language can be ported on any computer, that is why known
they are known as machine independent. The early high level language come
in third generation of languages, COBOL, BASIC, APL, etc.

These languages enable the programmer to write instruction using English


words and familiar mathematical symbols which makes it easier than
technical details of the computer. It makes the programs more readable too.

Procedures

Procedures are the reusable code which can be called at any point of the
program. Each procedure is defined by a name and set of instructions
accomplishing a particular task.
The procedure can be called by its name with the list of required parameters
which should pass to tat procedure.
Advantages of High Level Languages
These are the third generation languages. These are procedure-oriented
languages and are machine independent. Programs are written in English like
statements. As high level languages are not directly executable,
translators(compilers and interpreters) are used to convert them in machine
language equivalent.

Advantages

1. These are easier to learn than assembly language.


2. Les time is required to write programs.
3. These provides better documentation.
4. These are easier to maintain.
5. These have an extensive vocabulary.

Limitation of Programming language

1. A long sequence statements is to be written for every program.


2. Additional memory space is required for storing compiler or interpreter.
Execution time is very high as the HLL programs are not directly executable.

Assembler:

A computer will not understand any program written in a language, other than
its machine language. The programs written in other languages must be
translated into the machine language. Such translation is performed with the
help of software. A program which translates an assembly language program
into a machine language program is called an assembler. If an assembler
which runs on a computer and produces the machine codes for the same
computer then it is called self assembler or resident assembler. If an assembler
that runs on a computer and produces the machine codes for other computer
then it is called Cross Assembler.
Assemblers are further divided into two types: One Pass Assembler and Two
Pass Assembler. One pass assembler is the assembler which assigns the
memory addresses to the variables and translates the source code into machine
code in the first pass simultaneously. A Two Pass Assembler is the assembler
which reads the source code twice. In the first pass, it reads all the variables
and assigns them memory addresses. In the second pass, it reads the source
code and translates the code into object code.

Compiler:
It is a program which translates a high level language program into a machine
language program. A compiler is more intelligent than an assembler. It checks
all kinds of limits, ranges, errors etc. But its program run time is more and
occupies a larger part of the memory. It has slow speed. Because a compiler
goes through the entire program and then translates the entire program into
machine codes. If a compiler runs on a computer and produces the machine
codes for the same computer then it is known as a self compiler or resident
compiler. On the other hand, if a compiler runs on a computer and produces
the machine codes for other computer then it is known as a cross compiler. .

Interpreter:
An interpreter is a program which translates statements of a program into
machine code. It translates only one statement of the program at a time. It
reads only one statement of program, translates it and executes it. Then it reads
the next statement of the program again translates it and executes it. In this
way it proceeds further till all the statements are translated and executed. On
the other hand, a compiler goes through the entire program and then translates
the entire program into machine codes. A compiler is 5 to 25 times faster than
an interpreter.

By the compiler, the machine codes are saved permanently for future
reference. On the other hand, the machine codes produced by interpreter are
not saved. An interpreter is a small program as compared to compiler. It
occupies less memory space, so it can be used in a smaller system which has
limited memory space.

Linker:
In high level languages, some built in header files or libraries are stored. These
libraries are predefined and these contain basic functions which are essential
for executing the program. These functions are linked to the libraries by a
program called Linker. If linker does not find a library of a function then it
informs to compiler and then compiler generates an error. The compiler
automatically invokes the linker as the last step in compiling a program. Not
built in libraries, it also links the user defined functions to the user defined
libraries. Usually a longer program is divided into smaller subprograms called
modules. And these modules must be combined to execute the program. The
process of combining the modules is done by the linker.

Loader:
Loader is a program that loads machine codes of a program into the system
memory. In Computing, a loader is the part of an Operating System that is
responsible for loading programs. It is one of the essential stages in the process
of starting a program. Because it places programs into memory and prepares
them for execution. Loading a program involves reading the contents of
executable file into memory. Once loading is complete, the operating system
starts the program by passing control to the loaded program code. All
operating systems that support program loading have loaders. In many
operating systems the loader is permanently resident in memory.

Characteristics Of A Good Programming Language?

There are some popular high-level programming languages, while there are
others that could not become so popular in-spite of being very powerful. There
might be reasons for the success of a language but one obvious reason is its
characteristics. Several characteristics believed to be important for making it
good:

A good programming language must be simple and easy to learn and use. It
should provide a programmer with a clear, simple and unified set of concepts
that can be grasped easily. The overall simplicity of a this strongly affects the
readability of the programs written in that language and programs that are
easier to read and understand are easier to maintain. It is also easy to develop
and implement a compiler or an interpreter for a simple language. However,
the power needed for the language should not be sacrificed for simplicity. For
Example, BASIC is liked by many programmers because of its simplicity.

1-Naturalness: A good language should be natural for the application area


for which it is designed. That is, it should provide appropriate operators, data
structures, control structures and a natural syntax to facilitate programmers to
code their problems easily and efficiently. FORTRAN and COBOL are good
examples of languages possessing high degree of naturalness in scientific and
business application areas, respectively.

2-Abstraction: Abstraction means ability to define and then use complicated


structures or operations in ways that allow many of the details to be ignored.
The degree of abstraction allowed by a language directly affects its ease of
programming. For Example, object-oriented languages support high degree of
abstraction. Hence, writing programs in object-oriented languages is much
easier. Object-oriented also support re usability of program segments due to
this feature.

3-Efficiency: Programs written in a good language are translated into machine


code efficiently, are executed and require relatively less space in memory.
That is, a good programming language is supported with a good language
translator (a compiler or an interpreter) that gives due consideration to space
and time efficiency.
4-Structured Programming Support: A good language should have
necessary features to allow programmers to write their programs based on the
concepts of structured programming. This property greatly affects the ease
with which a program may be written, tested and maintained. Moreover, it
forces a programmer to look at a problem in a logical way so that fewer errors
are created while writing a program for the problem.

5-Compactness: In a good language, programmers should be able to express


the intended operations concisely without losing readability. Programmers
generally do not like a verbose language because they need to write too much.
Many programmers dislike COBOL, because it is verbose in nature (Lacks
Compactness)

6-Locality: A good language should be such that while writing a program, a


programmer need not jump around the visually as the text of a program is
prepared. This allows the programmer to concentrate almost . solely on the
part of the program around the statement currently being worked with.
COBOL and to some extent C and Pascal lack locality because data definitions
are separated from processing statements, perhaps by many pages of code, or
have to appear before any processing statement in the function/procedure.

7-Extensibility: A good language should also allow extensions through a


simply, natural and elegant mechanism. Almost all languages provide
subprogram definition mechanisms for the purpose, but some languages are
weak in this aspect.

8-Suitability to its Environment: Depending upon the type of application


for which a programming language has been designed, the language must also
be made suitable to its environment. For Example, a language designed for a
real-time applications must be interactive in nature. On the other hand,
languages used for data processing jobs like payroll, stores accounting etc
may be designed to operative in batch mode.
References:

 Computer Science Illuminated" by Nell Dale and John Lewis.


 Introduction to Computer Science" by ITL Education Solutions.
 Fundamentals of Software Engineering" by Rajib Mall.
 Clean Code: A Handbook of Agile Software Craftsmanship" by Robert C.
Martin.

You might also like