Forgot your password?
typodupeerror
Cloud Java Programming

Announcing Ozma: Extending Scala With Oz Concurrency 38

Posted by timothy
from the whirlwind-tour-of-the-programming-world dept.
setori88 writes "Programming for concurrency makes sense in developing for both large scales (cloud computing) and small (multicore CPUs). Some languages were designed for concurrency and distribution; One of those languages is Oz, which provides advanced primitives regarding concurrency and distribution. Oz is mostly declarative, a paradigm that encompasses functional and logic programming. Despite its innovative features and expressiveness, Oz never made it into the wide developer community; one reason is its unusual syntax." Read on to learn about an effort to bring Oz's concurrency features to more programmers.
setori88 continues: "But first, some background: Martin Odersky, in designing the Scala programming language, recognized the need for community acceptance of the kind that Oz lacked. He designed Scala as being both close to Java (in terms of syntax and concepts) and interoperable with existing Java libraries. Today, Scala seems to be the best hope for making functional programming accessible to programmers.

Although Scala has no language feature related to concurrency, the advanced library Akka, inspired by Erlang, provides Scala programmers with concurrent and distributed concepts.

Now comes a project attempting to popularize the concurrency concepts of Oz, called Ozma. Ozma implements the full Scala specification and runs on the Mozart VM. It extends Scala with dataflow variables, declarative concurrency, lazy declarative concurrency, and message-passing concurrency based on ports. Ozma extends the duality of Scala, namely the combination of functional and object styles, to concurrent programming."
This discussion has been archived. No new comments can be posted.

Announcing Ozma: Extending Scala With Oz Concurrency

Comments Filter:
  • I have a hard time imagining why you would use a name in 2003 that has been the name of a software product and a software company that you don't even work for since 1987. It would be like naming a programming language "Borland" when you work for Seagate.

  • I don't like Ozma, it takes the fun out of functions :P
  • [] X#nil then Z=X (Score:3, Informative)

    by Islemaster (1572519) on Monday June 27, 2011 @10:06AM (#36583146)
    The syntax can be weird, (why the double square-bracket? why?) but I wouldn't call that Oz's biggest misstep in gaining wide acceptance. In my experience, the biggest problems while learning were

    1. Almost zero documentation on getting the language to (partially) compile and/or run outside of Eclipse. I'm not sure how I ever figured this out, to be honest.
    2. Lack of a decent file I/O library. When was the last time you had to write your own streamreader for a business application?

    I am thrilled to see Oz getting more mainstream attention - the whole dataflow concept is very cool, and it's fun to write.
    • You have quite a good point. If syntax weirdeness were a problem, C would have never taken off. Lack of decent I/O is the problem with most languages that are easy to paralelize. It seems that most such languages aren't defined with I/O in mind, and it is easy to imagine why, doing I/O in a paralel environment is very complex.

    • Eclipse? WTF?

      Not sure if it even runs in Eclipse... It's pretty tied to Emacs though. I think the Browser is ok for seeing concepts, but I doubt I'd care to use it for serious programming though. I've been compiling what I code in oz with vi, and running it on the command line.

      The documentation needs to be better though. I did buy http://www.info.ucl.ac.be/~pvr/book.html [ucl.ac.be], but the online docs need some polishing and completing, especially section 12 of the tutorial since that's where much of the cool stuf

      • "Another annoying thing is that Oz only runs in 32 bit so far."

        When I tried it around 1.5 year ago, the database libraries were quite buggy (they borrowed them from tcl IIRC). So I don't think it can be considered a production ready language.

    • CSP (Score:4, Informative)

      by sourcerror (1718066) on Monday June 27, 2011 @01:01PM (#36585916)

      If I remember correctly, "#" is for constraint statisfaction problems (delayed goal), and I think that operator shouldn't be taught to an Oz newbie, as Constraint Logic Programming is a paradigm onto itself (and not just paradigm, as in thinking pattern, but it involves quite a lot of complex algorithm that run in the background (demons), and non-sequantial execution).

      Last time I installed Oz, it came with Emacs bundled by default.

      • Oh yeah, Emacs, not Eclipse. *facepalm* My bad. I just remember it was an IDE that I couldn't get working at the time, and had to dig through docs for literally days to figure out how to compile from the command line.

        At least in the subject line of my original comment, # is just an infix representation for a tuple. From the Oz Tutorial [mozart-oz.org]:

        "A common infix tuple-operator used in Oz is #. So, 1#2 is a tuple of two elements, and observe that 1#2#3 is a single tuple of three elements: '#'(1 2 3) and not the pa

        • Well, I haven't used Oz in a while, but my first exposure consisted some conference slides, and it was quite overwhelming as it involved a CSP without even properly clarify the syntax. And in Prolog CSP frameworks "#" means constraint equality. (CSP got "mainstream" with Prolog first.)

          On the other hand I agree that Emacs feels ass-backwards.

  • Scala's actor framework is indeed built in, and works very well for multi-core scaling. What it doesn't have is a distributed concurrency model that makes it trivial to run a single "program" on multiple weakly-connected systems ("in the cloud.")

  • But "proactive" and "paradigm"? Aren't these just buzzwords that dumb people use to sound important? Not that I'm accusing you of anything like that. I'm fired, aren't I?
    • No, normaly dumb people prefer to cast doubt on perfectly made arguments when they want to sound important.

      Those words have a meaning, a quite clear and well define done. Learn those meanings if you want to talk about the subject in question.

      • I'm familiar with the definition, and the only distinct thing I see in there is the bizarre syntax. All of the features touted in this language are things that either already exist, or for any well designed application be a non-issue. As others have noted, "advanced primitives" is an oxymoron. This product screams of something inept managers want to use because they think it is the latest and greatest thing and don't know any better.
        • Yep, I agree that the language seems pointless, but you'd have a way better reception if you criticised the language (or the "advanced primitives" phrase), instead of arguing against well known and rightly used jargon.

          • Paradigm is certainly well known but almost never rightly used jargon in the computer software industry. That particular word is most frequently used to describe concepts which hardly meets the definition of a paradigm, rather it is used to describe concepts that have existed for a long time (e.g. the cloud). The original post was quoting The Simpsons (which I should have indicated earlier), and I was using it to illustrate a point. Namely that paradigm is often used by companies to advertise a product a
        • All of the features touted in this language are things that either already exist, or for any well designed application be a non-issue.

          There's more to language design than creating new features. Most languages I've seen introduce few, if any, new or fundamental features, but instead seek different balances in the various tradeoffs involved. Off the top of my head, those tradeoffs include things like raw speed, syntax expressiveness, syntax flexibility, memory consumption, number, breadth and convenience of builtins and number, breadth and convenience of libraries.

          Most languages even seek to remove some mundane aspects of architecting a "we

    • In programming, "paradigm" usually refers to a mindset or a "way of doing things." You might find this [rosettacode.org] useful.

  • So it's got "unusual syntax" AND builtin oxymorons? Sign me up!

  • by Anonymous Coward

    It's true that the Oz runtime system, libraries, and development environment are not as good as mainstream systems like Java. But that's not the point!

    The point is concurrent programming: Ozma (and Oz) have a concurrency model worlds beyond that of Java, and much better even than Scala or Erlang. Simple, easy to program in, and with very few race conditions (zero if your program uses only dataflow and no ports). If you haven't seen this model, you can't imagine how much better it is than the crud that Ja

Mathemeticians stand on each other's shoulders while computer scientists stand on each other's toes. -- Richard Hamming

Working...