You are on page 1of 5

LENGUAJE Y PARADIGMAS DE LA PROGRAMACION, JULIO 2013

Lenguaje de Programaci on OZ
Cristi an Mauricio Fa undez Maripangue
Saarland, el Instituto Sueco de Ciencias de la Computaci on, y la Universidad Cat olica de Louvain). Finalmente en 2005, el desarrollo de Mozart queda a cargo de un grupo base, el Tablero de Mozart, con el n de expandir los m argenes de desarrollo de Mozart. 2) Caracter sticas especiales: Oz posee variadas carac nico en la forma en la cual est ter sticas que lo hacen ser u a dise nado. Entre las caracter sticas m as llamativas est an: Esot erico o ex otico: Se dice que un lenguaje posee esta caracter stica cuando son creados por el pasatiempo de los desarrolladores, quienes buscan crear lenguajes alejados del razonamiento humano intentando, a la vez, conseguir que dicho lenguaje sea un Turing Completo. Este concepto es aplicado cuando algo posee un poder computacional equivalente con la m aquina universal de Turing. Kernel: Un kernel en un lenguaje de programaci on es un lenguaje base del mismo, es decir, en t erminos simples se puede considerar como la gram atica base del lenguaje, la cual permite extenderlo hacia cada tipo de aplicaci on que se desea realizar. Dado esto, los lenguajes con kernel se denominan lenguaje expandibles. El kernel de Oz se presenta a continuaci on: <Statement> ::= <Statement1> <Statement2> | X = f(l1:Y1 ... ln:Yn) | X = <number> | X = <atom> | X = <boolean> | {NewName X} | X = Y | local X1 ... Xn in S1 end | proc {X Y1 ... Yn} S1 end | {X Y1 ... Yn} | {NewCell Y X} | Y=@X | X:=Y | {Exchange X Y Z} | if B then S1 else S2 end | thread S1 end | try S1 catch X then S2 end | raise X end Multiparadigma: Se dice que un lenguaje es multiparadigma cuando es capaz de utilizar m as de un paradigma de programaci on. 3) Multiparadigma: Oz, como ya se ha mencionado, est a creado en base a varios paradigmas de programaci on, sin embargo, su enfoque central haya silo en el paradigma concurrente y distribuido con tintes de orientaci on a objetos

AbstractOz es un lenguaje multiparadigma y a la vez, es un lenguaje esot erico que puede combinar en sus programas tantas herramientas que los lenguajes m as estructurados no pueden. Bjarne Stroustrup (famoso por desarrollar el lenguaje de Segun programaci on de C++) permite crear programas usando m as de un estilo de programaci on. Conceptos ClaveMultiparadigma, esot erico, kernel, programaci on l ogica, funcional, imperativa, orientada a objetos, con restricciones, distribuida, concurrente.

I. I NTRODUCCI ON Z es un lenguaje de programaci on multiparadigma que brinda a sus desarrolladores la oportunidad de crear programas utilizando varios estilos de programaci on, como son orientada a objetos/funcional/l ogica/imperativa/con restricciones/distribuida/concurrente. Dada su variabilidad de estilo, este lenguaje fue concebido para el dise no de aplicaciones avanzadas, concurrentes, redes, tiempo real, reactivas, entre otras. Pero sus caracter sticas no llegan solo hasta aqu , tambi en es caracter stico de este lenguaje la utilizaci on de un kernel del lenguaje, adem as de poseer la caracter stica de ser un lenguaje esot erico (caracter sticas detalladas posteriormente). Como en todos los lenguajes, el ejemplo introductorio es hello world, en Oz, dicha frase ser a implementada como:

