Sistemas de tipos de datos y semántica
Los sistemas de tipos de datos son muy importantes en el diseño de lenguajes de programación ya que se utilizan para formalizar la definición de los tipos de datos y su utilización correcta en los programas. Generalmente se asocia con la sintaxis, por lo que se pueden considerar como una extensión de definiciones que impone restricciones sintácticas específicas que no pueden expresarse con una gramática.
El sistema de tipo de datos se encuentra entre la sintaxis y la semántica y podemos visualizarlo apropiadamente en cualquiera de los dos.
Un tipo de datos es un conjunto de valores (dominio) y un conjunto de operaciones sobre los valores (funciones). Por ejemplo tenemos el conjunto de los enteros (Z) como conjunto de valores y las operaciones de +,-,*,/ para los enteros.
Para el tipo boolean tenemos los valores {true, false} y las operaciones and, or y not.
En el sistema de tipos se asocian variables con tipos. Por ejemplo los lenguajes C, Pascal, Modula, son lenguajes fuertemente tipificados. Donde el tipo de dato de una variable no cambia a lo largo de la ejecución del programa.
Los lenguajes débilmente tipificados permiten que el tipo de dato de una variable cambie a lo largo de la ejecución del programa, Lisp y VB 6.0 son un ejemplo.
“La semántica de un lenguaje de programación es una definición del significado de cualquier programa que sea sintácticamente válido” (Tucker, 2003).
La semántica puede ser:
Operacional: Que consiste en una descripción precisa de lo que ocurre cuando se ejecuta el programa. Proporciona una definición del significado del programa simulando el comportamiento del mismo en un modelo de equipo que tenga un conjunto de instrucciones básicas y una unidad de memoria.
Axiomática: Es una descripción formal que permite demostrar que el programa es correcto y completo. Se basa en un sistema riguroso y lógico que permite ver a un programa como una función f: N N. Es útil en la exploración de las propiedades formales de los lenguajes.
Fuente: Apuntes de Programación con lenguajes de cuarta generación de la FCA de la UNAM