Download presentation
Presentation is loading. Please wait.
1
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Multilisp: Concurrent Functional Programming Ed Walters and Tim Richards University of Massachusetts Amherst
2
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 2 Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now?
3
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 3 Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now?
4
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 4 What is Multilisp? Dialect of Scheme language Functional Programming Limited Side-effects Garbage Collection Extensions for Concurrency Parallel Function Application Futures Reference: R. Halstead, TOPLAS, Vol. 7, No. 4, 1985.
5
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 5 Goal of Multilisp Explicit Constructs for Concurrency Adhere to Scheme Philosophy No Additional Syntax Minimal Additional Semantics Maximum Flexibility Granularity Backwards-compatibility
6
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 6 Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now?
7
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 7 The Scheme Language Descendent of Lisp (LISt Processing) Created by Steele and Sussman (1975) Important Features: Extended Lambda Calculus Lexical Scoping Functions are first-class
8
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 8 Important Terms Expression: Basic unit of Scheme code (e.g., List or integer) Evaluation: Scheme expressions evaluate to a value upon execution Application: Function call on a list, i.e. apply first element to rest of list (f a b c) => f(a, b, c)
9
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 9 Brief Scheme Syntax Function definition (define f (lambda (x) … )) Function application (f x) Conditionals (if x y z) Symbols and Atomic Elements ‘x, 3
10
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 10 Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89
11
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 11 Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89
12
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 12 Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89
13
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 13 Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89
14
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 14 Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89
15
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 15 Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89
16
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 16 Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89
17
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 17 Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now?
18
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 18 Parallel Calls pcall : Parallel function application Syntax: (pcall F A B C) Semantics: Evaluate F, A, B, C in parallel Apply F to A, B, C (F A B C)
19
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 19 Parallel Calls: Example (define div-and-conq (lambda (x) (if (base-case x) x (pcall combine-results (div-and-conq (- x 1)) (div-and-conq (- x 5))))))
20
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 20 Parallel Calls: Example (define div-and-conq (lambda (x) (if (base-case x) x (pcall combine-results (div-and-conq (- x 1)) (div-and-conq (- x 5))))))
21
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 21 Parallel Calls: Example (define div-and-conq (lambda (x) (if (base-case x) x (pcall combine-results (div-and-conq (- x 1)) (div-and-conq (- x 5))))))
22
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 22 Parallel Calls: Example (define div-and-conq (lambda (x) (if (base-case x) x (pcall combine-results (div-and-conq (- x 1)) (div-and-conq (- x 5))))))
23
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 23 Parallel Calls: Example (define div-and-conq (lambda (x) (if (base-case x) x (pcall combine-results (div-and-conq (- x 1)) (div-and-conq (- x 5))))))
24
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 24 Futures future: contract to deliver parallel computation Syntax: (future ) Semantics: Evaluate concurrently with calling program Return reference to future immediately Block if value of is required
25
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 25 Futures: Example (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (future (fib (- x 1))) (future (fib (- x 2)))) )))) (fib 10) => 89
26
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 26 Futures: Example (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (future (fib (- x 1))) (future (fib (- x 2)))) )))) (fib 10) => 89
27
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 27 Futures: Example (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (future (fib (- x 1))) (future (fib (- x 2)))) )))) (fib 10) => 89
28
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 28 Futures: Example (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (future (fib (- x 1))) (future (fib (- x 2)))) )))) (fib 10) => 89
29
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 29 Futures: Example (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (future (fib (- x 1))) (future (fib (- x 2)))) )))) (fib 10) => 89
30
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 30 More Details pcall can be implemented using future Facilitates multiple concurrent programming paradigms: Cilk-style Message Passing Futures somewhat resemble Lazy Evaluation Evaluation delayed but guaranteed No infinite data structures
31
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 31 Implementation Notes Each future / pcall element is a thread pcall fork/join parallelism future asynchronous thread block on read
32
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 32 Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now?
33
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 33 Where is Multilisp Now? No current Scheme compilers implement futures We had to implement our own interpreter! However: THEY LIVE on in Java! Transparent Proxies for Java Futures, Pratikakis, Spacco, and Hicks, OOPSLA 2004. Safe Futures for Java, Welc, Jagannathan, and Hosking, OOPSLA 2005.
34
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science 34 Conclusion Like much of the Scheme World: Elegant, Flexible Solution Deader than a Doornail Not Java
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.