Lecture 2: Schreme Available within the network will be functions and services to which you subscribe on a regular basis and others.

Download Report

Transcript Lecture 2: Schreme Available within the network will be functions and services to which you subscribe on a regular basis and others.

Lecture 2: Schreme

Available within the network will be functions and services to which you subscribe on a regular basis and others that you call for when you need them. In the former group will be investment guidance, tax counseling, selective dissemination of information in your field of specialization, announcement of cultural, sport, and entertainment events that fit your interests, etc. In the latter group will be dictionaries, encyclopedias, indexes, catalogues, editing programs, teaching programs, testing programs, programming systems, data bases, and – most important – communication, display, and modeling programs. All these will be – at some late date in the history of networking - systematized and coherent; you will be able to get along in one basic language up to the point at which you choose a specialized language for its power or terseness.

J. C. R. Licklider and Robert W. Taylor,

The Computer as a Communication Device

1968 CS655: Programming Languages University of Virginia Computer Science David Evans http://www.cs.virginia.edu/~evans

Menu

• Registration Survey Results – My Answers • Universal Languages • Stuff Languages are Made Of • Scheme • Infinitely many different functions 23 Jan 2001 CS 655: Lecture 2 2

Favorite Programming Languages

C C++ Java Perl 4 1 / 3 2 1 / 3 2 1 / 3 1 My answer: – For getting work done: C (with LCLint) – For reading other people’s code: CLU – For fun: FL, Scheme 23 Jan 2001 CS 655: Lecture 2 3

Most Hated PL

COBOL 2 Perl Java Lisp 2 (also favorite) 1 1 None My answer: 4 For asthetics, readability: APL For teaching intro CS courses: C++ For writing big systems: Lisp 23 Jan 2001 CS 655: Lecture 2 4

Experience of Students in this Class

C++ (38 years), C (36), BASIC (29), Pascal (21), various assemblies (12), Java (9), Perl (5), FORTRAN (4), Python (2½), Ada Lisp dialects (1½), COBOL (2), (1), Smalltalk (½) • • Algol60 direct successors = 106 Pre-Algol languages = 46 • Completely object-oriented languages = ½ – But O-O doesn’t really mean anything • Pure functional languages = 0 – Python is close (but has globals and state) 23 Jan 2001 CS 655: Lecture 2 5

Partner Preference

Assigned Randomly Choose Your Own 4 No Clear Preference 4 2 23 Jan 2001 CS 655: Lecture 2 6

Can class go over time?

No problem 10 Problem 0 One said, “but if I am bored and you keep me there I will be really annoyed and glare at you”.

23 Jan 2001 CS 655: Lecture 2 7

Technical Questions

• Used higher-order procedures: – No: 4 A little: 3 Yes: 3 • Wrote function that returned infinitely many possible different functions – No: 10 (some used tables of function pointers) • Fixed points: find

x

where f(

x

) =

x

– Gets really interesting when

x

is a function!

23 Jan 2001 CS 655: Lecture 2 8

Why taking this class?

23 Jan 2001 CS 655: Lecture 2 9

Next: Computability and Universal Programming Languages

23 Jan 2001 CS 655: Lecture 2 10

Computability

• A programming language is universal if it can express all computable functions.

• A function is “computable” if there exists an

algorithm

that computes it.

• An algorithm is a

computational procedure

that takes a

finite

number of steps.

• What’s a computational procedure?

23 Jan 2001 CS 655: Lecture 2 11

Turing Machine

Tape head can: - Read symbol from tape - Write symbol on tape - Move tape left or right one square - Change its own state (finite state machine)   Infinitely long tape 23 Jan 2001 CS 655: Lecture 2 12

Universal Turing Machine

• Universal Turing Machine is a Turing machine that can simulate any other Turing machine • Input (start state on tape) contains both a description of a Turing Machine (i.e., a program) and its input • Yes, there really are such things – Hopefully you will see it in CS660 23 Jan 2001 CS 655: Lecture 2 13

Computability

• A computational procedure is something that can be described by a Turing Machine • A language is universal if it can express: all algorithms = all finite computational procedures = all Turing machines = one Universal Turing Machine 23 Jan 2001 CS 655: Lecture 2 14

Not everything is computable

• Halting Problem – will a Turing Machine halt?

• Suppose we could compute it: (define (halts? P) ...) returns true if P halts, false otherwise.

23 Jan 2001 CS 655: Lecture 2 15

Based on Duane Boning, http://sicp.ai.mit.edu/Fall-1999/lectures/lec25/6001-12-9-99-computability.ppt

