Multilisp Concurrent Functional Programming Ed Walters and Tim
- Slides: 34
Multilisp: Concurrent Functional Programming Ed Walters and Tim Richards University of Massachusetts Amherst UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science
Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now? UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 2
Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now? UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 3
What is Multilisp? Dialect of Scheme language Extensions for Concurrency Functional Programming Limited Side-effects Garbage Collection Parallel Function Application Futures Reference: R. Halstead, TOPLAS, Vol. 7, No. 4, 1985. UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 4
Goal of Multilisp Explicit Constructs for Concurrency Adhere to Scheme Philosophy No Additional Syntax Minimal Additional Semantics Maximum Flexibility Granularity Backwards-compatibility� UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 5
Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now? UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 6
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 UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 7
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) UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 8
Brief Scheme Syntax Function definition Function application (f x) Conditionals (define f (lambda (x) … )) (if x y z) Symbols and Atomic Elements ‘x, 3 UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 9
Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89 UNIVERSITY OF MASSACHUSETTS, AMHERST • 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 UNIVERSITY OF MASSACHUSETTS, AMHERST • 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 UNIVERSITY OF MASSACHUSETTS, AMHERST • 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 UNIVERSITY OF MASSACHUSETTS, AMHERST • 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 UNIVERSITY OF MASSACHUSETTS, AMHERST • 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 UNIVERSITY OF MASSACHUSETTS, AMHERST • 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 UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 16
Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now? UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 17
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) UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 18
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)))))) UNIVERSITY OF MASSACHUSETTS, AMHERST • 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)))))) UNIVERSITY OF MASSACHUSETTS, AMHERST • 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)))))) UNIVERSITY OF MASSACHUSETTS, AMHERST • 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)))))) UNIVERSITY OF MASSACHUSETTS, AMHERST • 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)))))) UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 23
Futures future: contract to deliver parallel computation Syntax: (future <exp>) Semantics: Evaluate <exp> concurrently with calling program Return reference to future immediately Block if value of <exp> is required UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 24
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 UNIVERSITY OF MASSACHUSETTS, AMHERST • 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 UNIVERSITY OF MASSACHUSETTS, AMHERST • 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 UNIVERSITY OF MASSACHUSETTS, AMHERST • 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 UNIVERSITY OF MASSACHUSETTS, AMHERST • 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 UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 29
More Details pcall can be implemented using future Facilitates multiple concurrent programming paradigms: Cilk-style Message Passing Futures somewhat resemble Lazy Evaluation delayed but guaranteed No infinite data structures UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 30
Implementation Notes Each future/pcall element is a thread pcall fork/join parallelism future asynchronous thread block on read UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 31
Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now? UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 32
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. UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 33
Conclusion Like much of the Scheme World: Elegant, Flexible Solution Deader than a Doornail Not Java UNIVERSITY OF MASSACHUSETTS, AMHERST • Department of Computer Science 34
- Synchronization algorithms and concurrent programming
- Space maintainer classification
- Non functional plasma enzyme example
- Plasma enzyme
- Functional and non functional
- Eric walters wave
- Sandra walters pack
- Bookish crickhowell
- Walters perennials
- Walter theory
- What was scout's first crime at school
- Robb walters
- Walters restaurant portland maine
- Procedural vs functional
- Fundamentals of functional programming
- Scheme functional programming
- Elm programming language
- Functional programming roadmap
- Lisp functional programming
- Typed functional programming
- Fundamentals of functional programming language
- Xkcd coding
- Cosc 4p41
- Is lisp a functional programming language
- Functional decomposition programming
- Lisp functional programming
- Functional programming
- Perbedaan linear programming dan integer programming
- Greedy algorithm vs dynamic programming
- What is system programming
- Linear vs integer programming
- Programing adalah
- What are delegated reserved and concurrent powers
- Criterion related validity predictive and concurrent
- Practice 5-3 concurrent lines medians and altitudes