{Browse Hello World} %o tambien {Show Hello World} Julio 4, 2013 II. O Z A. Historia y Caracter sticas En esta secci on se detallar an los aspectos m as relevantes de este lenguaje en cuanto a historia, caracter sticas que lo hacen diferente a otros lenguajes y especicaciones respecto a los conceptos claves que permiten conocer el funcionamiento (de forma global) de Oz. 1) Historia: El lenguaje de programaci on Oz nace en 1990 en la Universidad de Saarland en los laboratorios de Programaci on de Sistemas con el n de crear un lenguaje que pudiese combinar m ultiples herramientas de otros lenguajes para darle la posibilidad de desarrollar software de diversas formas. Originalmente fue creado por el profesor Gert Smolka y sus estudiantes, sin embargo pasaron a nos antes que otro equipo de desarrollo lo tomara y mejorara, lo que ocurri o en 1996 con el grupo de investigaci on de Seif Haride en el Instituto Sueco de Ciencias de la Computaci on. Continuando en el tiempo, en 1999 el desarrollo de Oz se hace cont nuo a cargo del Consorcio Mozart (compuesto por Universidad de

LENGUAJE Y PARADIGMAS DE LA PROGRAMACION, JULIO 2013

y funcional, sin embargo Oz presenta muchas formas de desarrollo que son soportados por los paradigmas que se detallan a continuaci on. Orientado a Objetos: Utiliza la interacci on de objetos instanciados de clases, con el n de disminuir el nivel de acoplamiento de los programas, dado que se puede distribuir en m odulos. Aqu un breve ejemplo: declare ClaseEjemplo local Atributo in Atributo = Hola end Funcional: Utiliza funciones con retornos para cumplir con los requisitos de los programas, si bien no utiliza asignaci on estructurada ni ciclos while/for, suple esta ausencia con la implementaci on de nuevas funciones y el uso de la recursi on. Aqu un breve ejemplo: fun{AndThen VariableX VariableY} if {VariableX} then {VariableY} else false end end L ogico: Se basa en funciones de predicado, las cuales poseen una ndole binaria, solo retornan true o false. Oz es capaz de distinguir entre estilos dirigidos y no dirigidos de este tipo de paradigma declarativo, por lo tanto, permite especicar sem antica l ogica de un programa separado de su estrategia de resoluci on. Imperativo: Se basa en instrucciones que van sentenciando los estados del programa as como sus condiciones de corte. T picamente se asocia este paradigma al hecho de leer o construir una receta de cocina. B asicamente sus ejecuciones son paso a paso. Un ejemplo simple es: ... C = 1 {Show Hola Mundo} ... Con Restricciones: Las relaciones entre variables est an dadas por restricciones o ecuaciones. Oz permite a sus desarrolladores restringir variables l ogicas, dominios ni rboles y restricciones de registro. tos, conjuntos nitos, a Ejemplo son los dominios booleanos (solo poseen true o false como respuesta), dominios en variables enteras y racionales, entre otros. Distribuido: Est a enfocado en desarrollar sistemas distribuidos, abiertos y tolerantes a fallos. Su uso es com un en los software de redes. La caracter stica de los lenguajes que utilizan este paradigma es que el sistema puede tener acceso total al hardware. Concurrente: B asicamente permite la ejecuci on de varias tareas simult aneas. Est a rmemente relacionada con la programaci on paralela (llamada tambi en paralelismo). 4) Caracter sticas del Lenguaje: El lenguaje presenta las siguientes caracter sticas que permiten comprender mejor su funcionamiento, como son su tipado, scope, forma de ejecutar y tipo de evaluaci on de funciones. Tipado: Es un lenguaje fuertemente tipado, aunque no se necesite una funci on de declaraci on de las variables. Por

ende, si X=3 no se puede colocar X=hola. En caso de ejecutar el nuevo X, se lanzar a de inmediato un error en tiempo de ejecuci on. Scope: Oz posee un Lexical Scope (tambi en llamado est atico) ya que el valor de las variables dentro de una funci on o procedimiento viven y mueren all , independiente que posean el mismo nombre que una variable global. local Imprimir X Y in proc{Imprimir X} {Browse X} Y=2 end X = 5 {Imprimir X} {Browse Y} end En este ejemplo imprime 5 la primera vez y 2 la segunda vez (con Browse), dado que Y es asignado en el procedimiento Imprimir. Ahora bien, si X=2 es declarado al interior de Imprimir, lanzar a error al imprimir Browse X porque predominan las asignaciones y decir X=5 y luego X=2 no es aceptable. Compilado: Es un lenguaje compilado y no interpretado, el cual utiliza como compilador de Sistema de Compilaci on Mozart. Oz es conocido por ser compatible con la mayor a de los SO Unix y tambi en en Windows. Lazy evaluation: Posee una Lazy evaluation ya que solo ejecuta y eval ua las acciones que son llamadas. Por ende, en caso de encontrar alg un tipo de error, como por ejemplo intentar cambiar el tipado de una variable, el compilador lanzar a el error en tiempo de ejecuci on. Si dicha variable no es usada nunca, nunca lanzar a el error. 5) Ventajas y desventajas en el uso de Oz: Este lenguaje funciona especialmente en aplicaciones de redes y tiempo real, puesto que al utilizar mayormente el paradigma concurrente rea (en especial y distribuido, sus propiedades sobre esta a redes) se maximiza. Adem as es apoyado por el paradigma orientado a objetos el cual le brinda propiedades como objetos, clases abstractas y herencia. Al ser multiparadigma, puede ser utilizado para solucionar casi cualquier problema, sin embargo, una de sus caracter sticas lo hace poco apetecible para los desarrolladores: Es un Lenguaje Esot erico. Esta caracter stica especial lo hace poseer una sintaxis poco afable para el programador, por lo que es mejor utilizar otros lenguajes en las aplicaciones que se orienten en el uso de paradigmas mas tradicionales como orientaci on a objetos e imperativo. En denitiva, Oz es altamente recomendable para programas que requieran un alto nivel de exibilidad. B. Funcionamiento Ahora se detallar an los aspectos m as b asicos de la sintaxis del lenguaje Oz, tales como variables, funciones, procedimientos, entre otros. Resulta una extra neza no encontrar ciclos en

