Transcript ppt

Programming Languages
CSCI-4430 & CSCI-6430,
Spring 2016
www.cs.rpi.edu/~milanova/csci4430/
Ana Milanova
Lally Hall 314, 518 276-6887
[email protected]
Office hours: Wednesdays Noon-2pm
Lecture Outline

Introduction


Art of programming language design
Programming language spectrum
Why study programming languages?

Overview of compilation

Read: Scott Chapter 1
2
Introduction

Course webpage
http://www.cs.rpi.edu/~milanova/csci4430
 Announcements – check regularly
 Schedule, Notes, Reading


Homework


Homework assignments posted there
Homework server


Schedule, lecture slides and assigned reading
Homework submission and grades
RPILMS

Discussion board and grades
Spring 16 CSCI 4430, A Milanova
3
Introduction

Required textbook


Programming Language Pragmatics, 3rd
Edition, by Michael Scott, Morgan Kaufmann,
2009
Recommended textbook

Compilers: Principles, Techniques, and
Tools, 2nd Edition, by A. Aho, M. Lam, R. Sethi
and J. Ullman, Addison Wesley, 2007 (as known
as “The Dragon Book”)
Spring 16 CSCI 4430, A Milanova
4
Introduction

Syllabus
www.cs.rpi.edu/~milanova/csci4430/syllabus.htm
Topics, outcomes, policies and grading




2 midterm exams and a final exam: 50%
9 homework assignments: 42%
10 quizzes: 8%
2% extra credit for attendance and
participation
Spring 16 CSCI 4430, A Milanova
5
Introduction

Homework is due at the beginning of lecture on
the due date



Submit written homework electronically in
Homework server AND on paper at the beginning
of lecture
Submit programming homework in Homework
server
No late days!

You may submit a late homework at the
beginning of next lecture for 50% credit
Spring 16 CSCI 4430, A Milanova
6
Introduction

Quizzes





10 in-class quizzes
Will cover material of previous week
Work in groups is encouraged
We will distribute quizzes at the beginning of
lecture
Keep and submit quiz at the end of class
Spring 16 CSCI 4430, A Milanova
7
Introduction

In-class exercises




At the end of class, I may give a simple problem
on the material we have just covered
Work in groups and ask questions
You can discuss or submit answers to receive
feedback
Participation in these exercises carries towards
2% extra credit
Spring 16 CSCI 4430, A Milanova
8
Introduction

Graduate students taking 6430 as part of the
PhD qualifying exam
To earn an A, you must earn 94% or more
AND
 Complete (satisfactorily!) a paper critique


Check syllabus
www.cs.rpi.edu/~milanova/csci4430/syllabus.htm
for details
Spring 16 CSCI 4430, A Milanova
9
Random Notes…



Prolog and Scheme programming
assignments must be be completed
individually
Java programming assignment must be
completed in teams of two using pairprogramming
Ask questions: in class, after class, email,
LMS
Spring 16 CSCI 4430, A Milanova
10
Academic Integrity




All written homework assignments must be
completed individually
Programming assignments, except for last
one, must be completed individually
Excessive similarities in homework and
exams! will be considered cheating
Incidents of cheating will be taken extremely
seriously and will result in penalties
Spring 16 CSCI 4430, A Milanova
11
How to Study

Read textbook chapter in advance of lecture


Read lecture notes and textbook chapter
(again) immediately after class




I will assign reading at the end of each class
I will post lecture notes short after class
Solve exercises in lecture notes
Form study groups
ASK QUESTIONS – in class, after class, etc.
Spring 16 CSCI 4430, A Milanova
12
Course Topics









Programming language syntax: Scanning and parsing
Programming language semantics: Attribute grammars
Naming, binding and scoping
Data abstraction and types
Control abstraction and parameter passing
Concurrency
A logic-oriented language: Prolog
A functional language: Scheme
Imperative languages


An object-oriented language: Java
A dynamic language: Python
Spring 16 CSCI 4430, A Milanova
13
Lecture Outline

