Disciplina de Tipos
Disciplina de Tipos
Disciplina de Tipos
Conceptos fundamentales
1.1 Estilos de programacin
Programacin imperativa. Es un estilo de programacin en el que los programas estn
formados por instrucciones que especifican cmo se ha de calcular el resultado.
Programa: secuencia de instrucciones a ser ejecutadas por la mquina.
Asignacin: es la instruccin ms simple que cambia el valor de una variable.
Instrucciones de control: decisin, repeticin.
Ejemplos: Pascal, C/C++, Java, .NET, Perl, Python, etc.
Programacin declarativa.
Programa: especificacin del problema a resolver.
Variables lgicas: no hay asignacin, las variables no varan.
Recursividad en lugar de repeticin.
Lenguaje lgico y matemtico.
Ejemplos: SQL, ProLog, LISP, haskell, BABEL.
Programacin funcional. Es un estilo de programacin cuyo mtodo de computacin es
la aplicacin de funciones a sus argumentos. Los clculos se ven como una funcin
matemtica que hace corresponder entradas y salidas.
Permiten realizar evaluacin paralela y ofrecen facilidades tales como disciplina de
tipos, funciones de orden superior, datos potencialmente infinitos y evaluacin
perezosa.
No hay nocin de posicin de memoria y por lo tanto, necesidad de una instruccin de
asignacin. Los bucles se modelas a travs de recursividad ya que no hay manera de
incrementar o disminuir el valor de una variable.
NOTA: como aspecto prctico casi todos los lenguajes soportan el concepto de variable,
asignacin y bucle.
Ejemplo: Hoja de clculo.
En una hoja de clculo, se especifica cada celda en trminos de los valores de otras
celdas. El objetivo es que debe ser calculado y no en como debe calcularse.
No especificamos el orden en el que las celdas sern calculadas, en cambio obtenemos
el orden que garantiza que l...
1.2. Evaluacin de expresiones
Una expresin es una combinacin de operadores y operandos de cuya evaluacin se obtiene un
valor. Los operandos pueden ser nombres que denoten objetos variables o constantes, funciones,
literales de cualquier tipo adecuado de acuerdo con los operadores u otras expresiones ms
simples. La evaluacin de una expresin da lugar a un valor de algn tipo, una expresin se dice
que es del tipo de su resultado. Ejemplos de expresiones:
a + 5*b
(a >= 0) and ((b+5) > 10)
a
-a * 2 + b
-b + sqrt(b**2 - 4*a*c)
length(s) > 0
Las expresiones se evalan de acuerdo con la precedencia de los operadores. Ante una secuencia
de operadores de igual precedencia, la evaluacin se realiza segn el orden de escritura, de
izquierda a derecha. El orden de evaluacin puede modificarse usando parntesis.
Tipos de expresiones
Dentro de las expresiones distinguimos dos clases segn el tipo de datos que devuelven al
evaluarlas:
Aritmticas: las que devuelven un valor numrico
Lgicas: las que devuelven true o false
Las expresiones se utilizan fundamentalmente en las asignaciones y en las partes condicionales de
las sentencias if, while y repeat.
DISCIPLINA DE TIPOS
Los tipos se infieren, es decir se comprueban, de forma esttica, en tiempo de
compilacin.
En los lenguajes de programacin con disciplina de tipos, cada tipo representa una
coleccin de valores o datos similares. El conocer los tipos de las funciones ayuda a
documentar los programas y evitar errores en tiempo de ejecucin.
Un lenguaje tiene disciplina de tipos si los errores de tipos se detectan siempre es
necesario determinar los tipos de todos los operandos, ya sea en tiempo de compilacin o
de ejecucin
Pascal
Cercano a tener disciplina de tipos pero no realiza comprobacin de tipos en los
registros variantes (incluso puede omitirse la etiqueta discriminatoria en dichos registros)
Ada
Resuelve el problema de los registros variantes realizando comprobacin dinmica de
tipos (slo en este caso)
Tiene una funcin de biblioteca que permite extraer un valor de una variable de cualquier
tipo (como una cadena de bits) y usarlo como un tipo diferente (no es una conversin de
tipos) se trata de una suspensin temporal de la comprobacin de tipos
C
No tiene disciplina de tipos por:
No se realiza comprobacin de tipos sobre las uniones
Permite funciones con parmetros sobre los que no se realiza comprobacin de tipos
Java
Tiene disciplina de tipos (no hay uniones)
ML y Haskell
Poseen disciplina de tipos
Los tipos de los parmetros de las funciones (y de estas mismas) se conocen en tiempo
de compilacin (ya sea por declaracin del usuario o por inferencia de tipos)
Haskell y otros lenguajes funcionales utilizan el sistema de tipos de Milner, que tiene dos
caractersticas fundamentales:
Disciplina esttica de tipos: Los programas bien tipados se pueden conocer en tiempo de
compilacin. Un programa bien tipado se puede utilizar sin efectuar comprobaciones de
tipo en tiempo de ejecucin, estando garantizado que no se producirn errores de tipo
durante el computo.
Polimorfismo: Permite que una misma funcin se pueda aplicar a parmetros de
diferentes tipos, dependiendo del contexto en el que la funcin se utilice.
TIPOS DE DATOS
Tipos de Datos En lenguajes de programacin un tipo de dato es un atributo de una parte
de los datos que indica al ordenador (y/o al programador) algo sobre la clase de datos
sobre los que se va a procesar.
Los Tipos de Datos En un sentido amplio, un tipo de datos define un conjunto de valores y
las operaciones sobre estos valores. Casi todos los lenguajes de programacin
explcitamente incluyen la notacin del tipo de datos, aunque lenguajes diferentes pueden
usar terminologa diferente. La mayor parte de los lenguajes de programacin permiten al
programador definir tipos de datos adicionales, normalmente combinando mltiples
elementos de otros tipos y definiendo las operaciones del nuevo tipo de dato. Por ejemplo,
un programador puede crear un nuevo tipo de dato llamado "Persona" que especifica que
el dato interpretado como Persona incluir un nombre y una fecha de nacimiento.