Top Banner
QuickT TIFF (Un are need CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones
35

CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Jan 11, 2016

Download

Documents

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: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

CS 403: Programming Languages

Lecture 17

Fall 2003

Department of Computer Science

University of Alabama

Joel Jones

Page 2: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 2

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Overview

Announcements Story Hour, Houser 108, 3PM Friday:

Software Security and Exploits

Page 3: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 3

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

PHPEric Mitchell What is PHP?

Originally named: Personal Home Page Tools Now stands for: PHP: Hypertext Preprocessor Open-source, server-side, HTML-embedded Web

scripting Serves as a “glue” language, making connecting

your Web pages to server-side database

Page 4: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 4

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Why learn PHP Free, open-source, full-featured, stable, fast, cross-

platform, easy to learn, plays well with others Official module of Apache HTTP Server, runs about

55% of WWW Isn’t tag-based like ColdFusion, it’s a real programming

language Popular and Growing

Page 5: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Say no to LSD, and say yes to PHP

Joshua Chappelle

Page 6: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 6

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Mainstream uses of PHP

Server side scripting Client side GUIs Command line scripting for simple text

processing

Page 7: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 7

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Is PHP Portable? Linux and many Unix variants Microsoft Windows Mac OS X RISC OS Apache, Microsoft IIS, Personal Web Server,

Netscape and IPlanet Servers, Oreilly Website Pro Server, Caudium, Xitami, OmniHTTPd and other web servers

Page 8: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 8

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Does it have DB support?

IBM DB2 Oracle (OCI7 and OCI8) ODBC Informix MySQL Sybase Unix dbm and many others

Page 9: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

PythonSeth Copeland

• An object-oriented scripting language

• Python is interpreted, not compiled

• It is portable across many platforms

• (UNIX, Windows, OS/2, Amiga, etc.)

• Its interpreter can be used interactively

Seth Copeland

Page 10: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 10

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Python

• Designed for close integration with C

• Supports embedding in C and data import/export to dynamically

loaded C libraries.

• Block structure is controlled by indentation

Seth Copeland

Page 11: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 11

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Python• Slowest and least efficient of the major scripting languages

Cannot compete in raw execution speed Exhibits runtime type polymorphism

Python is best used with medium sized, speed independent projects. It encourages (and even forces) you to produce clean, readable code and

its environment can run interactively. It can be integrated with C code and is cross-platform over many environments.

Seth Copeland

Page 12: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 12

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

PHP: Hypertext PreprocessorDaniel Pritchett Server-side Web scripting language used by many sites to

serve dynamic content Tightly integrated with MySQL, supports other databases as

well Most popular module on most popular web server (Apache –

check www.netcraft.com for statistics) Loosely typed C-style syntax can allow for rapid learning and

implementation for a C/Java coder Linux, Apache, PHP, and MySQL combine to form a popular

free web service suite Detractors say that loose types and weak object model can

limit scalability.

Page 13: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Login form for “Popper” web-based POP3 Mail client - http://www.ractive.ch/gpl/download/popper.tar. gz

<?php global $poppercookie;?>

<center><h2>Popper Login</h2>

<form method="post" action="<?php echo("$GLOBALS[PHP_SELF]");?>"><table cellpadding="5">

<tr><td><?php echo($strings["l_LoginName"]);?>:</td><td><input type="text" name="name" value="<?php echo($poppercookie["user"]);?

>"><br></td></tr><tr>

<td><?php echo($strings["l_Pwd"]);?>:</td><td><input type="password" name="pwd"></td>

</tr></table><input type="checkbox" name="set_cookie"<?php

if ($poppercookie["user"]) {echo(" checked");

}?>> <?php echo($strings["l_Remember"]."<br><br>");if ($status_msg == $strings["l_PwdWrong"]) {

echo("<a href=\"$GLOBALS[PHP_SELF]?action=lostpwd\" style=\"color: blue;\">$strings[l_LostPwd]</a><br><br>");}?><input class="button" type="submit" name="login" value="<?php echo($strings["l_Login"]);?>">

</form></center>

Page 14: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Welcome to the World of Python

Ishmael Rudolph

CS 403-001

October 24, 2003

Page 15: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 15

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

What is Python?

Python is a free, open-source scripting language.

It is mainly used in Web applications, primarily to handle CGI scripting tasks.

It is also powerful enough to interact with C++ and Java software components, able to combine large applications.

Page 16: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 16

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Native Data Types

Numbers (includes integer, float, etc.) String (typical implementation) List (mutable list of objects) Tuple (immutable list of objects) Dictionary (index-referenced object list)

Page 17: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

The Glade Minilanguage

A GTK+ User Interface Builder

By Robert Reach

Page 18: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 18

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Glade Development Glade is an interface builder for the open-source GTK toolkit library for X. Glade allows you to develop a GUI interface by interactively picking,

placing, and modifying widgets on an interface panel. The GUI editor produces an XML file describing the interface; this, in turn,

can be fed to one of several code generators that will actually grind out C, C++, Python or Perl code for the interface.

The generated code then calls functions you write to supply behavior to the interface.

Glade possesses the transparency and simplicity indicative of a good minilanguage.

Page 19: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 19

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Pros and Cons Pros

o The advantage of Glade is that it specializes in code generation.o This makes it possible to program without so much worry about bugs that you

could possibly have from hand coding.o It also saves a lot of time.

Conso Because Glade uses XML, it is extremely verbose and consequently it is

difficult to have a "small" program that does something useful.

o Links: Screenshot Example Program (a port scanner)

Page 20: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 20

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Objectives

What is logic, specifically, first order logic How logic programming is related to first

order logic How Prolog embodies logic programming Introduction to using Prolog

Page 21: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 21

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Prolog PROgramming in LOGic Algorithm = Logic + Control Logic = relation R(I,O) between input I and output O Control = method of searching for O that satisfies

R(I,O), given input I E.g. Find X and Y such that

3*X+2*Y=1X-Y=4

E.g. find array B such thatelements in B are the same as those in Aelements of B are in non-descending order

Page 22: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 22

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

What is Prolog Prolog is a ‘typeless’ language with a very

simple syntax. Prolog is declarative: you describe the

relationship between input and output, not how to construct the output from the input (“specify what you want, not how to compute it”)

Prolog uses a subset of first-order logic

Page 23: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 23

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Classical First-Order Logic simplest form of logical statements is an atomic

formula. e.g.man(tom)woman(mary)married(tom,mary)

More complex formulas can be built up using logical connectives:

, , , , X, X

Pair Up:

• Define each of these symbols

Page 24: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 24

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Examples of First Order Logic

smart(tom) dumb(tom)smart(tom) tall(tom) dumb(tom) X married(tom,X) X loves(tom,X) X [married(tom,X) female(X) human(X)]rich(tom) smart(tom) X mother(john,X) X Y [mother(john,X) mother(john,Y)

Y=X]Note: A B B A

Page 25: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 25

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Logic programming is based on formulas called Horn rules. These have the form

Examples: X,Y[A(X) B(X,Y) C(Y)] X[A(X) B(X)] X[A(X,d) B(X,e)] A(c,d) B(d,e) X A(X) X A(X,d) A(c,d)

]B...BB[A x,..., j21k1 ∧∧∧←∀x

Horn Rules

Page 26: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 26

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Horn Rules (cont.)

• Note that atomic formulas are also Horn rules, often called facts.

• A set of Horn rules is called a Logic Program.

Page 27: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 27

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Logical Inference with Horn Rules• Logic programming is based on a simple idea:

From rules and facts, derive more facts.• Example 1. Given the facts and rules:

• 1. A• 2. B• 3. C• 4. E A B• 5. F C E• 6. G E F

• From 1, derive E; from 2, derive F; from 3, derive G.

Page 28: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 28

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Logical Inference Example 2: Given these facts:

man(plato)man(socrates)

and this rule:

X [mortal(X) man(X)]derive:

mortal(plato), mortal(socrates).

Page 29: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 29

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Recursive Inference Example, given (1) X[mortal(son_of(X)) mortal(X)] (2) mortal(plato) derive: mortal(son_of(plato)) (using X=plato) mortal(son_of(son_of(plato))) (using X=son_of(plato)) mortal(son_of(son_of(son_of(plato)))) (using X=son_of(son_of(plato)))

Page 30: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 30

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Prolog Notation A rule: X [p(X) (q(X) r(X))] is written as p(X) q(X), r(X). Prolog conventions:

variables begin with upper case (A, B, X, Y, Big, Small, ACE) constants begin with lower case (a, b, x, y, plato, aristotle)

Query = list of facts with variables, e.g. mortal(X) sorted([5,3,4,9,2], X) sonOf(martha,S), sonOf(george,S)

Prolog program = facts+rules+query

Page 31: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 31

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Prolog Syntax < fact > < term > . < rule > < term > :- < terms > . < query > < terms > .

< term > < number > | < atom > | <variable>

| < atom > ( < terms > )

< terms > < term > | < term > , < terms >

Page 32: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 32

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Constructors like student and “.” are called functors in Prolog

Constructors like student and “.” are called functors in Prolog

Syntax Integers Atoms: user defined, supplied

name starts with lower case: john, student2 Variables

begin with upper case: Who, X ‘_’ can be used in place of variable name

Structures student(ali, freshman, 194).

Lists [x, y, Z ] [ Head | Tail ]

• syntactic sugar for . ( Head, Tail ) [ ]

Page 33: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 33

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Prolog Introduction /* list of facts in prolog, stored in an ascii file,

‘family.pl’*/ mother(mary, ann). mother(mary, joe). mother(sue, mary).

father(mike, ann). father(mike, joe).

grandparent(sue, ann).

Page 34: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Lecture 17 34

QuickTime™ and aTIFF (Uncompressed) decompressorare needed to see this picture.

Prolog Introduction (cont.) /* reading the facts from a file */ ?- consult ( family). %family compiled, 0.00 sec, 828 bytes

Comments are either bound by “/*”,”*/” or any characters following the “%”.

Structures are just relationships. There are no inputs or outputs for the variables of the structures.

The swipl documentation of the built-in predicates does indicate how the variables should be used. pred(+var1, -var2, +var3).

• + indicates input variable• - indicates output variable

Page 35: CS 403: Programming Languages Lecture 17 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

/* Prolog the order of the facts and rules is the order it is searched in *//* Variation from pure logic model */

2 ?- father( X, Y ).

X = mike /* italics represents computer output */Y = ann ; /* I type ‘;’ to continue searching the data base */

X = mikeY = joe ;

no

3 ?- father( X, joe).

X = mike ;

no