csc 434 programming languages fall 2001. why study p.l.’s? u broader point of view u employability...

68
CSC 434 Programming Languages Fall 2001

Upload: jonathan-carr

Post on 12-Jan-2016

213 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

CSC 434 Programming

Languages

Fall 2001

Page 2: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Why Study P.L.’s? Broader point of view Employability Pick appropriate P.L. for the job Design a new P.L. Use in implementing a P.L.

Page 3: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Programming Paradigms

Imperative Functional Logic Object oriented Distributed / parallel

Page 4: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Criteria for Evaluating Programming Languages

Expressive power Simplicity and orthogonality Implementation Error detection and correction Program correctness and standards

Page 5: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Expressive Power Writability

control structures

data structures

operators

modularity Readability

syntax !

maintenance

Page 6: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Simplicity and Orthogonality

Levels of precedence (15 in C) Not too many constructions, with all

combinations valid and no special cases

K++ ++K K += 1 K = K + 1

Page 7: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Implementation IssuesCost and Efficiency

Compiling

2 stages

faster execution Interpreting

1 stage

slower execution

Page 8: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

The Stages of Compiling

Source program

Lexical phase

Tokens

Syntax phase

Parse tree

Semantic phase

Object program

Page 9: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Error Detection and Correction

Type checking Pointer problems Array subscripts out of range Run-time exceptions

Page 10: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Correctness and Standards

BASIC versus Ada for standards Program structure Formal proofs (predicate calculus)

invariants

pre-conditions and post-conditions

Page 11: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Evolution of P.L.’s (1 of 2) Fortran – surprising success of 1st HLL Algol 60 – reasons it did not succeed, but

enormous influence, BNF COBOL – data processing, influence of DOD PL/1 – synthesis of Fortran and COBOL Basic – original simplicity, time-sharing, lack

of a standard

Page 12: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Evolution of P.L.’s (2 of 2) Pascal – for teaching CS concepts, influence

of strong typing C – for systems programming, weak typing Ada – influence of DOD, rigorous standard Modula-2 – simpler alternative to Ada Others – Lisp, Prolog, C++, Java, …

See Appendix 1, pp. 329-345

Page 13: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Syntax and Semantics of P.L.’sBackus Normal Form (BNF) Syntax versus semantics BNF is a meta-language, first used for

Algol 60 A grammar G defines a language L(G) The grammar G can be used:

to generate a valid sentence in L(G)to recognize if a given sentence is valid

according to the rules of G

Page 14: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Elements of BNF Syntax

Consists of rules, or productions ::= means ‘is defined to be’ | means ‘or’ Identifiers within ‘< >’ are syntactic

categories, or non-terminal symbols Other symbols are terminal symbols

that represent themselves literally

Page 15: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Example of a BNF Grammar

<exp> ::= <exp> + <term>

| <exp> - <term>

| <term>

<term> ::= <term> * <factor>

| <term> / <factor>

| <factor>

<factor> ::= ( <exp> ) | <identifier>

Page 16: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Other Features of Syntax Ambiguous grammars – the dangling else EBNF uses [ ] for optional items and { } for

zero or more repetitions<integer> ::= [+|-] <unsigned integer>

<identifier> ::= <letter> { <letter> | <digit> } Syntax diagrams a graphical form of EBNF

Page 17: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Semantics of P.L.’s – Harder! Operational Semantics – uses a virtual

machine Denotational Semantics – manipulates

mathematical objects Axiomatic Semantics – uses predicate

calculus to prove properties of program statements

Page 18: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Miscellaneous P.L. Syntax Special words in a P.L.

keywords – meaning varies with context

reserved words – meaning is fixed Use of blanks (Fortran example) Comments

/* … */

// … Case sensitivity – why it might be avoided

Page 19: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Block Structure Nested functions / procedures Scope of variables (inside out)

local variables non-local variables global variables

Storage categories (lifetime) static storage automatic storage dynamic storage

Page 20: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Bindings Binding name to its declaration – scope Binding declaration to its reference – lifetime Binding reference to its value – assignment

When do bindings occur?

compile time? load time? run time? own variables in Algol 60, static in C

Finding value, given address is dereferencing

Page 21: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Static Scope and Dynamic Scope

In static scope a procedure is called in the environment of its definition – can be determined at compile time.