LENGUAJE Y PARADIGMAS DE LA PROGRAMACION, JULIO 2013

este lenguaje, dado que se pueden remplazar con los otros paradigmas con t ecnicas como recursi on. 1) Variables: La forma de declarar variables dentro de Clases es con la funci on local la cual declara en primer lugar dichas variables. local A B in .... .... end Se aprecia como las variables empiezan con may usculas y se separan con simples espacios. Luego se les puede asignar un valor. local A B C D end A = = = = B C D in 5 5.5 Hola Mundo &t

determinada acci on, es decir, los procedimientos son a Oz como los m etodos son a Java. Su sintaxis est a denida por: proc{Nombre A B ... Z ... Var ... Etc} ... A = 1 ... end La funci on predenida proc se encarga de la construcci on e inicio del procedimiento, a la vez que end se encarga de marcar su t ermino. En el interior del procedimiento puede ir cualquier tipo de sentencia. Cabe se nalar que el nombre de dicho procedimiento se coloca al inicio de las llaves y es seguido por los atributos, los cuales son separados con espacios. Existen adem as los llamados procedimientos an onimos los cuales son utilizados para usar los procedimientos como variables, para poder darles privacidad en una clase determinada. Pro = proc{$ A B} ... end Eso es igual a: proc{Pro A B} ... end Sin embargo, pueden ser incluidos en la declaraci on de atributos conjunto a la declaraci on instant anea de variables. local Pro = proc{$ A B} {Browse A+B} end A = 1 B = 2 in {Pro A B} end 4) Case: En la mayor a de los lenguajes existe la sentencia case, la cual cumple la misma funci on que varios if consecutivos. Dicha funci on es expresada de la siguiente forma: case E of AccionA then S1 [] AccionB then S2 [] AccionC then S3 [] ... else S end De esta forma, si se cumple AccionA entonces termina, de lo contrario y dada la sintaxis [] continua con la AccionB y as sucesivamente hasta encontrar un else y nalizar si las condiciones no se cumplen. 5) Funciones: Las funciones son herramientas similares a los procedimientos, pero presentan un retorno diferente, el cual es una expresi on en la funci on y un comunicado en el procedimiento. fun {AndThen A B} if {A} then {B} else false end end

De este modo se inicializan variables como enteros, oat, strings y char, las cuales corresponden a las funciones b asicas. Caso especial son las listas, en donde pueden declararse de distintas formas, las cuales son: local A B C D E end A = = = = = B C D E in [1 2 3] 1|2|3|nil 1|2|3|x "o z" [o z]

En A y B se imprimir a lo mismo, la lista [1 2 3], en el caso C agrega un x al nal, para t erminos de corte [1 2 3 x]. En el D imprime la notaci on del string, es decir enteros, en este caso es [79 90] y nalmente E es una lista de string, la cual contiene [o z]. Para concatenar listas se utiliza |num|nil. 2) Condiciones: Las condiciones b asicas son if y else, y combinando con la declaraci on de variables, podemos crear l ogica de primer orden. local A B in A = 2 B = 3 if A >= B then {Browse A} else {Browse B} end end nfasis que las condiciones no poseen N otese con especial e ning un tipo de se nalizaci on de identaci on, s olo Oz lo reconoce dado espacios y caracteres bien marcados (como el then). Adem as todas las condicionales (y en general en todo Oz) se termina con un end la sentencia. Se puede ademas usar la sentencia elseif y se puede evitar el uso del else al terminar con end luego del if. 3) Procedimientos: Llamados Procedural Abstraction son los procedimientos que se realizan en Oz para una

LENGUAJE Y PARADIGMAS DE LA PROGRAMACION, JULIO 2013

