Dear Russ,
Like others here, I am sorry, but I have to disagree strongly. I
suggest you start reading CTM from the beginning and resist just
jumping to your favourite subjects such as relational programming ;-)
You will then realise that most of all, Oz is a multi-paradigm
programming language.
CTM does not only introduce the several programming models of Oz, but
also carefully discusses how Oz compares with other languages designed
for the respective programming model (e.g. how Oz performs with other
functional languages, concurrent languages, OOP languages etc).
Best,
Torsten
BTW: I am actually a musician and with no formal computer science
training (I only did a few years of Lisp programming before). Even for
me the Mozart-Oz doc is perfectly comprehensible.
Having spent the last three weeks or so working with Mozart-Oz, [skip]
I am _not_ able to read a few thousand pages of documentation in only
three weeks. You may need some more time so to digest, before you come
to a final verdict, how others misunderstood what they produced in more
than ten years ;-) Needless to say, that I am only a humble user as
well..
--
Torsten Anders
Sonic Arts Research Centre
Queen's University Belfast (UK)
www.torsten-anders.de
On 05.10.2005, at 21:54, Russ Abbott wrote:
I found out about Mozart-Oz after attending the Agent 2004 conference
at U Chicago about a year ago. Michael North and others there told me
about it. They had had a class in it earlier that year and were very
impressed with it. They told me that it was organized as a core base
language on top of which most of the major programming language
capabilities (including Prolog-style unification and backtracking and
also including functional programming) had been built in a principled
way. I was quite excited about this--although I didn't really follow
up until recently. You can imagine my expectations when I started
looking at it. Neither CTM--at least looking at the table of contents
and flipping through the pages--nor the online tutorial material
disabuse one of this perspective.
Having spent the last three weeks or so working with Mozart-Oz, my
impression now is that it is a Constraint Propagation system.
Everything else is built to serve that objective. Although I have no
expertise in CP, I am very impressed with what you have built. My
guess is that Mozart-Oz is a state-of-the-art CP system. (Are there
better ones around?) On the other hand, I don't think it is a
state-of-the-art system in other regards. But it shouldn't be
expected to be a state-of-the-art system for every aspect of
programming.
So I strongly recommend that Mozart-Oz be publicized for what it is, a
fantastic CP system. With that in mind, I would recommend
re-organizing both the tutorial material and CTM. In CTM, for example,
not only is CP at the very end, it is in a section entitled
"Specialized Computation Models." The implication is that, yes one
could do CP in Oz just as one could use Oz for Gui building and for
Distributed programming. And not only can one build these various
kinds of computation models, they really are Oz afterthoughts. The
real Oz is the in the General Computation Models. I think that gives
the wrong impression. Does anyone believe that the GUI and Distributed
Programming capabilities of Oz are competitive with what one could get
elsewhere? Does anyone believe Oz is as good an OO language as <pick
your favorite OO language>? On the other hand Oz CP is in a class by
itself.
So if I were to promote and teach Oz, I would focus on CP. I would
promote it as CP, and I would teach it as CP. I would start with
simple CP problems and show how to do them. I would then talk about
Computation Spaces and how they work and about concurrency and how
that's part of how Computation Spaces work. I would also talk about
the language itself as a way to write constraints, which is really its
primary purpose.
At that point, I might stop and talk about the language in more depth
as a language, pointing out that it is after all a general purpose
programming language. Not only can it be used to write constraints,
it can be used to write all sorts of non-constraint programs. But I
would ask people to keep in mind that many of the decision made when
developing the language (that threads block waiting for variables to
get values, for example) were made because it was intended as a
language for writing constraints and not because it was invented as a
general purpose language which was then adopted as a
constraint language when one was needed.
I think that an approach like this would make it much easier for
someone approaching Mozart-Oz from the outside to understand what's
going on. I also think it would be a more honest description of
what's really going on.
I know I'm still a new comer to this community and that I haven't made
the sort of investments most of you have made in it. So perhaps my
opinion is somewhat gratuitous--as well as being still somewhat
uniformed. So if any of the above has been offensive to anyone, I
apologize.
-- Russ
_______________________________________________________________________
__________
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users
_________________________________________________________________________________
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users