Contents
 Types of Programming Languages
 Generations of Programming Languages
 Features of good Programming Languages
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:
 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.
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
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
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.
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.
 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.
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.
 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]
 [ … ] 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
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.
Working of an assembler
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.
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.
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.
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
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.
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.
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.
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.
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:
 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.
 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.
 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.
Advantages of high level
languages
 Readability
 Machine independent
 Easy debugging
 Easier to maintain
 Low development cost
 Easy documentation
Disadvantage of high level
language
 Poor control on hardware
 Less efficient
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.
 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.
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.
Disadvantages of 4GL
 They are quite lengthy programs,
 Need more disk space
 Programs are inflexible when compared to
other language programs.
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.
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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
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

FIT-Unit3 chapter2- Computer Languages

  • 2.
    Contents  Types ofProgramming 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 lettersare 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 matterhow 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.
  • 14.
    Working of anassembler
  • 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: highlevel 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 intomachine 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 isdefined 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.
  • 22.
    interpreter  It translatesa 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.
  • 24.
    linker  An applicationcontains 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 arepart 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  Itallocates 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 ofloader  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 highlevel languages  Readability  Machine independent  Easy debugging  Easier to maintain  Low development cost  Easy documentation
  • 30.
    Disadvantage of highlevel language  Poor control on hardware  Less efficient
  • 31.
    Four generation  Commonlyused 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: veryHLL  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 agood 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 codeshould 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 theapplication  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 languageshould 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 isconcerned 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 languageshould 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 concernbefore 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  Agood 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  Alanguage 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 hasto 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 languageshould 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 toother 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  Refersto 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 theextent 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