CSE 3302 Programming Languages nnnnotes Summer 2003 Dr

  • Slides: 29
Download presentation
CSE 3302 Programming Languages (n-n-n-notes) Summer 2003 Dr. Carter Tiernan CSE 3302 CSE@UTA Programming

CSE 3302 Programming Languages (n-n-n-notes) Summer 2003 Dr. Carter Tiernan CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 1 jcmt

Functional Programming • List Processing - LISP • Complex interrelationships among data • Recursion

Functional Programming • List Processing - LISP • Complex interrelationships among data • Recursion in conjunction with conditional expressions • Primitive list-handling subroutines • Applicative language CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 2 jcmt

LISP • John Mc. Carthy • Function applications – Prefix (Polish) notation : flexibility

LISP • John Mc. Carthy • Function applications – Prefix (Polish) notation : flexibility – Fully parenthesized : no precedence rules • Symbolic data – Lists of symbols called atoms – List is ONLY data structure in LISP CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 3 jcmt

Lists • S-expressions – Function applications are evaluated – Quoted lists are treated as

Lists • S-expressions – Function applications are evaluated – Quoted lists are treated as data • Programs and data represented the same way – Convenient for one program to generate and call for execution of another – Simple to write program manipulators CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 4 jcmt

LISP Execution • Usually interpreted and often interactive • Functions – Pure : compute

LISP Execution • Usually interpreted and often interactive • Functions – Pure : compute a value only • eq, plus, difference, etc. – Pseudo : have side effects on computer state • set, defun, etc. CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 5 jcmt

