Nothing Special   »   [go: up one dir, main page]

Disciplina de Tipos Compañeros

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 3

DISCIPLINA DE TIPOS

“Los tipos se infieren, es decir se comprueban, de forma estática, en tiempo de


compilación.”
En los lenguajes de programación con disciplina de tipos, cada tipo representa una
colección de valores o datos similares. El conocer los tipos de las funciones ayuda
a documentar los programas y evitar errores en tiempo de ejecución.

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
compilación o de ejecución

 Pascal
• Cercano a tener disciplina de tipos pero no realiza comprobación de tipos en los
registros variantes (incluso puede omitirse la etiqueta discriminatoria en dichos
registros)

 Ada
• Resuelve el problema de los registros variantes realizando comprobación dinámica
de tipos (sólo en este caso)

• Tiene una función 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
conversión de tipos) ⇒ se trata de una suspensión temporal de la comprobación de
tipos

 C
• No tiene disciplina de tipos por:

− No se realiza comprobación de tipos sobre las uniones

− Permite funciones con parámetros sobre los que no se realiza comprobación de


tipos

 Java
• Tiene disciplina de tipos (no hay uniones)

 ML y Haskell
• Poseen disciplina de tipos

• Los tipos de los parámetros de las funciones (y de estas mismas) se conocen en


tiempo de compilación (ya sea por declaración del usuario o por inferencia de tipos)
Haskell y otros lenguajes funcionales utilizan el sistema de tipos de Milner, que tiene
dos características fundamentales:

 Disciplina estática de tipos: Los programas bien tipados se pueden conocer en


tiempo de compilación. Un programa bien tipado se puede utilizar sin efectuar
comprobaciones de tipo en tiempo de ejecución, estando garantizado que no
se producirán errores de tipo durante el computo.
 Polimorfismo: Permite que una misma función se pueda aplicar a parámetros
de diferentes tipos, dependiendo del contexto en el que la función se utilice.

Lenguajes de programación imperativos


Pascal, Ada, C,C++,Java y muchos otros lenguajes de programación son
imperativos. Un programa consiste en una secuencia de ordenes que se ejecutan
una tras otra, modificando los valores de variables por medio de asignaciones. Por
ejemplo, la asignación x:= x+1 incrementa en 1 el valor de la variable entera x.
Además, utilizan funciones.

Lenguajes de programación funcionales


Los programas imperativos contienen asignaciones y otras construcciones que
controlan el orden de ejecución, tales como bucles y llamadas a procedimientos. En
un lenguaje funcional, un programa contiene únicamente definiciones de funciones.
Concretamente, en el lenguaje funcional Haskell las funciones se definen por medio
de ecuaciones, declarando los tipos de sus parámetros y de su resultado.

Familias de lenguajes funcionales


La programación funcional empezó a investigarse en la década de 1960.
Los principales LF existentes hoy en día pueden agruparse en 3 familias.

FAMILIA LISP:
Los lenguajes de esta familia admiten asignación, y no tienen disciplina de tipos.

FAMILIA ML:
Los Lenguajes de esta familia admiten asignación. Tienen disciplina de tipos y
polimorfismo, pero no usan evaluación perezosa.
FAMILIA HASKELL:
Los lenguajes de esta familia son puros, es decir, no admiten asignación destructiva.
Además, tienen disciplina de tipos, polimorfismo y evaluación perezosa.

También podría gustarte