Presentation is loading. Please wait.

Presentation is loading. Please wait.

6 Feb 2002PL Day1 Programming Interactive Web Scripts Matthias Felleisen PLT.

Similar presentations


Presentation on theme: "6 Feb 2002PL Day1 Programming Interactive Web Scripts Matthias Felleisen PLT."— Presentation transcript:

1 6 Feb 2002PL Day1 Programming Interactive Web Scripts Matthias Felleisen PLT

2 6 Feb 2002PL Day2 PLT principles of program design –introductory –script development principles of programming languages –design –analysis –correctness programming environments & tools

3 6 Feb 2002PL Day3 PLT: First Session principles of program design –introductory –script development: dynamic Web content principles of programming languages –design –analysis –correctness programming environments & tools

4 6 Feb 2002PL Day4 Dynamic Web Content USA Today says: “… more than half the pages on the Web are generated on demand.” (July 2000) Why? –connection to up-to-date database –determining consumer information –on-line experiments –games

5 6 Feb 2002PL Day5 Dynamic Web Content Technology: Programming, Contents Programming first: –CGI –Java Servlets Contents first –Active Server Pages –Java Server Pages

6 6 Feb 2002PL Day6 Dynamic Web Content What is a CGI script? a servlet? How do they work? Why is it difficult to design interactive ones? Can we automate their development? What does this teach us about GUI dialogues in general?

7 6 Feb 2002PL Day7 The Common Gateway Interface

8 6 Feb 2002PL Day8 http://www.ccs.neu.edu/cgi-bin/goto.pl

9 6 Feb 2002PL Day9 Interactive Web Scripts Some URLs point to programs. The server invokes the program, which writes a page to the standard output port and then terminates. The server sents the page to the client that requested the URL.

10 6 Feb 2002PL Day10 Interactive Web Scripts: Hello World (printf "My First CGI Page~n”) (printf "Hello World") Plain Program (output-http-headers) (write-xml/content (xexpr->xml '(html (title "My First CGI Page") (body "Hello World")))) Web Script

11 6 Feb 2002PL Day11 Interactive Web Scripts: Server Status (output-http-headers) (write-xml/content (xexpr->xml `(html (title "Server Status") (body,(read-line (first (process "uptime"))))))) (printf "Server Status: ~a~n" (read-line (first (process "uptime")))))))

12 6 Feb 2002PL Day12 Interactive Web Scripts: Multiply-by-10.com (output-http-headers) (define (get-number) (get-binding ‘NUM (bindings))) (write-xml/content (xexpr->xml `(html (title "Multiply-by-10.com") (body "the result is: ",(* (get-number) 10))))) (define (get-number) (printf "Enter a number ") (flush-output) (read)) (printf "Multiply-by-10.com") (printf "the result is: ~a" (* (get-number) 10) )

13 6 Feb 2002PL Day13 Interactive Web Scripts: Multiply-by-10.com Multiply-by-10.com Multiply <form method="get" action="http://www..../mult-by-10.ss"> Enter a number Where do babies come from?

14 6 Feb 2002PL Day14 Interactive Web Scripts: Multiply-by-10.com

15 6 Feb 2002PL Day15 Interactive Web Scripts: Multiply.com (output-http-headers) … (write-xml/content (xexpr->xml `(html (title "Multiply.com") (body "the result is: ",(* (get-number) (get-number)))))) (define (get-number) (printf "Enter a number ") (flush-output) (read)) (printf "Multiply.com") (printf "the result is: ~a" (* (get-number) (get-number)) )

16 6 Feb 2002PL Day16 Interactive Web Scripts: DontMultiply.com A CGI script terminates after producing a page. To query the consumer, the script must produce a page with a form. Ergo: To interact, a CGI program must terminate.

17 6 Feb 2002PL Day17 Interactive Web Scripts: DontMultipy.com The natural structure of an interactive Web program doesn’t work naturally with the Common Gateway Interface.

18 6 Feb 2002PL Day18 Interactive Web Scripts: Interaction Current solution: programmers invert program by hand. A program with N interaction points becomes a set of N programs. The programs communicate all necessary data “manually”.

19 6 Feb 2002PL Day19 Interacting with Web Scripts

20 6 Feb 2002PL Day20 Interacting with Web Scripts

21 6 Feb 2002PL Day21 Interacting with Web Scripts

22 6 Feb 2002PL Day22 Interacting with Web Scripts And now we go BACK:

23 6 Feb 2002PL Day23 Interacting with Web Scripts

24 6 Feb 2002PL Day24 Interactive Web Scripts: Multiply.com Multiply Multiply <form method="get" action="http://www..../multiply.ss"> Enter a number

25 6 Feb 2002PL Day25 Interactive Web Scripts: cgi-first.ss (output-http-headers) (write-xml/content (xexpr->xml `(html (title "The Multiply Page") (body `(form ([method "get"][action "http://.../cgi-second.ss"]) (p "Enter the second number") (input ([type "hidden"][name "first"] [value,(get-number)])) (input ([type "text"] [name "second"][value "1"])))))))

26 6 Feb 2002PL Day26 Interactive Web Scripts: Multiply.com Multiply Multiply <form method="get" action="http://www..../multiply.ss"> Enter the second number

27 6 Feb 2002PL Day27 Interactive Web Scripts: cgi-second.ss (output-http-headers) (write-xml/content (xexpr->xml `(html (title "The Multiply Page") (body "the result is: ",(* (get-number 'first) (get-number ’NUM))))))))

28 6 Feb 2002PL Day28 Interactive Web Scripts and Continuations (define multiply (lambda (x y) (* x y))) (define multiply (lambda (x) (lambda (y) (* x y)))) (define multiply-by-22 (lambda (y) (* 22 y)))

29 6 Feb 2002PL Day29 Interactive Web Scripts and Continuations cgi scriptconsumer cgi scriptconsumer the back button

30 6 Feb 2002PL Day30 Interactive Web Scripts and Continuations cgi scriptconsumer cgi scriptconsumer the back button cloning

31 6 Feb 2002PL Day31 PLT’s Interactive Web Script Solution 1: Design Web server that supports coroutining. Use continuation objects. Graunke et al. ESOP 2001 Solution 2: Design transformation that automatically inverts programs with N interaction points into N programs. Graunke et al. ASE 2001 & Jacob Matthews PL Day 2002

32 6 Feb 2002PL Day32 PLT’s Interactive GUI Scripts Generalize this technique to certain GUI programs. Graunke and Krishnamurthi, ICSE 2002. Graunke PL Day 2002.


Download ppt "6 Feb 2002PL Day1 Programming Interactive Web Scripts Matthias Felleisen PLT."

Similar presentations


Ads by Google