(define contradicts-halts (if (halts? contradict-halts) (loop-forever) #t)) If contradict-halts halts, it loops forever; If contradict halts doesn’t halt, value is true.

Yikes! halts? must not exisit!

Note: this is

not

a proof. (proof in 650) Perhaps it is

if

that doesn’t exist.

23 Jan 2001 CS 655: Lecture 2 16

Is a language universal?

• How can we prove a language is universal?

– Produce a program that implements a Universal Turing Machine in the language (usually this is pretty easy) • How can we prove a language is

not

universal?

Prove

that it cannot express the function of some Turing Machine 23 Jan 2001 CS 655: Lecture 2 17

Elements of Language

23 Jan 2001 CS 655: Lecture 2 18

Elements of Language

• (Almost?) All Languages have: – Primitives – Means of combination • English: – Primitives = words (?) • e.g., “Floccipoccinihilipilification” (the act of rendering useless) – Means of combination • e.g., Sentence = Subject Verb Object 23 Jan 2001 CS 655: Lecture 2 19

Means of Combination

• Allow us to say infinitely many things with a finite number of primitives – In English, words aren’t really primitives (linguists call the primitives

morphemes

– smallest units of meaning) – Means of Combination work on word parts: Antifloccipoccinihilipilification (the act of not rendering useless) Antifloccipoccinihilipilificationator (one who does the act of not rendering useless) 23 Jan 2001 CS 655: Lecture 2 20

Describing Means of Combination

• BNF (Backus Naur Form)

::=

Terminals are primitives in the language (don’t appear on left-hand side.) • Alternatives

::=

|

short for:

::=

::=

23 Jan 2001 CS 655: Lecture 2 21

BNF

• • John

B

ackus – FORTRAN (manual described syntax using verbose English, not a formal notation) – Member of Algol60 committee, introduced formal notation for syntax – Influential in development of functional languages: FP, FL, Turing Lecture

N

ormal  Peter

N

aur (Donald Knuth’s suggestion) – Chair of Algol60 committee 23 Jan 2001 CS 655: Lecture 2 22

BNF Example

Sentence

::=

NP VP NP

::=

Noun VP

::=

Verb Noun

::=

Dave

|

Scheme

Verb

::=

rocks

|

sucks

Could this language be a universal programming language?

23 Jan 2001 CS 655: Lecture 2 23

BNF Example

Sentence

::=

NP VP NP

::=

Noun

|

Noun and NP

VP

::=

Verb Noun

::=

Dave

|

Scheme

Verb

::=

rocks

|

sucks

We can express infinitely many things with a tiny language!

With the right meaning function, this could be a universal programming language.

23 Jan 2001 CS 655: Lecture 2 24

Scheme

23 Jan 2001 CS 655: Lecture 2 25

Scheme

• Like all (?) languages, Scheme has: – Primitives – Means of Combination • Also, like all (?) reasonable programming languages it has: – Means of Abstraction 23 Jan 2001 CS 655: Lecture 2 26

Mini-Scheme Primitives

• Numerals • Functions • Constants 0 + #f

Examples

655 3.52

#t -58 • You know what the primitives mean.

– Numeral  – Function  Number Function 655  + 

655

math addition 23 Jan 2001 CS 655: Lecture 2 27

Means of Combination

• Application

Expression

::= (Expression)

Expression

::= (Expression Expression)

Expression

::= (Expression Expression Expression)

...

Expression

::= (Expression*) (+ 655 58) (* (+ 0 (+ 2 2)) 6) “Evaluate all the expressions, then

apply

the first expression (a procedure) to all the other values.” 23 Jan 2001 CS 655: Lecture 2 28

Means of Combination

• Special Forms (if Expression

1 Expression 2 Expression 3

)

If the value of

Expression 1

is #f, the value of the if is the value of

Expression 3

. Otherwise, it is the value of

Expression 2

.

• A few others, but they are not necessary (note: neither is

if

!) 23 Jan 2001 CS 655: Lecture 2 29

Means of Combination

• Make Procedure

Expression

::= (lambda (Variable) Expression) “A procedure that when

applied

to

value

, evaluates to

Expression

of

Variable

with all instances substituted for by

value

.” Note: “substitution” is complicated.

23 Jan 2001 CS 655: Lecture 2 30

Mini-Scheme

Expression

::= (Expression*) | (lambda (Variable) Expression) | (if Expression

1 Expression 2 Expression 3

) |

numeral | #f | #t | +

Variable

::= identifier Is mini-scheme a Universal Programming Language?

23 Jan 2001

(Left as challenge problem.)

CS 655: Lecture 2 31

Means of Abstraction

(define

Variable Expression

) Substitute

Expression

for

Variable

.

(define two 2) (+ two two)

2 4

23 Jan 2001 CS 655: Lecture 2 32

Abstracting Procedures

(define square (lambda (x) (* x x)) (square two)

proc 4

(define (

Variable 1 Variable 2

)

Expression

) is just an abbreviation for: (define

Variable 1

(lambda (

Variable 2

)

Expression

) 23 Jan 2001 CS 655: Lecture 2 33

Multiple Arguments

(define (

Variable 1 Variable 2 Variable 3

)

Expression

) is just an abbreviation for: (define

Variable 1

(lambda (

Variable 2

) (lambda (

Variable 3

)

Expression

))) This is called “currying”.

23 Jan 2001 CS 655: Lecture 2 34

Currying

(define add (lambda (x) (lambda (y) (add 5) (+ x y))))

proc

((add 5) 2)

7

23 Jan 2001 CS 655: Lecture 2 35

add

add

is a procedure that returns infinitely many different procedures!

(define add (lambda (x) (lambda (y) (+ x y)))) 23 Jan 2001 CS 655: Lecture 2 36

triadd

(define triadd (lambda (x) (lambda (y) (lambda (z) (+ x y z))))) •

triadd

is a procedure that returns infinitely many different procedures, each of which is a procedure that returns infinitely many different procedures!

• So, after today your answer to survey question: “Yes, infinitely many!” 23 Jan 2001 CS 655: Lecture 2 37

Charge

• Problem Set 1 out today – Its not long but may be hard, start it soon – Question 0 think about: • Do we really need

define

?

• What scheme expressions do not have values?

• Next time: Higher-Order Functions, Intro to Metacircular Evaluators 23 Jan 2001 CS 655: Lecture 2 38