Data Structures • Constructor : list • Primitives : atoms – Numeric (integer and

Data Structures • Constructor : list • Primitives : atoms – Numeric (integer and floating point) • Many ops provided: arithmetic, increment, decrement, max, min, relational, predicates – Nonnumeric character strings • Limited ops: comparisons for equality • nil (false, empty set) • null is the test op CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 6 jcmt

Constructor • List – Surrounded by parentheses – Separated by blanks – Zero, one

Constructor • List – Surrounded by parentheses – Separated by blanks – Zero, one or more elements – Can contain lists – () equivalent to nil; called empty or null list CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 7 jcmt

Accessing Parts of a List • Car – Selects the first element of a

Accessing Parts of a List • Car – Selects the first element of a list • Cdr – Returns all of a list except its first element • Car and Cdr are selectors • Car and Cdr can be combined to access interior parts of a list: ex. caadr CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 8 jcmt

Building a list • Cons – Creates a list from a first element and

Building a list • Cons – Creates a list from a first element and a list – Is the inverse of car and cdr – Example: • (car ‘(to be or not)) = to • (cdr ‘(to be or not)) = (be or not) • (cons ‘to ‘(be or not)) = (to be or not) CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 9 jcmt

Info Representation • Property lists – (p 1 v 1 p 2 v 2

Info Representation • Property lists – (p 1 v 1 p 2 v 2 … pn vn) where pn is the nth property and vn is the value of that property – P-lists give flexibility – Easy to define a function to get properties CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 10 jcmt

Info Representation • Association lists – ((a 1 v 1) (a 2 v 2)

Info Representation • Association lists – ((a 1 v 1) (a 2 v 2) … (an vn)) – Handles properties which are flags or properties with multiple values CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 11 jcmt

Recursive list construction • Append two lists together – Identify simplest cases • (append

Recursive list construction • Append two lists together – Identify simplest cases • (append ‘() L) = L • (append L ‘()) = L – Reduce other cases to the simplest cases • (append L M) = (cons (car L) (append (cdr L) M) – (defun append (L M) (if (null L)) M (cons (car L) (append (cdr L) M) )) CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 12 jcmt

Atoms • Created by mentioning them • Have properties and relations (p-list) – Print

Atoms • Created by mentioning them • Have properties and relations (p-list) – Print name / pname – putprop adds a property to an atom – apval denotes the binding of an atom to a value – set binds an atom – symbol-plist shows property list of an atom CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 13 jcmt

List representation • Linked list • Cells in the list have a right and

List representation • Linked list • Cells in the list have a right and a left – Right part points to next cell in list – Left part points to value of the cell • Data and programs both represented the same way – Program linked list called an expression tree CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 14 jcmt

List Primitives • Efficient – Car returns a left part – Cdr returns a

List Primitives • Efficient – Car returns a left part – Cdr returns a right part – Cons requires storage allocation for new cell – Car, Cdr, and Cons do not change values • Sublists can be shared • Pseudo-functions alter lists – rplaca, rplacd – Have same drawbacks as aliasing CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 15 jcmt

Conditional expression • Cond – Mimics mathematical notation – Logical ops are defined in

Conditional expression • Cond – Mimics mathematical notation – Logical ops are defined in terms of the conditional • And & Or – Operands are evaluated sequentially – Conditional interpretation vs. strict CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 16 jcmt

Iteration • Performed by recursion • Reduction – Perform some op on every element

Iteration • Performed by recursion • Reduction – Perform some op on every element of a list – Uses a binary function to reduce a list to a single value • Mapping – Apply a function to every element of a list – Returns a list of the results • Filtering – Forms a sublist containing all elements that satisfy some property CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 17 jcmt

Functional arguments • • • Abstracting out pattern Mapcar Filter Reduce Suppress details Simplify

Functional arguments • • • Abstracting out pattern Mapcar Filter Reduce Suppress details Simplify combination CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 18 jcmt

Recursive Interpreters • Arranged by cases – Atoms • Numeric • Nonnumeric – Quote

Recursive Interpreters • Arranged by cases – Atoms • Numeric • Nonnumeric – Quote – Conditional – Functions CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 19 jcmt

Interpreters • Primitive ops performed explicitly • User-defined functions – Evaluate parameters – Bind

Interpreters • Primitive ops performed explicitly • User-defined functions – Evaluate parameters – Bind formals to actuals – Add bindings to environment – Evaluate function in environment CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 20 jcmt

Environment of evaluation • Arguments going to (apply f x a) (p. 380) –

Environment of evaluation • Arguments going to (apply f x a) (p. 380) – f the function - lambda expression – x the parameters - bound formals – a the environment - existing environment with the addition of the bound formals • Universal function CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 21 jcmt

Static scoping • Closure to indicate environment of definition function keyword – Instruction part

Static scoping • Closure to indicate environment of definition function keyword – Instruction part (ip) - program, lambda expr. – Environment part (ep) - definition environment • (closure ip ep) • User-defined functions can be – Dynamically scoped lambda expressions – Statically scoped function closures CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 22 jcmt

Incompatible scope rules • Options – Adopt uniform static scoping – Use default static

Incompatible scope rules • Options – Adopt uniform static scoping – Use default static scoping but allow “special” dynamic scoping CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 23 jcmt

Storage reclamation • Explicit erasure – Work for programmers – Security problems (dangling pointers)

Storage reclamation • Explicit erasure – Work for programmers – Security problems (dangling pointers) • Automatic reclamation – Reference counts – Garbage collection CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 24 jcmt

Reference counts • Accessible cells are referenced • Reference count keeps track of how

Reference counts • Accessible cells are referenced • Reference count keeps track of how many other cells reference the current one • Count must be incremented and decremented correctly • Cells with zero count are added to the free list CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 25 jcmt

Reference counts • Cycles defeat reference counts – Cyclic reference boosts the count of

Reference counts • Cycles defeat reference counts – Cyclic reference boosts the count of each member plus one member has an outside reference. – If outside reference goes away, cycle still has references internally but no access from anywhere else in program – Allowing cycles is an open issue CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 26 jcmt

Garbage Collection • When storage becomes low, system starts up garbage collection • Mark

Garbage Collection • When storage becomes low, system starts up garbage collection • Mark and sweep process – Starting at roots mark all cells that can be reached recursively moving from each cell to its children – When all are marked, sweep through memory from top, free unmarked cells and reset flags on marked cells CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 27 jcmt

Garbage Collection • Wreaks havoc on execution time • Non uniform and unpredictable •

Garbage Collection • Wreaks havoc on execution time • Non uniform and unpredictable • Approaches to more efficiency include – Continuous garbage collection – Parallel CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 28 jcmt

LISP • AI - represent and manipulate complex interrelationships among symbolic data • Suited

LISP • AI - represent and manipulate complex interrelationships among symbolic data • Suited to ill-specified problems • Easy to manipulate LISP programs in LISP CSE 3302 CSE@UTA Programming Languages Ch. 9 - 11 29 jcmt