Oz est un langage de programmation permettant d'employer et de combiner différents paradigmes de programmation :
fonctionnel,
procédural et objets,
relationnel et logique,
contraintes,
concurrence massive,
distribution.
Oz fournit par défaut des variables logiques même s'il est possible d'utiliser des variables mutables. De même, l'évaluation est stricte par défaut, mais l'évaluation paresseuse est possible.
L'originalité de ce langage par rapport à d'autres supportant la programmation logique (d'une part) ou concurrente et distribuée (d'autre part, comme Erlang), est l'intégration de ces paradigmes dans un tout cohérent. Une abstraction unique en son genre est fournie par Oz : l'espace de calcul, qui permet d'encapsuler des calculs à des fins spéculatives et permet de combiner les aspects logiques/contraintes, orientation objet et mutabilité, concurrence et distribution, dans le même langage.
Oz est doté d'un ramasse-miettes et d'un système de gestion d'exceptions distribués.
Oz est implémenté par le système Mozart, fournissant un compilateur, une machine virtuelle et un environnement de développement utilisant EMACS pour la partie édition, un débogueur graphique supportant la concurrence et la distribution, un outil d'exploration d'arbres de recherche pour la programmation par contraintes, etc.
Le livre Concepts, Techniques, and Models of Computer Programming (MIT Press, 2004) utilise Oz comme langage principal pour illustrer les différents concepts de programmation. Il existe des cours universitaires de programmation en français basés sur Oz et ce livre.
Ce langage a été développé par trois écoles :
Université catholique de Louvain (UCL - Belgique)
Universität des Saarlandes (Allemagne)
Swedish Institute of Computer Science (Suède)
Remarque : l'origine du nom Oz vient du fameux conte pour enfants, Le Magicien d'Oz.
Oz est basé sur un sous-ensemble du langage, appelé "langage noyau" diposant de peu de types de données qui peuvent être étendus à d'autres, plus
pratiques par le biais d'un sucre syntaxique.