Skip to content
 

OZ – the vastly different programming language

I finally took some time recently to inspect a language I’d been intrigued by for a while. That language is OZ, the implementation of which is called the Mozart Programming System. It is a self described multi-paradigm programming language. This concept both arouses curiosity and suspicion in me. My curiosity being that there is a possibility that elegantly merging different styles of programming could create a very powerful development environment, my suspicion being that this is a very difficult thing to do without leveraging existing languages and there is also a danger that you pollute all that is good about the separate programming paradigms you are trying to incorporate.

Nevertheless I tried to be open minded and receptive of the platform and relate it to possible uses I can see emerging for it. However after some inspection I can only conclude that while the intention is good and a lot of hard work has obviously gone in to Mozart, the current version has many areas in which it could be criticised. Firstly and most notably, the language is very unlike any other language you may have used previously, which I suppose is what you would expect if you were trying to merge so many different ideas. However this is instantly going to turn many less fastidious programmers off. I actually think this may be the intention in the sense that the authors of Mozart are not aiming at a mass market. Unfortunately I can’t help thinking this is a bad move if you want to drastically change people’s opinions. A better strategy might have been to gently break people in to new programming constructs in the context of familiar scenarios. Even in the fast moving tech industry it takes a long time for people to move on from the recognised norm. Another issue I can see which will not help adoption of the language is its lack of really practical usage examples and of familiar API features. For example when looking at a promising ‘servlet’ implementation in the tutorial I was a bit disappointed when the code was essentially transformed into a CGI script for installation on a web server. This is old technology and leaves one wondering – where is the .NET and Java EE competition in Mozart? Software industry developers want to know about data exchange and persistence and how they can deploy their applications. As far as I can see these are somewhat neglected areas. From a theoretical point of view some of the benefits offered by a multi-paradigm language seem attractive and no doubt the Mozart platform does have some very real uses. I just can’t see how it can compete on all frontiers, particularly web  based business applications.

My final concern is that in combining programming paradigms you risk polluting the very nature of them. Object-oriented programming is not just a means to an end, it is a view of how to model abstractions of real world entities: as objects containing data and operations which govern themselves. Logic programming is not just a convenient way of expressing logical statements, it provides a domain in which everything is represented in predicate logic. The question is can you really combine such differing views on the ‘problem domain’ (or ‘universe of discourse’ as it is sometimes called) and do you lose anything in the process? Without more examples of Mozart programs written in the intended manner it is difficult to tell.

I may be missing a big chunk of the puzzle, perhaps multi-paradigm programming really is the way forward. From my own perspective though I think the interoperability provided by web services is where programming is going in the future and I value common communication standards between languages over combining language features in one monolithic place. However it is a very interesting language and a provides genuinely different approach to programming. The platform is clearly mature enough for anyone interested to develop useful applications with, but it is a big investment in terms of learning curve and probably also in time spent writing your own APIs.

Leave a Reply