The Development of Oz / Mozart - PowerPoint PPT Presentation

1 / 48
About This Presentation
Title:

The Development of Oz / Mozart

Description:

DFKI, Programming Systems Lab. Project Hydra, 1991-1995, BMBF. Project ACCLAIM, 1992-1995, ... Hydra proposal. Research on. Constraint logic programming ... – PowerPoint PPT presentation

Number of Views:135
Avg rating:3.0/5.0
Slides: 49
Provided by: gerts
Category:

less

Transcript and Presenter's Notes

Title: The Development of Oz / Mozart


1
The Development ofOz / Mozart
  • Gert Smolka
  • Saarland University

2
Overview
  • Oz 1991-1995
  • Mozart 1996-1999
  • Alice 1999 - now

3
1991-1995
  • Oz

4
1991 1995 (Oz)
  • DFKI, Programming Systems Lab
  • Project Hydra, 1991-1995, BMBF
  • Project ACCLAIM, 1992-1995, EU BRA

5
Hydra proposal
  • Research on
  • Constraint logic programming
  • Computation and deduction
  • Knowledge representation and reasoning
  • Concurrent objects
  • Develop programming system for logic-based
    problem solving
  • Language
  • VM and compiler

6
Students and postdocs
  • Ralph Treinen (1991-95)
  • Peter van Roy (1994-96)
  • Rolf Backofen
  • Joachim Niehren
  • Ralph Scheidhauer
  • Michael Mehl
  • Martin Henz
  • Jörg Würtz
  • Christian Schulte
  • Tobias Müller
  • Martin Müller
  • Konstantin Popow

7
My background 1991
  • Functional logic programming (Fresh)
  • Cornell 1983-85
  • Algebraic specification and rewriting (Obj)
  • SRI, Kaiserslautern, 1985-1989
  • Typed logic programming (TEL)
  • Cornell, SRI, Kaiserlautern, IBM 1983-1989
  • Feature constraints and residuation (Life)
  • MCC, Kaiserslautern, IBM, Digital PRL, DFKI
  • Knowledge representation (KL-One)
  • IBM, DFKI

8
Important influences
  • Life, residuation
  • Hassan Ait-Kaci and Andreas Podelski
  • Paris R. Lab of Digital, May 1990
  • AKL, deep guards, WAM-technology
  • Seif Haridi, Sverker Janson
  • ICLP 1991 in Paris
  • Acclaim EU project (1992-1995)
  • Milners Pi-calculus (Oxford April 1992)

9
1992
  • First-class procedures
  • Compositional syntax
  • Synchronous channel communication
  • First version of Oz
  • Prototype, demos

10
(No Transcript)
11
(No Transcript)
12
1993
  • Object system
  • GUI (Interviews), Browser
  • Asynchronous channels
  • Names
  • Efficient prototype offered through ftp
  • Oz Handbook in work

13
1994
  • Search combinator
  • Cells replace channels
  • Threads considered first-class
  • Definition of Kernel Oz
  • Tcl/Tk replaces Interviews
  • Finite domain constraints
  • Project with Daimler (multi agent)

14
1995
  • DFKI Oz 1.0 released
  • PERDIO Proposal finished
  • Explorer
  • Oz-2 explicit concurrency
  • SICS joins Oz development
  • WOZ 95 in Martigny

15
(No Transcript)
16
Key qualities
  • Formal model
  • Kernel language
  • Implementation
  • Users
  • Ambition
  • Abandoned logic programming

17
Key concepts
  • First-class procedures (FP)
  • Search based on spaces
  • Concurrency based on cells and logic variables
  • Classes as modules

18
1996-1999
  • Mozart

19
1996-1999 (Mozart)
  • Proposal by Schulte, Smolka, van Roy
  • Carried out in collaboration with SICS
  • Mozart Consortium founded 1996
  • SFB project NEP at Saarland University
  • Leif Kornstaedt, Denys Duchier
  • Oz-2 ? Oz-3, conservative extension
  • Mozart 1.0 released January 1999

20
(No Transcript)
21
Extension of Oz with support for
  • distributed programming
  • persistent storage
  • components

22
Inspiration from
  • Cardellis Obliq (distribution)
  • network transparency
  • network awareness
  • Java (components)
  • load components from Internet when needed

23
Export / import of language structures
  • Easy for stateless structures
  • Replication
  • Code is stateless
  • Problematic for stateful structures
  • must not be replicated
  • must be referred to by proxies
  • may move
  • may die

