Principles of Programming Language: BITS Pilani
Principles of Programming Language: BITS Pilani
Programming Language
Amit Dua
BITS Pilani Computer Science and Information Systems Department
BITS, Pilani
Pilani Campus
Slides motivated by lectures from Prof C. Hota BITS Pilani, Pilani Campus
Course Motivation
• Scientific Applications
• Floating point arithmetic, Arrays and Matrices, loops and selection
• FORTRAN, ALGOL 60
• Business Applications
• Reports, Decimal numbers and Character data, Decimal arithmetic
• COBOl
• Artificial Intelligence
• Symbolic Computation mainly with names
• Linked list
• LISP, Prolog
• Scripting Languages
• Initially began with collection of commands in a file and then followed by control statements ,
functions etc.
• Java Script, PHP
Slides motivated by lectures from Prof C. Hota BITS Pilani, Pilani Campus
PPL as a Course
• What is not
– Do not teach you a programming language
– Do not teach you how to program
• What is
– Introduce fundamental concepts of programming languages
– Discuss design issues of various language constructs
– Examine design/implementation choices for these constructs
– Compare design alternatives
Slides motivated by lectures from Prof C. Hota BITS Pilani, Pilani Campus
Von Neumann Architecture
BITS Pilani,
PilaniPilani
CampusCampus
What makes a good Programming
language?
Slides motivated by lectures from Prof C. Hota BITS Pilani, Pilani Campus
Language evaluation criteria
Orthogonality
– A relatively small set of primitive constructs can be combined in a relatively small
number of ways
– The combination is legal.
– Too much orthogonality can also cause problems
Syntax considerations
– Identifier or keywords
– Special words and methods of forming compound statements
– Form and meaning: self-descriptive constructs, meaningful keywords
Expressivity
– A set of relatively convenient ways of specifying operations
– Example: the inclusion of for statement in many modern languages
BITS Pilani,
PilaniPilani
CampusCampus
Reliability
Type checking
– Testing for type errors, e.g. subprogram parameters
Exception handling
– Intercept run-time errors & take corrective measures
Aliasing
– Presence of two or more distinct references for the same memory location
CRITERIA
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Implementation Methods
• Compilation
• Programs are translated into machine language.
• Pure Interpretation
• Programs are interpreted by another program known
as an interpreter.
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Layered View of Computer
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
The Compilation
Process
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Compilation
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Additional Compilation
Terminologies
• Load module (executable image):
• the user and system code together.
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Compiled C
Source Linker
compiler .o
code and
files
in C loader
Machine
code (exe)
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Pure Interpretation
• No translation
Program interpreted by another program (interpreter) without translation
– Interpreter acts a simulator or virtual machine
– Machine is brought to the level of language by building higher level machine
called an interpreter that can run the language directly.
• Easier implementation of programs (run-time errors can easily and immediately be
displayed)
• Slower execution (10 to 100 times slower than compiled programs)
Decoding of higher level language programs is more complex, decoding has to be
done every time a statement is executed.
• Often requires more space
• Used in APL, SNOBOL, LISP.
• Now rare for traditional high-level languages
• Significant comeback with some Web scripting languages (e.g., JavaScript, PHP)
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Pure Interpretation Process
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Comparisons
• Interpretation is slower as decoding of higher level language programs is
more complex, decoding has to be done every time a statement is executed.
• Compiled languages have bias towards static properties since all compiling
decisions are made at translation time. Interpreted languages can deal with
dynamic properties.
• Interpretation is more flexible: due to direct running on the source code,
interpreter can allow to add features or correct errors in the source code.
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Hybrid Implementation Systems
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Hybrid
Implementation
Process
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Just-in-Time Implementation
Systems
• Initially translate programs to an intermediate language.
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Summary
BITS BITS
Pilani,Pilani,
Hyderabad
PilaniPilani
CampusCampus
Questions