Introduction to the course


The art of programming language design
The programming language spectrum
Why study programming languages

Overview of compilation

Spring 16 CSCI 4430, A Milanova
14
The Art of Language Design

Why are there so many languages?

Different programming domains

Business applications


Manufacturing/control systems


Reliability and non-stop operation
Scientific applications


Process data, reports, transactions, increasingly distributed
Computationally intensive
Personal preference…
Spring 16 CSCI 4430, A Milanova
15
The Art of Language Design

Some languages are more successful than
others

Expressive Power





Abstraction
Ease of use by novice
Excellent compilers
Powerful sponsors
Circumstances…
Spring 16 CSCI 4430, A Milanova
16
The Programming Language
Spectrum

Imperative languages




Von Neumann languages: Fortran, C,…
Object-oriented languages: Java, C++,
Smalltalk,…
Dynamic languages: Perl, Python, PHP,…
Declarative languages



Functional languages: Scheme/Lisp, ML, Haskell
Logic languages: Prolog
There are other declarative languages: e.g.,
dataflow languages
17
The Programming Language
Spectrum

Imperative languages



Evolved from the von Neumann Architecture
Variables
Assignment
Statements
Spring 16 CSCI 4430, A Milanova. Graph: Sebesta, 2005
18
The Programming Language
Spectrum

Imperative languages

j := i – j
“von Neumann bottleneck”:
tube connecting CPU and memory
lw t0,28(sp)
lw t1,24(sp)
subu t2,t0,t1
sw t2,24(sp)
Spring 16 CSCI 4430, A Milanova
19
The Programming Language
Spectrum

Imperative languages

Most widely popular programming style



FORTRAN, C, C++, C#, Java, Python, Visual BASIC,
Perl, JavaScript, Ruby, etc.
Variable and assignment statement are central
concepts
Program is a sequence of statements:
j := i – j;
k := j * l;
 Execution is a sequence of transitions on memory state
Spring 16 CSCI 4430, A Milanova
20
The Programming Language
Spectrum


FORTRAN was invented in mid-1950
John Backus, the inventor of FORTRAN,
wrote the following paper in 1979:
“Can programming be liberated from the von
Neumann style? A functional style and its
algebra of programs”

Problems with imperative languages



Difficult to understand programs
Difficult to reason about correctness of programs
Von Neumann Bottleneck
Spring 16 CSCI 4430, A Milanova
21
The Programming Language
Spectrum

Functional Programming

Main alternative to imperative programming

Lisp/Scheme, ML, Haskell
Program consists of function definitions + evaluation expr
(fun3 (fun2 (fun1 data)))
(fun3 (fun2 data2))
(fun3 data3)
data4



Execution is a sequence of function applications (i.e., reductions)
Logic Programming


Perform queries against knowledge base
Prolog, Datalog, SQL
Spring 16 CSCI 4430, A Milanova
22
An Example: Inner Product

Inner product in FORTRAN:
1. C := 0;
2. for I := 1 step 1 until N do
3. C := C + a[I]* b[I];

Illustrates state-transition semantics
Fall 16 CSCI 4430, A Milanova
23
An Example: Inner Product

Inner product in FP:
Function composition
Def IP = (Insert +) º (ApplyToAll *) º Transpose
IP <<1,2,3>,<6,5,4>> is
(Insert +) ((ApplyToAll *) (Transpose <<1,2,3>,<6,5,4>>))
(Insert +) ((ApplyToAll *) <<1,6>,<2,5>,<3,4>>)
(Insert +) <6,10,12>
28

Illustrates reduction (applicative) semantics
24
Why Study Programming Languages

Goal of the course: learn to analyze
programming languages

What are the questions we ask when facing a
new programming language

Helps learn new languages, choose the right
language for a problem, understand language
features, design better languages!
Spring 16 CSCI 4430, A Milanova
25
Lecture Outline

Introduction to the course


The art of language design
The programming language spectrum
Why study programming languages

Overview of compilation