Mientras que en un procedimiento, debiese incluirse la variable del comunicado, por ende seria: proc{AndThen A B C} C = if {A} then {B} else false end end 6) Clases: Las clases en Oz, al igual que en otros lenguajes, poseen un conjunto de m etodos y atributos para subsistir. Si bien existen los procedimientos, estos son locales y no permiten su llamada desde fuera de la clase, por ende, existen m etodos que si pueden ser llamados desde fuera. El ejemplo m as simple de sintaxis de clases es: declare class Clase attr Atributo meth init(ValorAtributo) Atributo:=ValorAtributo end meth imprimir (Browse @Atributo) end end En este ejemplo es posible observar que no existe un Constructor espec co de la clase, sino que es un m etodo llamado init (pudo llamarse de cualquier forma) en donde attr corresponde a la declaraci on del atributo de la clase, meth corresponde a los m etodos de la misma. Las clases pueden extenderse tanto como se quiera y utilizar en ellas procedimientos, condicionantes y funciones como se estime conveniente. No obstante hay que se nalar que los atributos se declaran hacia el lado (si es que es m as de uno) y se utiliza la notaci on como una especie de this en Java para poder referenciar los atributos al interior de un m etodo. 7) Objetos: Son la forma de abstracci on de las clases, las cuales permiten otorgarle todas las propiedades del paradigma orientado a objetos. La forma en la que se instancia un objeto, es (y utilizando la clase construida con anterioridad):

{ObjetoHe imprimir} end Lo que dada la herencia, utiliza el m etodo imprimir de la clase padre e imprime Hi. Cabe se nalar que si se escribe un m etodo con el mismo nombre y rma en la clase hijo, se sobreescribir a, por lo que al momento de llamarlo, se utilizar a el que se encuentre en la clase hijo y no en la clase padre. 9) Comentarios: Nunca es irrelevante mencionar la forma de comentar en un lenguaje, por ende se hace necesario dejarlo expl citamente documentado. Los comentarios en Oz se hacen con % %Este es el procedimiento que compara %quien es mayor, A o B proc{Pro A B} ... end C. Ejemplos Se implementar a una clase con herencia. declare class Animal attr x y meth init(ValorX ValorY) x := ValorX y := ValorY end meth mover(MovX MovY) x := @x+MovX y := @y+MovY {Browse [Est a en X= @x est a en Y= @y]} end end declare class Perro from Animal meth ladrar {Browse guau} end end

local Objeto in local Perro in Objeto = {New Clase init(Hola Mundo)} Perro = {New Perro init(0 0)} {Objeto imprimir} {Perro mover(1 2)} end {Perro ladrar} end 8) Herencia: La herencia es tratada de forma simple por Oz, la cual solo debe a nadir a la declaraci on de la clase: En este ejemplo, el perro pasar a de estar en la posici on (0,0) a la posici on (1,2) y ladrara (guau). Se utiliz o herencia para declare class HeredoDe from Clase este ejemplo, a la vez que muestra abstracci on y comprueba el meth nohagonada(Nada) paradigma orientado a objetos. Para continuar con un ejemplo skip cl asico, el Fibonacci en Oz: end end fun{Fib X} case X Dada la uni on de herencia por la palabra from, la clase of 0 then 1 HeredoDe posee los atributos y m etodos de la clase princial [] 1 then 1 Clase. else thread {Fib X-1} end + local ObjetoHe in {Fib X-2} end ObjetoHe = {New HeredoDe init(Hi)} end

LENGUAJE Y PARADIGMAS DE LA PROGRAMACION, JULIO 2013

Aqu se aprecia un claro ejemplo del paradigma de concurrencia, el cual, gracias al thread, permite una bifurcaci on en la ejecuci on, dando la posibilidad de ejecuci on a los subprocesos llamado. As es construida la recursi on en Oz. III. C ONCLUSI ON B asicamente se puede concluir que Oz presenta una gran gama de herramientas para resolver problemas y dado que es multiparadigma no es restrictivo en cuanto a las soluciones. Si bien lo expuesto es una peque na parte del lenguaje, se puede apreciar que tiene muchas similitudes con los grandes y famosos lenguaje Java o C#. La sintaxis de Oz es un tanto m as complicada pues no fue concebido con el n de ser masivamente desarrollado. Finalmente agregar que es sumamente recomendable utilizar este lenguaje en tareas que requieran mucha exibilidad por parte del software, aprovechando al m aximo la concurrencia de este lenguaje (que permite utilizar paralelismo por ejemplo), dado esto, es utilizado en la actualidad en el desarrollo de sistemas de redes. R EFERENCIAS
N, Tutorial of Oz, Versi [1] S EIF H ARIDI Y N ILS F RANZ E on 1.4.0, 2008. [2] A BDIEL E. C ACERES G ONZ ALEZ , Lenguajes de Programaci on, Instituto Tecnol ogico de Monterrey, M exico, 2004. [3] El sistema de Programaci on Mozart, Sitio ocial (http://www.mozart-oz. org/) , T [4] O SVALDO C L UA ecnicas de Programaci on Concurrente II, 2004

You might also like