Cost estimation approach: FP to COCOMO scenario based question
FIT-Unit3 chapter2- Computer Languages
1.
2. Contents
Types of Programming Languages
Generations of Programming Languages
Features of good Programming Languages
3. Types of programming
languages
Computers understand only one language that
is binary language or the language of 0s and
1s.
In the initial years, instructions were given in
binary from only.
Although these programs were easily
understood by the computers but it was too
difficult for a normal person to understand.
Human beings came up with assembly and
High level languages to communicate with the
computers. They are classified into three
categories:
4. Machine language
It is the native language of the computers
It is usually only 0s and 1s to represent data and
instructions
Assembly language
Has symbolic instructions and executable machine
codes
Letters were used instead of 0s and 1s
High level language
Written using set of words, have rules for them
The program written in HLL is called as source program
These are converted into machine readable using a
compiler or interpreter.
5. Generations of programming
languages
First generation: machine language
Second generation: assembly language
Third generation : High level language
Fourth generation
Fifth generation: very high level languages
6. First generation: machine
language
First language was binary, hence known as
machine language.
Machines have only two states, ON (1) and
OFF (0)
Machine language is also known as native
language as the codes is directly
understood by the computer.
There are two parts in the instructions
OPCODE
OPERAND
7. Advantages of machine
languages
Translation free
Machine language is the only language that
computers can directly execute without the need
for conversion.
High speed
No conversion is needed, the applications
developed using machine language is extremely
fast.
Used for applications of nuclear reactors and
chemical processing.
8. Disadvantages of machine
languages
Machine dependent
Application developed for a particular type of
machine, may not run on another machine.
Costly and difficult for the organizations.
Complex language
Machine language is complex , difficult to read
or write.
Programmer has to be an hardware expert to
understand the machine language perfectly.
9. Error prone
Since programmer has to remember all the
opcode and memory locations
Requires lot of effort to keep track of logic of the
problem.
Tedious
Problems arises when modifications of the
existing code has to be done.
Very tedious task and time consuming.
10. Second generation : assembly
language
Assembly language allows the programmer to
interact directly with the hardware.
This language assigns a mnemonic code to each
machine language instruction to make it easier to
remember to write.
Allows a better human readable method of writing
programs as compared to writing in binary bit
patterns.
Each processor family has its own assembly
language.
Mnemonic is usually three letter long
corresponding to each machine instruction.
11. The letters are usually abbreviated indicating what
the instruction does.
Since each type of the computer uses a different
native instruction set, assembly languages cannot
be standardized from one machine to another and
instructions from one computer cannot be
expected to work on another.
It allows the use of symbols and set of rules that
can be combined to form a line of code.
Each line of code has four columns called as
fields.
The general format is
[label] <opcode> <operands> [; comments]
12. [ … ] indicate that enclosed specification may
or may not appear in the statement.
If a label is specified , it is associated as a
symbolic name with machine words generated
for the assembly statement.
If multiple operands are used, each of them is
separated by a comma.
Comments are optional , they facilitate
documentation.
Eg: BEGIN ADD A,B ; add B to A
13. assembler
No matter how close assembly language is to machine
code, the computer still cannot understand it.
The assembly language program must be translated
into machine code by separate program called an
assembler.
The assembler program recognizes the character
strings that make up the symbolic names of the various
operations and substitutes the required code for each
instruction.
In short assembler converts the assembly codes into
binary codes and then it assembles the machine
understandable code into the main memory of the
computer, making it ready for execution.
15. Functions of assembler
It translates mnemonic operation codes to
machine code and corresponding register
address to system address.
It checks the syntax of the assembly program
and generates diagnostic messages on syntax
errors.
It assembles all the instructions in the main
memory for execution.
In case of large assembly programs, it also
provides linking facility among subroutines.
It facilitates the generation of output on the
required output medium.
16. Advantages of assembly
language
Easy to understand and use:
It uses mnemonics instead of numerical opcodes and
memory locations used in machine language.
Programs written in assembly level language are much more
easier to understand when compared to machine level
language
Less error prone:
mnemonics and system addresses are used
Programmer need not keep track of address while coding,
leads to less error prone program.
Efficiency:
Can run much faster and use less memory and other
resources when compared to HLL programs.
More control on hardware:
Gives direct access to key machine features essential for
implementing certain kinds of low level routines.
17. Disadvantages of assembly
language
Machine dependent:
Different computer architectures have their own machine and
assembly languages, programs are not portable to other systems.
Harder to learn
The source code for assembly level language is cryptic and in a very
low machine specific form
Makes a programmer difficult to understand
Slow development time
Less efficient
Assembly level language program has to be converted to machine
language
No standardization
No support for modern software engineering technology
Provides less opportunity for reuse and no OOP support
Does not provide support for safety-critical systems.
18. Third generation: high level
language
Languages such as COBOL, FORTON, BASIC
and C are examples
Similar to english language.
They are machine independent
A single HLL statement can substitute several
instructions in machine or assembly level
language.
BASIC code snippet
LET X=10
LET Y=20
LET SUM= X+ Y
PRINT SUM
19. Translating HLL into machine
level language
Achieved by language translators called as
compilers, interpreters etc which accepts
the statements in one language and
produce equivalent statements in other
language.
20. complier
It is defined as a translator that translates a program
into another program, known as target language.
Usually used to translate a high level language into a
machine language.
The compiler replaces one HLL statements by several
machine level language statements.
The compiler stores the entire program, scans it and
translates the whole program into equivalent machine
language program.
During translation, the compiler checks for syntax
errors, if any error it gives a error message
After compilation, after removal of all errors from the
source code, the resulting machine code is saved in an
executable file.
21.
22. interpreter
It translates a statements in a program and
executes that statement immediately,
before translating next line of statement
When an error occurs the execution of the
program is halted and error message is
displayed.
23.
24. linker
An application contains 100 or 1000s lines of
codes
The codes are divided into logical groups and
stored in different modules so that the
debugging and maintenance of the code
becomes easier.
When the programs are divided into blocks ,
they have to be linked together to create a
complete application, it is done by a linker.
a linker is a program that links several object
modules and libraries to form a single
program.
25. loader
Loaders are part of operating system that
brings an executable file residing on disk into
memory and starts its execution.
Its responsible for loading, linking and
relocation.
A loader is a program that performs the
functions of a linker and then immediately
schedules the executable code for execution,
without necessarily creating an executable file
as an output.
Four 4 basic functions are performed:
26. Allocation
It allocates memory space for the programs
Linking
It combines two or more separate object programs
and supplies the information needed to allow
references between them.
Relocation
It prepares a program to execute properly from its
secondary storage area
Loading
It places data and machine instructions into the
memory.
27. Types of loader
Absolute loader
○ It loads the file into memory at the location specified by
the beginning portion of the file and then passes control
to the program.
○ If the memory space specified by the header is
currently in use, execution cannot proceed and the user
must wait until the requested memory becomes free.
○ Performs only loading operations
○ It does not perform linking and program relocation.
28. Relocating loader
○ This loader loads the program in the memory, altering
the various address required to ensure correct
referencing.
○ The decision as to where in memory the program is
placed, is made by the operating system, not the file
headers.
○ The relocating loader can only relocate code that has
been produced by a linker capable of producing relative
code.
29. Advantages of high level
languages
Readability
Machine independent
Easy debugging
Easier to maintain
Low development cost
Easy documentation
31. Four generation
Commonly used for database access.
Here computers are instructed what to and
not how to do.
It is easy to write but has less control over
how each task is actually performed.
Have minimum number of rules.
Saves time and allows programmer to code
a complex tasks.
32. Three categories:
Query languages
○ Allow user to retrieve information from database by
following simple syntax rules.
Report generators
○ To produce customized reports using data stored in a
database.
Application generators
○ User writes programs to allow data to be entered into
the database.
○ The program prompts the user to enter the needed data
○ Checks for validity.
33. Advantages of 4GL
The user can create an application in a
much shorter time for development and
debugging than with other languages.
The programmer is only interested in what
has to be done and that too at a very high
level.
Programmers do not provide any logic to
perform a task.
Lot of effort is saved.
34. Disadvantages of 4GL
They are quite lengthy programs,
Need more disk space
Programs are inflexible when compared to
other language programs.
35. Fifth generation: very HLL
Future of programming languages
Will be able to process natural languages.
The computers will be able to accept,
interpret and execute the instructions in
native language or language of end users.
The programmers may simple type or tell
to computer, to instruct it what needs to be
done.
Closely linked to artificial intelligence and
expert systems.
36. Features of a good programming
language
Ease of use
Portability
Naturalness for the
application
Reliability
Safety
Performance
Cost
Promote structured
programming
Compact code
Maintainability
Reusability
Provides interface to other
language
Concurrency support
standardization
37. Ease of use
The language should be easy in writing code
for the programming and executing them.
The ease and clarity of a language depends
upon its syntax
It should be clear, simple and unified set of
concepts.
The vocabulary of language should
reassemble English.
Symbols, abbreviations and jargons should be
avoided unless they are known by most of the
people.
38. Portability
The code should be constructed such way
that it could be distributed across multiple
platforms
It should be independent of any particular
hardware or operating system
i.e. program written on one system should
be able to test in another system and
perform accurately.
39. Naturalness for the application
The language should have a syntax which
allows the program structure to show
underlying logical structure of algorithm.
It should provide conceptual framework for
thinking algorithm
Expressing algorithms in terms of flowchart
increases readability.
40. Reliability
The language should perform the intended
functions in satisfactory manner through out its
lifetime.
Reliability is concerned with making system
failure free.
Language should provide support for
preventing errors.
The language should also detect and report
errors.
There should be mechanisms to handles these
errors.
41. Safety
It is concerned with the extent to which the
language supports the construction of
safety critical systems, yielding systems
that are fault tolerant, fail safe or robust in
the face of systemic failure.
The system must do what is expected and
should be able to recover in any situation
that might lead to a mishap or actual
system hazard.
42. Performance
The language should not only be capable
of interacting with end users but also with
the hardware.
It should also interact with software
mechanisms and avoid poor politics and
support maintenance activities.
The hardware’s should be used in terms of
speed and memory.
43. cost
Primary concern before deploying
language at commercial level.
It include several costs such as
Program execution and translation cost
Program creation, testing and usage cost
Program maintenance cost
44. Promote structured
programming
A good language should be capable of
supporting structured programming.
A structured program also helps
programmers to visualize the problem
logical way, thereby reducing the
probability of errors in the code.
45. Compact code
A language should promote compact
coding.
Intended operations should be coded in
minimum number of lines.
Large codes require more testing and
developing time, thereby increasing the
cost of developing an application.
46. maintainability
Application has to be maintained regularly
so that it can meet changing requirements.
Maintainability is closely related to
structure of code.
If the original code is written in an
organized way then it would be easy to
modify or add new changes.
47. reusability
The language should facilitate the
adaptation of code for use in other
applications.
Code is reusable when it is independent of
other codes.
Stacks, queues and trees can be reused in
many programs.
48. Provides interface to other
language
Interface to other language refers to the
extent to which the selected language
supports the interfacing feature to other
languages.
This supports has an effect on reliability of
data which is exchanged between two
applications developed in different
languages.
49. Concurrency support
Refers to the extent to which inherent
language supports the construction of code
with multiple threads of control
Used in real time systems.
Also called as parallel processing
50. standardization
Means the extent to which the language
definition has been formally standardized
Extent to which it can be reasonably
expected that this standard will be followed
in a language translator.
Non standardized languages become
obsolete soon, produces inferior codes,
poor developers productivity, no reliability
of code