Announcing Ozma: Extending Scala With Oz Concurrency
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."
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."
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.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
It seems it's the right moment for new languages to take over the cloud.
I quite doubted it when the usual Gartner analyst said it, but the facts are now here.
Among the recently released solutions, you can also check out Opa at http://opalang.org
I don't like Ozma, it takes the fun out of functions :P
Don't say that or Ozma Bin Laden's zombie will come for you.....
For a minute I thought this was another post about bitcoins.
I love a good pseudo-oxymoron.
That is a great name for a programming language. http://www.youtube.com/watch?v=hySoCSoH-g8
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.
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.")
You're special forces then? That's great! I just love your olympics!
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?
We have certain "personalities" that use Scala, needless to say I've never seen anyone finish a project with Scala with it that was 10x over budget/time and totally over engineered.
... When you create languages that have bizarre syntax, you alienate developers that easily want to translate their current skill set AS WELL AS existing libraries! The reality of development is that there exist many libraries on *nux/Windows that you need to use in order to be productive. If you have to re-create the wheel from scratch in a language that doesn't fit the way most people program, you are not going to have a successful language. It needs to have a 'killer app,' and it won't have that without finding a way to join other languages instead of being its own island.
I have had the displeasure of using Oz, and I won't touch that ever again unless it makes me an offer I can't refuse. I congratulate them on their academic achievement and their intellectual exhibition, but no thank you from a real-world programmer.
I remember I once took a lecture on alternative programming paradigms. One of the sections of the class was about Oz and we had to write a small interpreter. Needless to say, it is by far the worst programming language I have used and I cannot understand how someone could pick up that nightmarish muck. Not even Modula 3 was as bad as Oz
So it's got "unusual syntax" AND builtin oxymorons? Sign me up!
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.
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 Java gives you. The purpose of Ozma is to make it easy for developers to learn about this model. That's why we picked Scala as the foundation for Ozma, because Scala is a well-designed and well-implemented language with a fairly large community, and it has some momentum as a possible successor to Java. We hope that Scala programmers will take a look at Ozma and like what they see.