martes, 30 de noviembre de 2010

Lenguaje de programación Oz

Oz es un lenguaje multiparadigma diseñado para aplicaciones avanzadas, concurrentes, de redes, en tiempo real, y reactivas.

Provee de los componentes de un lenguaje orientado a objetos, incluyendo estado, tipos de datos abstractos, objetos, clases y herencia. Posee componentes de un lenguaje funcional, incluyendo sintaxis composicional, procedimientos o funciones de primera clase y ámbito léxico. Provee de los componentes de un lenguaje lógico y con restricciones, incluyendo variables lógicas, restricciones, construcciones disyuntivas, y mecanismos de búsqueda programables. Y permite a los usuarios la creación dinámica de cualquier nu'mero de threads o hilos de ejecución.

El sistema de programación mozart ha sido desarrollado por investigadores de DFKI (Deutsches Forschungszentrum Für Künstliche Intelligenz), SICS (Swedish Institute of Computer Science), University of the Saarland, UCL (the Université Catholique de Louvain).

Aquí hay un ejemplo de la sintaxis del lenguaje:

local X Y Z in
   X = 5 Y = 10
   if X >= Y then Z = X else Z = Y end
end

La sintaxis es separada por bloques de código en donde la primera parte es una declaración de variables (que pueden tomar valores regresados por funciones) y la segunda parte (separada por la palabra especial "in") consiste en una serie de procedimientos que se ejecutarán.

Este es mi programa de para calcular un elemento de la serie fibonacci y el factorial de algún número.


%Esto es un comentario

/**Esto es un 
comentario extendido
**/

local Fac Res in
   
proc {Fac N Res} %procedimiento
      if N < 2 then Res = 1
               else Res = N * {Fac N - 1} end
   end
   {Fac 5 Res%llama al procedimiento
       {Browse Res}
end

local Fib 
   fun {Fib N} %funcion
     case N %similar a switch case en C
     of 0 then 0
     [] 1 then 1
     else {Fib N - 1} + {Fib N - 2} end
   end
in
   
{Browse {Fib 7}} %llama a la funcion
end


Recursos para aprender:

2 comentarios:

  1. hola tengo este ejercicio si me pueden colaborar

    Escriba el procedimiento {ForAllTail Xs P} que aplica el procedimiento P a cada sublista no vacıa
    de Xs. La aplicacion del procedimiento {ForAllTail [X1 ... Xn] P} corresponde a la secuencia de sentencias:
    {P [X1 X2 ... Xn]}
    {P [X2 ... Xn]}
    ...
    {P [Xn]}

    ResponderEliminar
    Respuestas
    1. parcero lo pudo hacer? colaborame enviandolo. correo cgiohidalgo@gmail.com

      Eliminar