summary of a paper about Obliq

Paul Dufresne
Tue, 19 May 1998 02:43:52 +0400

The following is my summary of the paper 'A language with distributed

written by Luca Cardelli. see

"Obliq is a lexically-scoped untyped interpreted language that supports
distributed object-oriented computation. An Obliq computation may involve
multiple threads of control within an address space, multiple address
spaces on a machine, heterogeneous machines over a local network, and
multiple networks over the Internet. Obliq objects have state and are
local to a site. Obliq computations can roam over the network, while
maintaining network connections."

Obliq is part of the Modula-3 distribution. Unlike others object-oriented
language, Obliq don't have classes. In obliq an object is a collection of
fields associated with values that can be local or remote. The value can
be number, strings, procedures, methods, etc. As such, methods can be
dynamically updated or overriden by new methods or any new values.

Cloning make possible some kind of dynamic inheritance (multiple, because
the clone operation can return an object containing fields of more than
one objects, as long as there is no name clash). Since each identifier
can be bound to a local or remote object, it is possible to clone an
object that is remote as easily as a local one, this can be used to
achieve some kind of migration. This is also good for updating, that is,
you can update fields of a remote object the same way you do for local

It is also possible to redirect messages for an object to an other

To get a reference to a remote object, you must call a reference to
object server (called name server) identified by a unique IP address with
the name of the object you want it to return a reference.  You can also
send to a name server a name with a reference to an object, so that
remote site can access it. A name server can also be used to exchange
compute server, called execution engines.

Obliq use two facultative protection mechanisms for objects based on the
concept of self inflicted operations: protection against not
self-inflicted operations, and serialization. The first one make it
possible to make an object that can only be modified or cloned by itself.
The second, serialization, is to resolve problems when a thread modify an
object while an other thread use it. To resolve this, you can declared
the object serialized, so that only one thread at a time can be running
'inside' the object, but leaving the possibility for a method or
procedure of the object to call other methods or procedures of the same
object.  Local threads can be made by forking. Other protection
mechanisms exist.

Althought Obliq is untype. The parser let you declared types, but since
the rest of the compiler ignore them, they are really comments.

Obliq support modules and have some built-in libraries, like forms,
pickle to have what some would call persistence, color, format, lex, etc.

One important application written in Obliq is Visual-Obliq that integrate
Obliq with the web and is also distributed with Modula-3.

"Visual Obliq [Bharat 94] is an environment for designing, programming
and running distributed, multi-user GUI applications. It consists of an
interface builder for interactively constructing the application, and
run-time support to handle the distribution. The interface builder was
designed on the lines of Microsoft's Visual Basic, but specifically for
distributed applications, and provides an integrated
`draw-program-and-go' solution. Moderately sophist ted distributed
applications can be designed, programmed and tested in a matter of
minutes. The video [Bharat 95] demonstrates the interactive construction
of a multi-user editor with floor control, in under seven minutes.

The Visual Obliq interface builder outputs code in an interpreted
language called Obliq [Cardelli 95], which inherently supports
distributed computing.

When a Visual Obliq application is started by the user at some site, it
creates a "session." Other sites can join the session by acquiring a
reference to th e session called a "session-handle." They do not require
the application progr am code. Once they connect to the session using the
handle, the necessary procedures will be shipped to them over the network
from the site that start ed the session."

Net-Tamer V 1.11 - Test Drive