Top Banner
CS 314, LS,LTM: L1: Introduction 1 Principles of Principles of Programming Languages Programming Languages Topic: Introduction Professor Louis Steinberg
35

Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

Feb 14, 2018

Download

Documents

hamien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 1

Principles ofPrinciples ofProgramming LanguagesProgramming Languages

Topic: IntroductionProfessor Louis Steinberg

Page 2: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 2

ContactsContacts

• Prof. Louis Steinberg– lou @ cs.rutgers.edu– x5-3581– 401 Hill

• TA:– to be announced

• Class web sitehttp: //www.remus.rutgers/cs314/steinberg

Page 3: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 3

BooksBooks

• Kenneth Louden, “Programming Languages”• Kenneth Reek, “Pointers on C”• Kip Irvine, “C++ and Object-Oriented

Programming”• Clocksin & Mellish, “Programming in Prolog”

Page 4: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 4

WorkWork

• Midterm (Friday 3/5 2:50-4:10PM )• Final• 3 projects• Homework• In-lab programming test (?)

Page 5: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 5

TopicsTopics

• Introduction• Formal Languages - RE’s, BNF, context-free grammars,

parsing• Functional Programming (Scheme)• Names, Bindings, Memory management• Imperative Programming (C)• Parameter Passing• ADT’s, Object-oriented Design (C++)• Logic Programming (Prolog)• Types• Parallel Programming? Threads and monitors?

Page 6: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 6

Course GoalsCourse Goals

• To gain an understanding of the basic structure ofprogramming languages:– Data types, control structures, naming conventions,...

• To learn the principles underlying all programminglanguages:– So that it is easier to learn new languages

• To study different language paradigms:– Functional (Scheme), Imperative (C), Object-Oriented

(C++, Java), Logic (Prolog)– So that you can select an appropriate language for a task

Page 7: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 7

What is a programmingWhat is a programminglanguage?language?

“a language intended for use by a person to express a processby which a computer can solve a problem” -Hope andJipping

“a set of conventions for communicating an algorithm” - E.Horowitz

“ the art of programming is the art of organizing complexity” -Dijkstra, 1972

Page 8: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 8

AnthropomorphismAnthropomorphism

• Whenever a human term (e.g., ‘language’) is usedabout computers, ask:

• How analogous

• How differs

Page 9: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 10

Desiderata for PL DesignDesiderata for PL Design

• Readable– comments, names, (…) syntax

• Simple to learn– Orthogonal - small number of concepts combine

regularly and systematically (without exceptions)• Portable

– language standardization• Abstraction

– control and data structures that hide detail• Efficient

Page 10: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 11

Why learn more than one PL?Why learn more than one PL?

• So you can choose the right language for a givenproblem– If all you have is a hammer, every problem looks like a

nail

Page 11: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 12

Why learn more than one PL?Why learn more than one PL?

• So you can learn a new language more easily later– As your job changes, you may need to used different

languages– As our understanding of programming improves, new

languages are created• To learn new ways of thinking about problems

– Different languages encourage you to think aboutproblems in different ways

– “Paradigms”

Page 12: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 13

What is a ParadigmWhat is a Paradigm

• A way of looking at a problem and seeing aprogram– What kind of parts do you look for?

• Problem: Print a “large X” of size n.– E.g., size 5 is X X

X X X X X X X

Page 13: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 17

Imperative ParadigmImperative Paradigm

• A program is: A sequence of state-changing actions• Manipulate an abstract machine with:

– Variables that name memory locations– Arithmetic and logical operations– Reference, evaluate, assign operations– Explicit control flow statements

• Fits the Von Neumann architecture closely• Key operations: Assignment and “GoTo”

Page 14: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 18

Imperative ParadigmImperative Paradigm

Fortran

C

SUM = 0 DO 11 K=1,N SUM = SUM + 2*K11 CONTINUE

sum = 0;for (k = 1; k <= n; ++k) sum += 2*k;