In dynamic scope a procedure is called in the environment of its caller – must be determined at run time.

Hazards of dynamic scope.

Page 22: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Static Scope and Dynamic ScopePROGRAM Dynamic (input, output); VAR x: integer; PROCEDURE a; BEGIN … write (x); … END; PROCEDURE b; VAR x: real; BEGIN … x := 2.0; … a; … END; BEGIN … x := 1; … b; … a; … END.

Page 23: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Binding the Type

Strong typing (static) is good – catch errors at compile time – Pascal, Ada

Implicit typing – e.g., first letter of variable name in Fortran, $ suffix in Basic, …

Type inferencing – type determined at run time, can change during execution – APL

Page 24: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Simple Data Types Primitive Data Types (portability ??)

boolean (not in C)

integers

reals

complex (in Fortran) Enumerated Types

day = (Sun, Mon, Tues, Wed, Thurs, Fri, Sat); Subrange Types

work = Mon .. Fri;

Page 25: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Pointer VariablesTYPE integerpt = ^integer;VAR p: integer; pipoint, another: integerpt;

new (pipoint); pipoint^ := 17; another := pipoint;

Another is now an alias for pipoint. If we deallocate using pipoint, the memory block is gone, but another still refers to it – a dangling reference – a severe source of runtime errors.

Page 26: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Data Structures Arrays Records Sets Strings Dynamic – using pointers

lists stacks queues trees graphs

Page 27: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Arrays

Index type and base type Array storage allocation – the dope vector Array sizes – static, semi-dynamic, dynamic Cross-sections or slices Equivalence

structural equivalence name equivalence

Page 28: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Name/Structural Equivalence

TYPE first = ARRAY [1..10] OF integer; second = ARRAY [1..10] OF integer;

VAR a: first; b: second; c: ARRAY [1..10] OF integer; d,e: ARRAY [1..10] OF integer; f: first;

Page 29: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Records Arrays use indexing – A[j,k] – homogeneous elements Records use qualification – R.field – heterogeneous fields Arrays with records as elements Records with arrays as fields Variant records – conserve memory

a fixed part a tag field, or discriminant a variant part but variant part may not correspond to tag!

Page 30: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Records – An Example TYPE spouse = RECORD name: ARRAY [1..10] OF CHAR; age: INTEGER; END; employee = RECORD name: ARRAY [1..20] OF CHAR; bday: ARRAY [1..3] OF INTEGER; wage: real; status: char; spice = ARRAY [1..n] OF spouse; END;

Page 31: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Records – Another Example TYPE shape = (circle, triangle, rectangle); colors = (red, green, blue); figure = RECORD filled: boolean; color: colors; CASE form: shape OF circle: (diameter: real); triangle: (leftside: integer; riteside: integer; angle: real); rectangle: (side1: integer; side2: integer); END; VAR myfigure: figure;

Page 32: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Sets & Strings Set representations

the characteristic vector union / intersection via OR / AND

String representations terminal characters fixed-length strings varying-length strings count-delimited strings indexed list of strings linked list strings

Page 33: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Evaluating Expressions Overloading of operators

Short circuit evaluation

Type conversions mixed mode arithmetic assignment coercion of parameters casts

Page 34: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Control Structures Sequential Processing

do A, then B, then C, … Conditional Processing (branching or

selection) if A is true, then do B, else do C Iterative Processing (looping or repetition)

while A is true, do B {and test A again}

Exceptions

Page 35: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Issues with Iteration

Is lcv a floating point variable? Is lcv declared explicitly or implicitly? What is value of lcv when loop terminates? When is termination test done? Can lcv be changed inside the loop? Can the loop be exited from the middle?

Page 36: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Structuring Programs Procedures, functions, subroutines, … Formal versus actual parameters Named parameters Default parameters Overloading of function names – signatures Independent versus separate compilation

Page 37: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Parameter Passing Principal methods

call by value

call by value-result

call by reference

call by name Complications with aliasing

Page 38: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Parameter PassingVAR element: integer; a: ARRAY [1..2] OF integer;

PROCEDURE whichmode (x: ? MODE integer) BEGIN a[1] := 6; element := 2; x := x + 3; END;

BEGIN a[1] := 1; a[2] := 2; element := 1; whichmode (a[element]); …

Page 39: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Elements of OOP Encapsulation – information hiding,

as with ADT’s – modules, packages, classes, …

