rcalco at cortechs.com
Sun May 6 11:55:10 EDT 2001
Wow, don't see too many references to Mozart/Oz -- but I agree: It's a very
powerful environment/language (respectively) that was DESIGNED (versus
"evolved") from the ground up to support multiple programming paradigms, and
support them well. It's really quite an incredible achievement that isn't
hard to appreciate once you get over the hump of its significant learning
curve, and some of its open-source/low-development-budget quirks. It wasn't
built for the "feint of heart"...though its creators are, like Guido vis a
vis Python, quite certain that the world would be a better place if it was
taught as a first programming language. I don't disagree with them, or Guido
either, for that matter. ;)
The language itself (Oz) isn't exactly what I would call "elegant" or
syntactically easy to learn (not compared to Python, anyway) -- or in any
event the elegance of the language isn't something that jumps out at you
right away until you know what you're looking at -- but it does, as I said,
offer tremendous flexibility and power in the right hands. It lets you fit
the solution to the problem domain, instead of the other way around -- the
way most other languages force you to approach application design, i.e., the
way of Procrustes ("we're using an OOP language, so we'll describe the
problem in OOP terms" vs. "this really is a problem that lends itself to OOP
analysis, so we'll use the OOP aspects of the language for this piece of the
(The classic "I have a hammer so everything is a nail" syndrome...with
Mozart, you have a more-or-less complete toolbox and actually have to pick
and choose the right tool for the job. That really is it's primary value
proposition, so far as I'm concerned, especially when the problem domain is
suited to declarative programming (a la Prolog), which neither Java nor
Python nor C/C++ really support. Mozart excels as a cross platform
substitute for Prolog-style languages, ideally suited for things like
intelligent mobile agents and distributed component-based expert-systems. )
But the fact that it truly does support OOP, and procedural, and
declarative, and GUI (via Tk), and about a half a dozen other paradigms, and
it is completely free and extensible (like Python) in C, makes it a great
one-stop shop kind of language. The difficulty of mastering the language has
less to do with syntax/symantics than it does getting used to the many
different styles of programming it supports... knowing when to use what
paradigm lands you smack dab in the heart of computer science at the highest
altitudes. Not every programmer likes to climb that dark and dangerous
cliff... most get stuck in some one True Way of doing things, where
everything is "obvious" and there's a large community of folks around to
reinforce that illusion (Java's a perfect example). This is fine for a
technician, but a *real* software engineer in the highest, grandest, most
idealized sense of the term really ought to have broader horizons, IMHO.
Programming in Mozart is a lot like mountain climbing -- you gotta be just a
little nuts and willing to endure the solitude of obscure and distant
landscapes and breath thinner air to do it, but ah, the sights you see!
(BTW, I still admire and use Python, don't get me wrong. I'm just very
impressed by Mozart and figured I'd take the occasion to extoll its many
virtues since raj brought it up... )
Check it out at:
Download and install it,
then check out some of the interesting online demos:
# -----Original Message-----
# From: python-list-admin at python.org
# [mailto:python-list-admin at python.org]On Behalf Of raj
# Sent: Saturday, May 05, 2001 10:09 PM
# To: python-list at python.org
# Subject: Re: Beginner's Language?
# Education is different from vocational training.
# Vocational training is for plumbers and those who have to
# Education is about understanding the fundamentals and the theory that
# underlies the subject / the system / the "all".
# Education is meant for those capable of understanding the
# fundamentals and the theory that underlies the subject / the system /
# the "all".
# In this context, I stand by my previous statements:
# Lisp, Scheme, subsetted Ada, Smalltalk , Ruby , Python (and if
# approached judiciously, even Java and C++) can be used usefully as a
# language of discourse.
# Perl while admirable as a tool for sys admins and wannabe-hackers [
# do you want your child to just become a sys-admin ? :-) ] is a
# linguistic mishmash that tries to be all things to all programmers
# and ends up becoming ( again to quote Larry Wall ) a "Pathologically
# Eclectic Rubbish Lister".
# If you really want to teach children to use a multiparadigm language,
# try Oz / Mozart. It is has functional, object oriented, logic and
# constraint based, features and has concurrency built in. Confusing ?
# Yes ! But unlike Perl, Mozart was DESIGNED and did not grow by a
# process of uglification / accretion.
# Accretion is not necessarily bad. Just look at Lisp with it brilliant
# metaobject protocol, multiple dispatch and CLOS. But to contemplate
# teaching Perl or Basic to children.........
# Phaugh !
More information about the Python-list