Alex Peake wrote:
The context of this question is we are currently writing a large
system in Erlang. I have been studying Mozart-Oz, on and off for some
time, and it appears to have much in common, and much beyond Erlang.
So I ask "could this system we are building have benfited from being
implemented in Mozart-Oz?" (To see what we do visit
www.schoolmessenger.com <http://www.schoolmessenger.com>)
I have been reading about the Fault module and comparing it with the
OTP aspect of Erlang (gen_server and the supervisory structure). It
appears that the Mozart-Oz "could" do this, but you would have to
write the pieces yourself. Is this a fair assessment?
The watchers of Mozart/Oz let you do pretty much the same thing as
process linking in Erlang.
If you "watch" a site, then if the site has problems you are notified
asynchronously. Watchers
can see both permanent and temporary problems. If you want supervisors
then you have to
build them on top of the watchers. (We are working on an improved
distribution subsystem
that has a simpler and more powerful mechanism for fault detection than
the current Fault
module. Raphaƫl Collet and Boris Mejias can tell you more.)
Another aspect we find invaluable is Erlang Mnesia -- as a distributed
fault-tolerant data store. How would you address this in the Mozart-Oz
world?
There is nothing quite as powerful as Mnesia in the Mozart/Oz world so
far. We do have a prototype
of a "Global Store" - a distributed fault-tolerant object store - but
the student who was working on it
left, so while it is an interesting prototype, it is not completely
finished. There is also an interface
from Mozart to GDBM and an ODBC interface.
What we are working on now is a decentralized, peer-to-peer architecture
for building applications
and services, called P2PKit. One of the services we are working on is a
replicated data store. See
p2ps.info.ucl.ac.be and p2pkit.info.ucl.ac.be to see how far we are.
The service architecture
actually works pretty well. We have several engineering students
building services as part of their
master's projects.
As a final question -- if we implement in Erlang, and would want to
make use of the power of Mozart-Oz (for contraint programming for
example), is a C++ interface our only hope of reasonable interaction?
Or maybe raw TCP/IP between processes?
Sockets are a reasonable way to communicate between Erlang and Mozart.
MOGUL has some
parsing tools, or you can use Gump, or you can "roll your own" parser in
a few lines of Oz.
Thanks for any insight
Alex
It's my pleasure,
Peter
_________________________________________________________________________________
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users