sum := 0;for k := 1 to n do sum := sum + 2*k;

Pascal

Sum up twice eachnumber from 1 to N.

Page 15: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 19

Functional ParadigmFunctional Paradigm

• A program is: Composition of operations on data• Characteristics (in pure form):

– Name values, not memory locations– Value binding through parameter passing– Recursion rather than iteration

• Key operations: Function Application and FunctionAbstraction– Based on the Lambda Calculus

Page 16: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 20

Functional ParadigmFunctional Paradigm

(define (sum n) (if (= n 0) 0 (+ (* n 2) (sum (- n 1))) ))

(sum 4) evaluates to 20

Scheme

Page 17: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 21

Logic ParadigmLogic Paradigm

• A program is: Formal logical specification ofproblem

• Characteristics (in pure form):– Programs say what properties the solution must have, not

how to find it– Solutions are obtained through a specialized form of

theorem-proving• Key operations: Unification and NonDeterministic

Search– Based on First Order Predicate Logic

Page 18: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 22

Logic ParadigmLogic Paradigmsum(0,0).sum(N,S) :- N>0,

NN is N - 1, sum(NN, SS), S is N * 2 + SS.

?- sum(1,2).yes?- sum (2,4).no?-sum(20,S).S = 420?-sum (X,Y).X = 0 = Y

Prolog

Page 19: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 23

Object-Oriented ParadigmObject-Oriented Paradigm

• A program is: Communication between abstractobjects

• Characteristics:– “Objects” collect both the data and the operations– “Objects” provide data abstraction– Can be either imperative or functional (or logical)

• Key operation: Message Passing or MethodInvocation

Page 20: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 24

Object-oriented ParadigmObject-oriented Paradigmclass intSet : public Set{ public: intSet() { }//inherits Set add_element(), Set del_element()//from Set class, defined as a set of Objects

public int sum( ){ int s = 0; SetEnumeration e = new SetEnumeration(this); while (e.hasMoreElements()) do {s = s + ((Integer)e.nextElement()).intValue();} return s;}

}

Java

Page 21: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 25

TranslationTranslation

• Compilation: Program is translated from a high-level language into a form that is executable on anactual machine

• Interpretation: Program is translated and executedone statement at a time by a “virtual machine”

• Some PL systems are a mixture of these two– E.g., Java

Translator

Virtual Machine

Source Intermediate codeInput

Intermediate code Output

foo.java foo.classbytecodejavac

java (JVM)

Page 22: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 26

CompilationCompilation

scanner

parser

intermediatecode generator

optimizer

code generator

assembler

linker

Page 23: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 27

CompilationCompilation

scanner

parser

intermediatecode generator

position = initial + rate * 60;

id1 := id2 + id3 * 60optimizer

code generator

assembler

linker

Page 24: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 28

CompilationCompilation

scanner

parser

intermediatecode generator

symbol table(position, ...)(initial, …)(rate, …)

:= parse tree

id1 +

id2 *

id3 int-to-real

60tmp1 = inttoreal (60)tmp2 = id3 * tmp1tmp3 = id2 + tmp2id1 = tmp3

Page 25: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 29

CompilationCompilation

optimizer

code generator

assembler

linker

tmp2 = id3 * 60.0id1 = id2 + tmp2

movf id3, R2mulf #60.0, R2movf id2, R1addf R2, R1movf R1, id1 move R1, R-base, R-offset

movf R1, 45733

Page 26: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 30

History ofHistory of PLs PLs

• Prehistory– 300 B.C. Greece, Euclid invented the greatest common

divisor algorithm - oldest known algorithm– ~1820-1850 England, Charles Babbage invented two

mechanical computational devices• difference engine• analytical engine• Countess Ada Augusta of Lovelace, first computer programmer

– Precursors to modern machines• 1940’s United States, ENIAC developed to calculate trajectories

Page 27: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 31

History ofHistory of PLs PLs

• 1950’s United States, first high-level PLs invented– Fortran 1954-57, John Backus (IBM on 704) designed for

