pvr doesn't give up, does he? :o) i hope this one finally hits the big-time (but i worry he's underestimating the complexity of scala and over-estimating its popularity).
I used Oz/Mozart for a few years as my "side project language" in the 2003-2005 time frame, and definitely have the love for PvR.
I'm not entirely sure why he chose Scala either, but it will definitely make for more accessible tool support now that Scala is getting first-class treatment in IDEA, etc.
I guess the "obvious" available options are probably Erlang, Scala, and Clojure, and Scala is definitely in the lead right now in terms of popularity with the intended audience.
It could be worse, he could have decided to make a colorforth front-end. :-)
Jonas Bonér has been a big fan of Mozart/Oz for a long time, so naturally he rolled some dataflow concurrency support into Akka: http://doc.akka.io/dataflow-scala
I'm not sure syntax is the main reason for slow uptake of Mozart. In fact the syntax can offer some advantages. See this post by pvr about a tail recursive append without helper functions:
Oz is a pretty damn cool language. But I think another thing that's hampering its adoption, apart from syntax, is the lack of available libraries.
I also have to add to the praise of Concepts, Techniques, and Models of Computer Programming. I remember in particular an exercise from that book where you were asked to write a simple parser in a particular paradigm. It basically asked you to write the procedure parse(code, syntax_tree), where you'd give the code as the first parameter, and where syntax_tree was the output parameter. Once you had made that, the last sub-exercise said "Oh BTW, try calling your function with an empty code parameter, and an existing syntax tree." Lo and behold, it worked! My parser could run in reverse, and it spat out all strings that would produce the given syntax tree. This was a mind blowing experience at the time.
Paradigms that easily permit reversible computations are worthy of extended study. It adds a whole new level of expressive power.
I'm slowly discovering that the coupling of a logic paradigm with a language that supports macros opens the door to some really incredible code transformations.
I have the book here, and it turns out I'm misremembering. It's not an exercise, but an example. It's on pages 643-648 (in my version), in the chapter on relational programming.
I wonder why they're pursuing a proper extension of Scala. Odersky is working with a group in Stanford to make the language even more extensible, in order to enable parallel 'languages' to be implemented as domain specific languages (i.e. as libraries). This seems like a much easier and more fruitful way to popularize Oz (or something Oz-like).
13 comments
[ 4.8 ms ] story [ 37.7 ms ] threadhttps://existentialtype.wordpress.com/2011/03/17/parallelism...
(The whole blog is worth reading; Harper is basically giving a blow-by-blow as CMU rolls out it's new functional-programming-first CS curriculum.)
My favorite features of M/Oz:
* logic programming:
http://www.mozart-oz.org/documentation/tutorial/node8.html#c...
* concurency:
http://www.mozart-oz.org/documentation/tutorial/node8.html#c...
I'm not entirely sure why he chose Scala either, but it will definitely make for more accessible tool support now that Scala is getting first-class treatment in IDEA, etc.
I guess the "obvious" available options are probably Erlang, Scala, and Clojure, and Scala is definitely in the lead right now in terms of popularity with the intended audience.
It could be worse, he could have decided to make a colorforth front-end. :-)
http://www.ps.uni-saarland.de/alice/
I'm not sure syntax is the main reason for slow uptake of Mozart. In fact the syntax can offer some advantages. See this post by pvr about a tail recursive append without helper functions:
http://lambda-the-ultimate.org/node/755#comment-7056
Chris Rathman followed up with an AliceML version and compares the syntax:
http://lambda-the-ultimate.org/node/755#comment-7057
I like Mozart/Oz but the two main things missing for me are unicode support and 64 bit support.
I also have to add to the praise of Concepts, Techniques, and Models of Computer Programming. I remember in particular an exercise from that book where you were asked to write a simple parser in a particular paradigm. It basically asked you to write the procedure parse(code, syntax_tree), where you'd give the code as the first parameter, and where syntax_tree was the output parameter. Once you had made that, the last sub-exercise said "Oh BTW, try calling your function with an empty code parameter, and an existing syntax tree." Lo and behold, it worked! My parser could run in reverse, and it spat out all strings that would produce the given syntax tree. This was a mind blowing experience at the time.
I'm slowly discovering that the coupling of a logic paradigm with a language that supports macros opens the door to some really incredible code transformations.
Reference: http://infoscience.epfl.ch/record/150346/files/onl0000031-ch...