Lectures 1-4
Lectures 1-4
Lavika Goel
Assistant Professor
Department of Computer Science and Engineering
Malaviya National Institute of Technology, Jaipur
• Objectives
• Course Logistics
• Course outline
Email: [email protected]
Pilani Campus
BITS Pilani, Hyderabad Campus
Course Motivation
Pilani Campus
BITS Pilani, Hyderabad Campus
Programming Domains
• 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
Pilani Campus
BITS Pilani, Hyderabad Campus
Programming Domains
• System Programming
• Deals with low level features
• UNIX
• Scripting Languages
• Initially began with collection of commands in a file and then followed by control
statements , functions etc.
Pilani Campus
BITS Pilani, Hyderabad Campus
PM 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
Pilani Campus
BITS Pilani, Hyderabad Campus
Course Logistics
Grading Policy
20%
Quiz
50% Midsem Examination
EndSem Examination
30%
Pilani Campus
BITS Pilani, Hyderabad Campus
Reference Books
Aho, Lam, Sethi and Ullman, "Compilers Principles, Techniques, and Tools".
Pearson Education. Low Price Edition. 2004
Pilani Campus
BITS Pilani, Hyderabad Campus
Course Outline
• Overview and motivation
• Imperative Programming:
Describing Syntax and Semantics
Names, Bindings, and Scopes
Data Types
Expressions and Assignment
Control Structures
Subprograms
• Object Oriented Programming: Abstract Data Types, Encapsulation,
Information Hiding.
• Functional and Logic Programming Languages
Pilani Campus
BITS Pilani, Hyderabad Campus
Course summary
• Principles are emphasized more than details.
• Methods are emphasized more than results.
• Semantics is emphasized more than syntax.
Pilani Campus
BITS Pilani, Hyderabad Campus
What is a programming language?
A language that is intended for the expression of computer
programs and that is capable of expressing any computer
program.
Pilani Campus
BITS Pilani, Hyderabad Campus
Programming Language
A programming language is an artificial language designed
to express computations or algorithms that can be
performed by a computer
A program is computer coding of
an algorithm that
– Takes input Input
– Performs some calculations on
the input
Program
– Generates output
Output
Pilani Campus
BITS Pilani, Hyderabad Campus
Who Needs Programming
Languages?
• Computers' native tongue is machine language
Pilani Campus
BITS Pilani, Hyderabad Campus
Von Neumann Architecture
Pilani Campus
BITS Pilani, Hyderabad Campus
The von Neumann
Architecture
Pilani Campus
BITS Pilani, Hyderabad Campus
Imperative Lang. & von
Neumann Architecture
• Imperative languages, most dominant, because of von
Neumann computers
• Data and programs stored in memory
• Memory is separate from CPU
• Instructions and data are piped from memory to CPU
• Basis for imperative languages
• Variables model memory cells
• Assignment statements model piping
• Iteration is efficient
Pilani Campus
BITS Pilani, Hyderabad Campus
The von Neumann Architecture
Pilani Campus
BITS Pilani, Hyderabad Campus
Language Categories
• Imperative
• Central features are variables, assignment statements, and
iteration
• Include languages that support object-oriented programming
• Include scripting languages
• Include the visual languages
• Examples: C, Java, Perl, JavaScript, Visual BASIC, .NET, C++
• Functional
• Main means of making computations is by applying functions to
given parameters
• Examples: LISP, Scheme
Pilani Campus
BITS Pilani, Hyderabad Campus
Language Categories
• Logic
• Rule-based (rules are specified in no particular order)
• Example: Prolog
Pilani Campus
BITS Pilani, Hyderabad Campus
Programming Paradigms
Imperative – action oriented, sequence of actions.
Functional - symbolic data processing.
Object-Oriented - classes of objects.
Logic - logic reasoning.
Pilani Campus
BITS Pilani, Hyderabad Campus
Imperative Programming
Pilani Campus
BITS Pilani, Hyderabad Campus
Functional Programming
• LISP (list processor): language designed for applications in artificial intelligence.
• Example of a List with 3 elements of which the third is a sublist-
(Shakespeare wrote (the tempest))
• Designed primarily for symbolic data processing.
• It has been used for symbolic calculations in differential and integral calculus,
mathematical logic, game playing, etc.
• Scheme: version of LISP popular for teaching and research due to its clean
design.
• Common LISP: is an advancement over proliferations of LISP i.e. MacLISP/
InterLISP. MacLISP emphasized performance and production quality while
InterLISP introduced the notion of a programming environment with a structured
editor tied to the syntax.
• CLOS is an object oriented extension, Common Lisp Object System.
• Other functional languages: ISWIM (not practically implemented), ML, Miranda,
Haskell
Pilani Campus
BITS Pilani, Hyderabad Campus
Object oriented Programming
Pilani Campus
BITS Pilani, Hyderabad Campus
Logic Programming
Pilani Campus
BITS Pilani, Hyderabad Campus
A short history of programming
Languages
1950s : LISP, FORTRAN
1960s : AlGOL 60, ISWIM, Simula
1970s : C, Pascal, Prolog, Smalltalk
During 1970 : a lot of PLs were designed.
1980s : C++, ML, Miranda, Haskell, CommonLISP
Pilani Campus
BITS Pilani, Hyderabad Campus
A short history of programming languages
(cont.)
Pilani Campus
BITS Pilani, Hyderabad Campus
A short history of programming languages
(cont.)
80s:
– Development of functional programming:
CommonLisp, ML, Haskell, Miranda
– Need for reliability and maintainability: Ada
– Object-oriented programming: Smalltalk, C++
90s:
– Fourth-generation languages
– Visual languages : Delphi
– Scripting languages : Perl
Pilani Campus
BITS Pilani, Hyderabad Campus
What Makes a Good PL?
Language evaluation criteria:
Readability: the ease with which programs can be read
and understood
Writability: the ease with which a language can be used to
create programs
Reliability: a program performs to its specifications under
all conditions
Cost
Pilani Campus
BITS Pilani, Hyderabad Campus
Language Evaluation Criteria
CRITERIA
Pilani Campus
BITS Pilani, Hyderabad Campus
Features Related to Readability
Overall simplicity: language is more readable if
– Fewer features and basic constructs
Readability problems occur whenever program’s author uses a subset different
from that familiar to reader
– Fewer feature multiplicity (i.e., doing the same operation with different ways)
– Minimal operator overloading
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
Pilani Campus
BITS Pilani, Hyderabad Campus
Features Related to Readability
Control statements
– Sufficient control statements for structured prog.
can read program from top to bottom w/o jump
Syntax considerations
– Identifier or keywords
– Special words and methods of forming compound statements
– Form and meaning: self-descriptive constructs, meaningful keywords
Pilani Campus
BITS Pilani, Hyderabad Campus
Writability
Simplicity and orthogonality
– But, too orthogonal may cause errors undetected
Expressivity
– A set of relatively convenient ways of specifying operations
– Example: the inclusion of for statement in many modern languages
Pilani Campus
BITS Pilani, Hyderabad Campus
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
Pilani Campus
BITS Pilani, Hyderabad Campus
Cost
Training programmers to use language
Writing programs (closeness to particular applications)
Compiling programs
Executing programs: run-time type checking
Language implementation system: availability of free
compilers
Reliability: poor reliability leads to high costs
Maintaining programs
Pilani Campus
BITS Pilani, Hyderabad Campus
Language Design Trade-Offs
Reliability vs. cost of execution
– e.g., Java demands all references to array elements be checked for proper
indexing but that leads to increased execution costs
Pilani Campus
BITS Pilani, Hyderabad Campus
Language Implementation
Compiler - source code translation into machine code (all at
once)
Interpreter - machine is brought up to the language (one
statement at a time)
Pilani Campus
BITS Pilani, Hyderabad Campus
Implementation Methods
• Compilation
• Programs are translated into machine language.
• Pure Interpretation
• Programs are interpreted by another program known
as an interpreter.
Pilani Campus
BITS Pilani, Hyderabad Campus
Layered View of Computer
Pilani Campus
BITS Pilani, Hyderabad Campus
The Compilation
Process
Pilani Campus
BITS Pilani, Hyderabad Campus
Compilation
Pilani Campus
BITS Pilani, Hyderabad Campus
Additional Compilation
Terminologies
• Load module (executable image):
• the user and system code together.
Pilani Campus
BITS Pilani, Hyderabad Campus
Compiled C
Source Linker
compiler .o
code and
files
in C loader
Machine
code (exe)
Pilani Campus
BITS Pilani, Hyderabad Campus
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)
Pilani Campus
BITS Pilani, Hyderabad Campus
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.
Pilani Campus
BITS Pilani, Hyderabad Campus
Hybrid Implementation Systems
Pilani Campus
BITS Pilani, Hyderabad Campus
Hybrid
Implementation
Process
Pilani Campus
BITS Pilani, Hyderabad Campus
Just-in-Time Implementation
Systems
• Initially translate programs to an intermediate language.
Pilani Campus
BITS Pilani, Hyderabad Campus
Summary
Pilani Campus
BITS Pilani, Hyderabad Campus