Inheritance Polymorphism – as with overloading Dynamic binding – method call can

invoke different actual methods, determined at run time

Page 40: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Java Abstract Classes An abstract method is one that has a

header but no body, so cannot be implemented.

An abstract class is one in which one or more of the methods are abstract.

Page 41: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Java Interfaces Multiple inheritance would be desirable, as

provided in C++, but has significant problems. Instead Java provides interfaces. An interface

contains just constants and abstract methods. Since they are all abstract, they are not labeled as such.

A class can then inherit from a parent class, and also implement several interfaces. To do so, the class must provide bodies for each of the abstract methods in the interfaces.

Page 42: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Java Exceptions Throwable objects include:

– errors, from which there is no recovery– unchecked exceptions, such as for

arithmetical errors, which need not be (but can be!) caught and dealt with

– checked exceptions, which must be caught, even if no action is provided

Code that may cause one or more exceptions is placed in a try block.

Code for dealing with exceptions is placed in catch blocks.

Page 43: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Parallel Architectures Single Instruction, Multiple Data (SIMD) Multiple Instruction, Multiple Data

(MIMD) via shared memory Multiple Instruction, Multiple Data

(MIMD) via message passing

Each of these must deal with the issue of coordinating the parallel activities.

Page 44: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Problems of Parallelism Non-determinism Deadlock Starvation Fairness Termination Load Balancing

Page 45: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Solving the Preceding Problems

Semaphores are low-level, using flags set by the user – easy to use improperly.

Monitors are procedures that take on all of the responsibility of assigning critical resources to other processes, in response to their requests.

Rendezvous is the use of message passing to coordinate the allocation of resources and tasks to be performed.

Both monitors and rendezvous were invented by Tony Hoare!

Page 46: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Java Threads (1 of 3) Java provides concurrency, which may or

not be true parallelism on multiple CPU’s, via threads.

Threads can be in several states: created, running, suspended, stopped, …

Once a thread is created, one must explicitly start it; it will then perform the functionality of its run method.

Threads can be created either by extending the thread class, or by implementing the runnable interface.

Page 47: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Java Threads (2 of 3) Java restricts access by competing

threads to critical regions of code via the synchronized reserved word.

When a method of a Java object is synchronized, the object becomes a monitor.

When an object is a monitor in Java, then when a thread T is using one of the monitor’s synchronized methods, no other thread can use any of the monitor’s synchronized methods until T relinquishes the monitor.

Page 48: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Java Threads (3 of 3) Synchronization is still not adequate

to coordinate the activities of threads. It just prevents threads from stepping on each other.

To provide coordination, one must use wait( ) and notify( ), as with the Producer-Consumer problem.

Page 49: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Dijkstra’s Guarded IFif

expr1 -> stmt1

[ ]

expr2 -> stmt2

[ ]

[ ]

exprn -> stmtn

fi

Page 50: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Dijkstra’s Guarded DOdo

expr1 -> stmt1

[ ]

expr2 -> stmt2

[ ]

[ ]

exprn -> stmtn

od

Page 51: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

The Run-Time Stack As one subprogram calls another, a run-time stack is

used to keep track of all the necessary information in a LIFO manner.

The run-time stack contains activation records, and these are linked by both static and dynamic chains.

The static chain enables a subprogram to find non-local variables according to the static scoping of subprograms.

The dynamic chain provides for appropriate return from one subprogram to its caller. Also, in the case of dynamic scoping, the system must dynamically search the records in the chain for the first occurrence of non-locals.

Page 52: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Functional Languages

With imperative languages, one must know the entire state of the system, as determined by assignments to memory locations.

With functional languages, there are no assignments, just the return of function values, so there is no need to reason about the system state to be sure of the result of a computation.– no side effects– referential transparency (always same results)

Page 53: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Lisp and its Variants Invented by McCarthy at MIT ~ 1960 Early versions

– MACLISP– InterLisp– Franz Lisp– …

Now Common Lisp Also Scheme and ML

Page 54: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Basics of Lists and Lisp (1 of 2)

A List is a finite sequence (possibly empty) of elements, each of which is either an atom or a List.

The first element of a List L is (car L). The remaining elements of a List L are (cdr L). Example L = ((A B) C ((D)))

(car L) = (A B)(cdr L) = (C ((D)))

