Mozart 250

Mozart 250

Viernes 27 Ene 2006


El mundo de la música celebra hoy 250 años desde el nacimiento de Wolfgang Amadeus Mozart. Independiente de los gustos musicales de cada uno, no se puede desconocer que Mozart era realmente un super dotado como intérprete y compositor. Pese a que sólo vivió 35 años, compuso 41 sinfonías, 22 óperas y más de 20 conciertos. Es cierto que cantidad no es lo mismo calidad, pero considerando la cantidad de músicos que han sido influenciados por Mozart, la calidad es una de las cosas que menos está en duda.

De todas formas, también quería aprovechar la oportunidad para introducir el lenguaje de programación Mozart >>.

Mozart en realidad es la implementación del lenguaje Oz, pero como hasta ahora es la única, en general se habla de las 2 de forma indistinguible. Es un lenguaje multi-paradigma que arranca de un kernel procedural (que puede usarse como funcional) con variables lógicas que sólo se asignan una vez. Olvídense de cosas como i = i+1.

Ejemplo de código: insertar Key,Value en el árbol binario TreeIn y poner la salida en TreeOut:

proc {Insert Key Value TreeIn ?TreeOut}
   case TreeIn
   of nil then TreeOut = tree(Key Value nil nil)
   [] tree(K1 V1 T1 T2) then 
      if Key == K1 then TreeOut = tree(Key Value T1 T2)
      elseif Key < K1 then T in 
        TreeOut = tree(K1 V1 T T2)
        {Insert Key Value T1 T}
      else T in 
        TreeOut = tree(K1 V1 T1 T)
        {Insert Key Value T2 T}
      end 
   end 
end

Esto cambia bastante la manera de pensar en los algoritmos, pero tiene sus ventajas, sobre todo para trabajar con distintos threads, donde las variables funcionan para sincronizar los procesos. Chao semáforos, monitores y locks. La concurrencia es mucho más fácil con data-flow variables y message-passing. De todas formas el lenguaje agrega después variables con estado, lo que permite construir objetos, que también son basados en clases (a menos que uno haga los propios a partir de clausulas). También tiene soporte para programación distribuída y programación por restricciones. O sea, es realmente multi-paradigma.

Volviendo a Wolfgang. En realidad a mi no me gusta tanto su música. Para mí es el equivalente en música pop dentro de la música clásica. Pero sigo manteniendo mucho respeto por él, ya que me impresiona su capacidad de composición, que le era tan fácil como caminar. Volviendo al lenguaje de programación, a parte del nombre, no tienen casi nada en común, pero quería hablar de los dos aprovechando los 250 años del natalicio. Se reciben comentarios de ambos.