Also, it seems to me that if the notion of the essence of Oz as described below is right, that should be the primary emphasis in explaining Oz.  But it doesn't seem to be. I had to work it out for myself. 
 
I do sense a division in the Oz community. One group is focused on Oz as a constraint/logic language.  Another is focused on Oz as a platform for explicating programming languages in general. Still another is focused on Oz as a  language for distributed programming. 
 
I heard about Oz originally from the perspective of Oz as a platform for explicating programming languages.  I now think that coming to Oz with that as an expectation made it harder for me to learn Oz--even though my primary intended use was to use it as a logic programming language.  My thinking was that since it could do languages in general, and since it could do logic programming in particular, then it should be a useful platform to do Prolog-style logic programming.
 
Having spent the past month or so with Oz, I now think that it's most important use is as a constraint/logic language along the lines that Christian emphasized.
 
-- Russ

 
On 10/20/05, Russ Abbott <[EMAIL PROTECTED]> wrote:
I agree. I think that Oz's combination of constraints and search is wonderful.  My page on Concurrent Programming in Oz ( http://cs.calstatela.edu/~wiki/index.php/Courses/CS_460/Fall_2005/Concurrent_logic_programming_in_Oz) was my way of trying to work that out for myself and at the same time to explain it in simple terms. 
 
New computational spaces are search. New statements and narrowing of domains in an existing computational space is constraint.  I think it's a lovely distinction, and I 'd like to see it made as cleanly and sharply as possible. 
 
Sometimes I don't understand the details of how Oz works.  Until Raph's message, I didn't understand the 'or' statement. (I still don't understand why I get NO answers when using an or-version of Append in a SearchAll.)
 
And the preceding two points are separate from my comments about silent suspension as something that should be stressed to new users as something that is fundamental to Oz as a programming language, no matter how it is used and no matter how lovely it is. 
 
The Oz-is-not-Prolog perspective should also be stressed.  Yet SearchAll and SolveAll encourage one to think of Oz as Prolog in different clothes.  Why not implement choice as the creation of multiple threads in multiple computation spaces?  That's more the point, isn't it?  Then some mechanism should be defined to harvest the results or to allow the multiple parallel threads to deposit their results somewhere.  That would be more Oz-like in my view.   Having a search controller like SearchAll makes it seem very Prolog-like. 
 
That's why I suggested that multiple threads in multiple spaces is search; multiple threads in a single space is constraint. It seems to me from my current understanding that this simiple notion is the essence of Oz.  I think it's a lovely way to look at things. Yet no one seemed to respond to it when I made it the other day.  What do you think?
 
-- Russ

 
On 10/20/05, Christian Schulte <[EMAIL PROTECTED] > wrote:
The two major strands of thought in the design of Oz were concurrency and
inference. 'or' (albeit an abstraction programmed from computation spaces
these days) combines both in a rather genuine way. I just like to repeat
what I said before: Oz is not Prolog, it has been designed to be a successor
to Prolog by stressing inference in contrast to blind search. This very idea
has boomed over the last two decades in areas such as constraint programming
or answer set programming, to just name a few.

Point is: please have a go at writing programs that separate inference from
nondeterministic guessing (search). Otherwise you'll be missing out on the
major development that underlies the design of Oz (no criticism, just
encouragement, please take it that way). I personally, while being very
biased and having a different focus on what is reported in CTM, have to
admit that CTM does not stress this very fact enough!

Christian

-----Original Message-----
From: [EMAIL PROTECTED] [mailto: [EMAIL PROTECTED]] On
Behalf Of Russ Abbott
Sent: Thursday, October 20, 2005 11:51 PM
To: Peter Van Roy; Torsten Anders; [EMAIL PROTECTED]
Subject: Re: 'or'


I'm still confused about 'or' as a statement.

What does it mean for it to try to pick between alternatives?  Under what
conditions will it succeed/fail?  I'm guessing that in "trying" it does so
in a local copy of the environment to avoid assigning variables.  Is that
why I saw two different values for a variable--which is not possible without
a choice point.  Since search engines don't see it, how can it be prompted
to resume once it suspends? How is it intended to be used?  Or lik 'dis' is
it an experimental artifact that is no longer considered part of the
language.

-- Russ


On 10/20/05, Peter Van Roy < [EMAIL PROTECTED]> wrote:
...
Note that the 'or' statement does not create a choice point at all.  It
tries immediately to pick between alternatives and if it can't decide, it
will
simply suspend.  Search engines don't see 'or'.  ...










--
_____________________________________________
Professor, Computer Science
California State University, Los Angeles
o Check out my blog at http://russabbott.blogspot.com/



--
_____________________________________________
Professor, Computer Science
California State University, Los Angeles
o Check out my blog at http://russabbott.blogspot.com/
_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to