numerical scientific computation• fixed format for punched cards• implicit typing• only counting loops, if test versus zero• only numerical data• 1957 optimizing Fortran compiler translates into code as efficient

as hand-coded

Page 28: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 32

History ofHistory of PLs PLs

– Algol60 1958-60, designed by international committee fornumerical scientific computation [Fortran]

• block structure with lexical scope• free format, reserved words• while loops, recursion• explicit types• BNF developed for formal syntax definition

– Cobol 1959-60, designed by committee in US,manufacturers and DoD for business data processing

• records• focus on file handling• English-like syntax

Page 29: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 33

History ofHistory of PLs PLs

– APL 1956-60 Ken Iverson, (IBM on 360, Harvard)designed for array processing

• functional programming style– LISP 1956-62, John McCarthy (MIT on IBM704,

Stanford) designed for non-numerical computation• uniform notation for program and data• recursion as main control structure• garbage collection

– Snobol 1962-66, Farber, Griswold, Polansky (Bell Labs)designed for string processing

• powerful pattern matching

Page 30: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 34

History ofHistory of PLs PLs

– PL/I 1963-66, IBM designed for general purposecomputing [Fortran, Algol60, Cobol]

• user controlled exceptions• multi-tasking

– Simula67 1967, Dahl and Nygaard (Norway) designed asa simulation language [Algol60]

• data abstraction• inheritance of properties

– Algol68 1963-68, designed for general purpose computing[Algol60]

• orthogonal language design• interesting user defined types

Page 31: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 35

History ofHistory of PLs PLs

– Pascal 1969, N. Wirth(ETH) designed for teachingprogramming [Algol60]

• 1 pass compiler• call-by-value semantics

– Prolog 1972, Colmerauer and Kowalski designed forArtificial Intelligence applications

• theorem proving with unification as basic operation• logic programming

• Recent– C 1974, D. Ritchie (Bell Labs) designed for systems

programming• allows access to machine level within high-level PL• efficient code generated

Page 32: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 36

History ofHistory of PLs PLs

– Clu 1974-77, B. Liskov (MIT) designed for simulation[Simula]

• supports data abstraction and exceptions• precise algebraic language semantics• attempt to enable verification of programs

– Smalltalk mid-1970s, Alan Kay (Xerox Parc), consideredfirst real object-oriented PL, [Simula]

• encapsulation, inheritance• easy to prototype applications• hides details of underlying machine

– Scheme mid-1970s, Guy Steele, Gerald Sussman (MIT)• Static scoping and first-class functions

Page 33: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 37

History ofHistory of PLs PLs

– Concurrent Pascal 1976 Per Brinch Hansen (U Syracuse)designed for asynchronous concurrent processing[Pascal]

• monitors for safe data sharing– Modula 1977 N. Wirth (ETH), designed language for

large software development [Pascal]• to control interfaces between sets of procedures or modules• real-time programming

– Ada 1979, US DoD committee designed as generalpurpose PL

• explicit parallelism - rendezvous• exception handling and generics (packages)

Page 34: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 38

History ofHistory of PLs PLs

– C++ 1985, Bjorne Stroustrup (Bell Labs) general purpose• goal of type-safe object-oriented PL• compile-time type checking• templates

– Java ~1995, J. Gosling (SUN)• aimed at portability across platform through use of JVM -

abstract machine to implement the PL• aimed to fix some problems with previous OOPLs

¨ multiple inheritance¨ static and dynamic objects

• ubiquitous exceptions• thread objects

Page 35: Principles of Programming Languages - Computer Sciencelou/314-f04-slides/topic01_intro.post.pdf · Principles of Programming Languages Topic: Introduction Professor Louis Steinberg.

CS 314, LS,LTM: L1: Introduction 39

http://www.http://www.oreillyoreilly.com/pub/a/.com/pub/a/oreillyoreilly/news//news/languageposterlanguageposter_0504.html_0504.html