Spring 16 CSCI 4430, A Milanova
26
Compilation and Interpretation

Compilation



Pure interpretation



A “high-level” program is translated into executable
machine code
Compiler
A program is translated and executed one statement at a
time
Interpreter
Hybrid interpretation


A program is “compiled” into intermediate code;
intermediate code is “interpreted”
Both a compiler and an interpreter
Spring 16 CSCI 4430, A Milanova
27
Compilation
COMPILER
character stream
Scanner (lexical analysis)
token stream
Parser (syntax analysis)
parse tree
Semantic analysis and
intermediate code generation
abstract syntax tree
and/or intermediate form
Machine-independent
code improvement
modified
intermediate form
Code Generation
target language
(assember)
Machine-dependent
code improvement
modified
target language
Spring 16 CSCI 4430, A Milanova
28
Compilation
position = initial + rate * 60;
Scanner
<id,1> <=> <id,2> <+> <id,3> <*> <60>
Symbol table
1. position, …
2. initial, …
3. rate, …
Parser
Semantic analysis and
intermediate code generation
Spring 16 CSCI 4430, A Milanova
29
Compilation
Semantic analysis and
intermediate code generation
=
<id,1>
+
<id,2>
Abstract Syntax Tree
*
<id,3>
inttoreal
60
tmp1 = inttoreal (60)
tmp2 = id3 * tmp1
tmp3 = id2 + tmp2
id1 = tmp3
Spring 16 CSCI 4430, A Milanova
Intermediate form
(three-address code)
30
Compilation
Machine-independent
code improvement
tmp1 = id3 * 60.0
id1 = id2 + tmp1
Improved
intermediate form
Code generation
movf id3, R2
mulf #60.0, R2
movf id2, R1
addf R2, R1
movf R1, id1
Target language
31
Pure Interpretation
e.g. BASIC
REM
COMMENT
LET X = 5
LET Y = 8
PRINT X
PRINT Y
LET Z = X
PRINT Z
...
Also JavaScript....
Spring 16 CSCI 4430, A Milanova
32
Hybrid Interpretation
09
99
19
09
99
19
09
99
AB
73
29
AB
73
29
AB
73
19
09
99
19
09
99
19
09
29
AB
73
29
AB
73
29
e.g. Java byte code
e.g. Java Virtual Machine (JVM)
Spring 16 CSCI 4430, A Milanova
Also Perl....
33
Compilation vs. Interpretation

A language can be implemented using a
compiler or using an interpreter


One can build a compiler for Lisp and one can
easily build an interpreter for C or Fortran
However, language features (determined
during language design) have tremendous
impact on “compilability” and the decision
“compiler vs. interpreter”
Spring 16 CSCI 4430, A Milanova
34
Compilation vs. Interpretation



What are the features that impact
“compilability”?
“Static” languages, i.e., languages that
perform most semantic checks
program execution, are suitable for
compilation
“Dynamic” languages, i.e., languages that
perform most semantic checks
execution, are suitable for interpretation
Spring 16 CSCI 4430, A Milanova
35
Compilation vs. Interpretation

Advantages of compilation?


Faster execution
Advantages of interpretation?

Greater flexibility

Sandboxing, source-level debugging, dynamic
semantic (type) checks, other dynamic features are
much easier
Spring 16 CSCI 4430, A Milanova
36
Compilation vs. Interpretation

New languages are increasingly dynamic


Hybrid implementations are common: compiler
from source to intermediate form, then a smart
interpreter (Virtual Machine) which does
interpretation and JIT (Just-in-Time) compilation
Tons of code written in static languages (C,
C++, Fortran)

Dynamic instrumentation tools (Valgrind, Pin,
DynamoRio) serve as “interpreters” for compiled
binaries
Spring 16 CSCI 4430, A Milanova
37
Next Class


We will review regular expressions and
context free grammars
Read Chapter 2.1 and 2.2 from Scott’s book
Spring 16 CSCI 4430, A Milanova
38
Spring 16 CSCI 4430, A Milanova
39