3 Language and design issues

3.1 Why is the syntax so weird?

The most unusual thing about the syntax is the choice of curly braces for procedure application. Once you get used to that you can be rather comfortably puzzled by other things.

3.2 Does Oz have garbage collection?

Yes, Oz has automatic garbage collection (2 space copying GC). For open distributed computing applications, it also implements automatic distributed GC, but, at present, not all distributed cyclic datastructures can be collected successfully.

3.3 What is constraint programming?

3.4 Can I also have state?

3.5 What is multi-paradigm programming?

Multi-paradigm programming is the freedom to choose and mix programming paradigms according to your tastes and needs. Unlike most other programming languages which lock you into a single programming paradigm, Oz unifies into one simple and coherent framework the functional, object-oriented, and logic flavors of programming. This is possible due to the very general and powerful underlying paradigm of concurrent constraint programming.

3.6 Does Oz support object-oriented programming?

Yes, Oz supports the class/instance model for object-oriented programming. A class is created e. g. as follows:

declare 
class Foo 
   attr val
   meth init(V) val:=end 
   meth show {Show foo(val: @val)} end 
end

An instance is created using procedure New applied to class Foo and initial message init(12) for example:

declare O = {New Foo init(12)}

Object O can be applied to message show as follows:

{O show}

which, in this case causes foo(val: 12) to be printed.

A point of terminology: we speak of object application rather than of message sending.

3.7 Does Oz support functional programming?

3.8 Does Oz support logic programming?

3.9 Does Oz support modular programming?

3.10 Does Oz support concurrent programming?

3.11 Does Oz support distributed programming?

3.12 Can I do backtracking?

3.13 What is a computation space?

3.14 How do I program a search problem?

3.15 Why is [] not the empty list

3.16 What is the meaning of the $ marker

3.17 What is the meaning of the , marker

3.18 What datatypes does Oz provide?

3.19 What is a basic constraint?

3.20 What is a non-basic constraint?

3.21 What is a propagator?


Denys Duchier
Version 1.4.0 (20100209)