We can represent Lists by diagrams in two ways that reflect its original implementation on a 36-bit machine.

Page 55: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Basics of Lists and Lisp (2 of 2) In our diagrams,

(car L) is always either an atom or a List (cdr L) is always a List, possibly empty

Data and functions in Lisp are Lists! For a function, the first element is the function name, and the remaining elements are the arguments.

cons is used to put Lists together. Thus (cons x y) returns a List z such that (car z) is x and (cdr z) is y. Note that y must be a List!

Page 56: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Evaluation in Lisp Lisp always evaluates List elements. But evaluation is suppressed by ‘ or

quote, and by the special function setq. (setq x y) evaluates y and assigns its value

to the unevaluated argument x. So Lisp is NOT purely functional! On the other hand eval forces evaluation.

(setq x ‘(+ 2 3 4)) x is (+ 2 3 4) (eval x) is 9

Page 57: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Lisp: list & append list takes any number of arguments, and

builds a List containing each actual argument as an element

append takes any number of arguments (they must be Lists), and builds a List stringing together their elements

examples

(list ‘(a) ‘(b (c))) is ((a) (b (c)))

(append ‘(a) ‘(b (c))) is (a b (c))

Page 58: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Lisp: and & or (and ( ) ( ) …) returns nil as soon as any

argument evaluates to nil, else the value of the last argument

(or ( ) ( ) …) returns value of the first argument that evaluates to non-nil, else returns nil

Note the short-circuit evaluation

Page 59: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Lisp: defun

(defun fn (v1 v2 … vn)(exp))

Lisp does not evaluate the List elements. Rather it stores away an association of the function name fn with the parameters v1 …. vn and the Lisp expression exp. This association is consulted whenever fn is invoked.

Page 60: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Lisp: cond

(cond (pred1 exp1)

(pred2 exp2) …

(predn expn))

Lisp evaluates each predj in turn. For the first one that is true, it returns with the value of the corresponding expj. If none of the predj are true, cond returns nil.

Page 61: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

member versus ismember

(member e L) returns nil if e not in L, else returns L from point of first match

(defun ismember (e L)

(cond ((null L) nil)

((equal e (car L)) t)

(t (ismember e (cdr L))) ))

Page 62: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

apply, funcall, & mapcar

(apply fn list) applies fn to list, returning a value (apply ‘cons ‘(a (b c))) yields (a b c)

funcall is like apply, except that the arguments to fn are not in a list (funcall ‘cons ‘a ‘(b c)) yields (a b c)

(mapcar fn list) applies fn to each element of list, returning a new list (mapcar ‘square ‘(2 3 4 5)) yields (4 9 16 25)

Page 63: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

PROLOG PROgramming in LOGic About relationships among objects A non-procedural language Extremely simple syntax Historical origins

Univ. of Marseille

Japanese 5th generation initiative

Univ. of Edinburgh

Page 64: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Prolog Facts Relationship or predicate first Objects in parentheses, comma between Period at end Example:

female (alice).female (marsha).male (peter).mother (marsha, peter).mother (marsha, alice).

Page 65: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Variables and Queries Variables are capitalized To match query to clause in database, must have

same predicate with same arity Instantiation of variables with goal of satisfying a

query Uninstantiation and backtracking Anonymous variable Closed world assumption Reversible satisfaction

Page 66: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Prolog Rules and Conjunction Conclusion in head (one predicate) Requirements in body (zero or more predicates) :- between conclusion and requirements Period at end

happy (billy) :- day (christmas).

good (Date) :- tall (Date), rich (Date).

Page 67: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

Instantiation and Backtrackingmarried (ben, ann).mother (ann, sue).mother (ann, tom).father (Man, Child) :- married (Man, Woman),

mother (Woman, Child).parent (Person, Child) :- mother (Person, Child).parent (Person, Child) :- father (Person, Child).

?- father (ben, Whom).?- parent (Who, sue).

Page 68: CSC 434 Programming Languages Fall 2001. Why Study P.L.’s? u Broader point of view u Employability u Pick appropriate P.L. for the job u Design a new

More Prolog Recursion in Prolog

ancestor (A,D) :- parent (A,D).ancestor (A,D) :- parent (A,X), ancestor (X,D).

Watch out for left recursion! Prolog is good for:

working with databasessolving logic problemsprocessing natural language (Eliza)