What is Oz?
Oz is a somewhat recent language that nicely combines a number of language paradigms into an interesting and effective language. It is based on the MozartProgrammingSystem.
Features
- Oz combines the salient features of object-oriented programming, by providing state, abstract data types, classes, objects, and inheritance.
- Oz provides the salient features of functional programming by providing a compositional syntax, first-class procedures, and lexical scoping. In fact, every Oz entity is first class, including procedures, threads, classes, methods, and objects.
- Oz provides the salient features of logic programming and constraint programming by providing logic variables, disjunctive constructs, and programmable search strategies.
- Oz is a concurrent language where users can create dynamically any number of sequential threads that can interact with each other. However, in contrast to conventional concurrent languages, each Oz thread is a dataflow thread. Executing a statement in Oz proceeds only when all real dataflow dependencies on the variables involved are resolved.
- The Mozart system supports network-transparent distribution of Oz computations. Multiple Oz sites can connect together and automatically behave like a single Oz computation, sharing variables, objects, classes, and procedures. Sites disconnect automatically when references between entities on different sites cease to exist.
- In a distributed environment Oz provides language security. That is, all language entities are created and passed explicitly. An application cannot forge references nor access references that have not been explicitly given to it. The underlying representation of the language entities is inaccessible to the programmer. This is a consequence of having an abstract store and lexical scoping. Along with first-class procedures, these concepts are essential to implement a capability-based security policy, which is important in open distributed computing.
Links
Concepts, Techniques, and Models of Computer Programming. This is a big book. It provides a reasonable introduction to Oz by way of programming language concepts. It's also a very good treatment of mid to high level computer science just on its own.
See also AliceLanguage, which is based on the same virtual machine but more strongly resembles MlLanguage
