Cristian Faundez Lenguaje Oz PDF
Cristian Faundez Lenguaje Oz PDF
Cristian Faundez Lenguaje Oz PDF
Lenguaje de Programación OZ
Cristián Mauricio Faúndez Maripangue
y funcional, sin embargo Oz presenta muchas formas de ende, si X=3 no se puede colocar X=”hola”. En caso de
desarrollo que son soportados por los paradigmas que se ejecutar el nuevo X, se lanzará de inmediato un error en
detallan a continuación. tiempo de ejecución.
• Orientado a Objetos: Utiliza la interacción de objetos • Scope: Oz posee un Lexical Scope (también llamado
instanciados de clases, con el fin de disminuir el nivel estático) ya que el valor de las variables dentro de una
de acoplamiento de los programas, dado que se puede función o procedimiento viven y mueren allı́, indepen-
distribuir en módulos. Aquı́ un breve ejemplo: diente que posean el mismo nombre que una variable
declare ClaseEjemplo global.
local Atributo in local Imprimir X Y in
Atributo = ’Hola’ proc{Imprimir X}
end {Browse X}
• Funcional: Utiliza funciones con retornos para cumplir Y=2
con los requisitos de los programas, si bien no utiliza end
asignación estructurada ni ciclos while/for, suple esta X = 5
ausencia con la implementación de nuevas funciones y {Imprimir X}
el uso de la recursión. Aquı́ un breve ejemplo: {Browse Y}
fun{AndThen VariableX VariableY} end
if {VariableX} then {VariableY} En este ejemplo imprime 5 la primera vez y 2 la segunda
else false end vez (con Browse), dado que Y es asignado en el pro-
end cedimiento Imprimir. Ahora bien, si X=2 es declarado al
• Lógico: Se basa en funciones de predicado, las cuales interior de Imprimir, lanzará error al imprimir Browse X
poseen una ı́ndole binaria, solo retornan true o false. porque predominan las asignaciones y decir X=5 y luego
Oz es capaz de distinguir entre estilos dirigidos y no X=2 no es aceptable.
dirigidos de este tipo de paradigma declarativo, por lo • Compilado: Es un lenguaje compilado y no interpretado,
tanto, permite especificar semántica lógica de un pro- el cual utiliza como compilador de “Sistema de Compi-
grama separado de su estrategia de resolución. lación Mozart”. Oz es conocido por ser compatible con
• Imperativo: Se basa en instrucciones que van senten- la mayorı́a de los SO Unix y también en Windows.
ciando los estados del programa ası́ como sus condiciones • Lazy evaluation: Posee una Lazy evaluation ya que solo
de corte. Tı́picamente se asocia este paradigma al hecho ejecuta y evalúa las acciones que son llamadas. Por
de leer o construir una receta de cocina. Básicamente sus ende, en caso de encontrar algún tipo de error, como por
ejecuciones son paso a paso. Un ejemplo simple es: ejemplo intentar cambiar el tipado de una variable, el
... compilador lanzará el error en tiempo de ejecución. Si
C = 1 dicha variable no es usada nunca, nunca lanzará el error.
{Show ’Hola Mundo’}
... 5) Ventajas y desventajas en el uso de Oz: Este lenguaje
• Con Restricciones: Las relaciones entre variables están funciona especialmente en aplicaciones de redes y tiempo real,
dadas por restricciones o ecuaciones. Oz permite a sus puesto que al utilizar mayormente el paradigma concurrente
desarrolladores restringir variables lógicas, dominios fini- y distribuido, sus propiedades sobre esta área (en especial
tos, conjuntos finitos, árboles y restricciones de registro. redes) se maximiza. Además es apoyado por el paradigma
Ejemplo son los dominios booleanos (solo poseen true orientado a objetos el cual le brinda propiedades como objetos,
o false como respuesta), dominios en variables enteras y clases abstractas y herencia. Al ser multiparadigma, puede ser
racionales, entre otros. utilizado para solucionar casi cualquier problema, sin embargo,
• Distribuido: Está enfocado en desarrollar sistemas dis- una de sus caracterı́sticas lo hace poco apetecible para los
tribuidos, abiertos y tolerantes a fallos. Su uso es común desarrolladores:
en los software de redes. La caracterı́stica de los lenguajes • Es un Lenguaje Esotérico.
que utilizan este paradigma es que el sistema puede tener Esta caracterı́stica especial lo hace poseer una sintaxis poco
acceso total al hardware. afable para el programador, por lo que es mejor utilizar otros
• Concurrente: Básicamente permite la ejecución de varias lenguajes en las aplicaciones que se orienten en el uso de
tareas simultáneas. Está firmemente relacionada con la paradigmas mas tradicionales como orientación a objetos e
programación paralela (llamada también paralelismo). imperativo.
En definitiva, Oz es altamente recomendable para programas
4) Caracterı́sticas del Lenguaje: El lenguaje presenta las que requieran un alto nivel de flexibilidad.
siguientes caracterı́sticas que permiten comprender mejor su
funcionamiento, como son su tipado, scope, forma de ejecutar B. Funcionamiento
y tipo de evaluación de funciones. Ahora se detallarán los aspectos más básicos de la sintaxis
• Tipado: Es un lenguaje fuertemente tipado, aunque no se del lenguaje Oz, tales como variables, funciones, procedimien-
necesite una función de declaración de las variables. Por tos, entre otros. Resulta una extrañeza no encontrar ciclos en
LENGUAJE Y PARADIGMAS DE LA PROGRAMACIÓN, JULIO 2013 3
este lenguaje, dado que se pueden remplazar con los otros determinada acción, es decir, los procedimientos son a Oz
paradigmas con técnicas como recursión. como los métodos son a Java. Su sintaxis está definida por:
1) Variables: La forma de declarar variables dentro de
Clases es con la función local la cual declara en primer lugar proc{Nombre A B ... Z ... Var ... Etc}
dichas variables. ...
A = 1
local A B in ...
.... end
....
end La función predefinida proc se encarga de la construcción e
inicio del procedimiento, a la vez que end se encarga de marcar
Se aprecia como las variables empiezan con mayúsculas y se su término. En el interior del procedimiento puede ir cualquier
separan con simples espacios. Luego se les puede asignar un tipo de sentencia. Cabe señalar que el nombre de dicho
valor. procedimiento se coloca al inicio de las llaves y es seguido por
local A B C D in los atributos, los cuales son separados con espacios. Existen
A = 5 además los llamados procedimientos anónimos los cuales son
B = 5.5 utilizados para usar los procedimientos como variables, para
C = ’Hola Mundo’ poder darles privacidad en una clase determinada.
D = &t Pro = proc{$ A B} ... end
end
Eso es igual a:
De este modo se inicializan variables como enteros, float,
strings y char, las cuales corresponden a las funciones básicas. proc{Pro A B} ... end
Caso especial son las listas, en donde pueden declararse de
distintas formas, las cuales son: Sin embargo, pueden ser incluidos en la declaración de atrib-
utos conjunto a la declaración instantánea de variables.
local A B C D E in
A = [1 2 3] local
B = 1|2|3|nil Pro = proc{$ A B}
C = 1|2|3|x {Browse A+B}
D = "o z" end
E = [’o’ ’z’] A = 1
end B = 2
in
En A y B se imprimirá lo mismo, la lista [1 2 3], en el caso {Pro A B}
C agrega un x al final, para términos de corte [1 2 3 x]. end
En el D imprime la notación del string, es decir enteros, en
este caso es [79 90] y finalmente E es una lista de string, 4) Case: En la mayorı́a de los lenguajes existe la sentencia
la cual contiene [o z]. Para concatenar listas se utiliza |num|nil. case, la cual cumple la misma función que varios if consecu-
tivos. Dicha función es expresada de la siguiente forma:
2) Condiciones: Las condiciones básicas son if y else, y
combinando con la declaración de variables, podemos crear case E of AccionA then S1
lógica de primer orden. [] AccionB then S2
[] AccionC then S3
local A B in [] ...
A = 2 else S end
B = 3
if A >= B then {Browse A} De esta forma, si se cumple AccionA entonces termina, de
else {Browse B} end lo contrario y dada la sintaxis [] continua con la AccionB y
end ası́ sucesivamente hasta encontrar un else y finalizar si las
condiciones no se cumplen.
Nótese con especial énfasis que las condiciones no poseen
ningún tipo de señalización de identación, sólo Oz lo reconoce 5) Funciones: Las funciones son herramientas similares a
dado espacios y caracteres bien marcados (como el then). los procedimientos, pero presentan un retorno diferente, el
Además todas las condicionales (y en general en todo Oz) se cual es una expresión en la función y un comunicado en el
termina con un end la sentencia. Se puede ademas usar la procedimiento.
sentencia elseif y se puede evitar el uso del else al terminar
con end luego del if. fun {AndThen A B}
if {A} then {B}
3) Procedimientos: Llamados “Procedural Abstraction” else false end
son los procedimientos que se realizan en Oz para una end
LENGUAJE Y PARADIGMAS DE LA PROGRAMACIÓN, JULIO 2013 4
R EFERENCIAS
[1] S EIF H ARIDI Y N ILS F RANZ ÉN, Tutorial of Oz, Versión 1.4.0, 2008.
[2] A BDIEL E. C ÁCERES G ONZ ÁLEZ, Lenguajes de Programación, Instituto
Tecnológico de Monterrey, México, 2004.
[3] El sistema de Programación Mozart, Sitio oficial (http://www.mozart-oz.
org/)
[4] O SVALDO C L ÚA, Técnicas de Programación Concurrente II, 2004