24
Components
  • System is graph of components starts with one
    component
  • Further components are loaded from net only when
    needed (analog to Web)
  • Component consists of
  • a procedure executed upon installation
  • URLs of required components

25
Code ? Functor ? Component
  • Code
  • text, creates structure when executed
  • Functor
  • stateless structure
  • loaded from net to install component
  • Component
  • structure created by functor

26
Code
  • Text
  • Can be executed by interpreter
  • Execution wrt to environment identifier ?
    structure
  • Execution creates structure

27
Mozart compiler
  • Offline interpreter
  • Executes code that
  • installs an environment
  • creates a functor
  • Stores functor in file system
  • Translation of code into low-level code
    semantically not visible

28
Comparison with Java
  • Class files are type checked code
  • Functors are structures obtained by execution of
    codes
  • Java compiler is type checker
  • Mozart compiler is interpreter that executes code

29
Mozarts component system is programmed in Oz
  • Pickles store functors
  • By-need synchronization triggers loading of
    functors
  • Futures provide safety (read-only views of logic
    variables)

30
(No Transcript)
31
1999-now
  • Alice

32
Alice (since 1999)
  • NEP Project, SFB 378
  • Thorsten Brunklaus
  • Leif Kornstaedt (now MS)
  • Didier Le Botlan
  • Andreas Rossberg
  • Guido Tack

33
Oz designed as hybrid
  • constraint programming platform
  • general purpose programming language
  • gt design conflicts and complexity
  • gt refactorize into
  • programming language constraint
    library

34
Gecode
  • Constraint library (C)
  • Bindings for different languages
  • Done by Christian Schulte (KTH) and Guido Tack
    (Saarbrücken)

35
Abandon logic variables
  • Can be bound everywhere
  • Malicious consumer can bind tail variable of
    stream
  • Break abstractions
  • Unification not needed

36
Have futures instead
  • Multilisp Halstead 1985
  • Added to Mozart in 1998
  • Refine logic variable into
  • consumer end (future)
  • producer end (promise)
  • Data flow synchronization by-need
    synchronization

37
Functional kernel language
  • Input-output-distinction
  • implicit with relational kernel
  • explicit with functional kernel
  • Should be explicit because of
  • clearness of programs
  • efficiency of execution
  • typing

38
Functional threads
  • concur, byneed (unit ? a) ? a
  • create thread executing arg. function
  • return future
  • future represents result of thread

39
Atomic cell exchange
  • exchange a cell ? a ? a
  • atomic read and write
  • concur and exchange almost suffice to program
    concurrent data structures (e.g., locks, ports,
    channels)

40
Promises avoid polling
  • promise unit ? a promise
  • get a promise ? a
  • put a promise ? a ? unit
  • Can be implement with concur and exchange
  • get with thread polling cell
  • put with exchange on arbiter cell

41
Implementing promises with polling
  • fun promise () let
  • val value ref NONE
  • fun poll () case !value of NONE gt poll ()
    SOME x gt x
  • val future byneed poll
  • val arbiter ref false
  • in
  • (arbiter, value, future)
  • end
  • fun get (_,_,x) x
  • fun put (a,v,_) x if exchange a true then raise
    Error else v SOME x
  • Rossberg 2004

42
Exceptions
  • Futures are associated with threads
  • Threads can fail with exceptions
  • Failed futures
  • Request of failed future propagates exception
  • Avoids infinite blocking on failed future

43
Alice
  • Standard ML
  • functional threads
  • components
  • remote procedure calls
  • dynamic types

44
Dynamic types
  • pack atype ? a ? package
  • unpack atype ? package ? a
  • Used for take / offer
  • At the level of module types
  • higher-order module system

45
Alice System
  • Mozart-based version is available
  • Efficient stand-alone version soon to be
    released
  • Based on SEAM, an architecture and library for
    the implementation of virtual machines

46
Thanks to everyone who has contributed to Oz,
Mozart and Alice
47
What I see as main contributions
  • Oz
  • new architecture for constraint search
  • theory of feature tree constraints and relative
    simplification
  • efficient threads with data flow synchronization
  • Mozart
  • Pickling of higher-order structures
  • component system based on pickling and futures
  • distributed store, offer/take-primitives

48
  • Alice
  • dynamic types
Write a Comment
User Comments (0)
About PowerShow.com