Lenguajes de Programación

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
Lenguajes de Programación por Mind Map: Lenguajes de Programación

1. Compilación

1.1. Acepta programas en cualquier fuente como entrada y devuelve programas funcionales

1.1.1. Se compone de dos pasos

1.1.1.1. Descomponer el programa en partes que los constituyen y obtienen información

1.1.1.2. Genera típicamente un programa objeto a partir de la información obtenida

1.2. Hay varios tipos de traductores especializados

1.2.1. Ensamblador

1.2.1.1. Representación simbólica del lenguaje de maquina

1.2.2. Compilador

1.2.2.1. Lenguaje de alto nivel y cuyo lenguaje objeto se aproxima a un lenguaje ensamblador

1.2.3. Cargador

1.2.3.1. Traductor cuyo lenguaje de objeto y el lenguaje fuente son casi identicos

1.2.4. Preprocesador

1.2.4.1. El lenguaje objeto es la forma ampliada de un lenguaje de alto nivel

1.3. Análisis

1.3.1. Programa Fuente

1.3.1.1. Serie larga y no diferenciada de símbolos

1.3.1.2. Compuesta de miles o decenas de miles de caracteres

1.3.2. Léxico

1.3.2.1. Agrupa los caracteres en sus constituyentes elementales

1.3.2.2. Suele requerir mayor cantidad de tiempo de traducción

1.3.3. Sintáctico

1.3.3.1. Identifica las estructuras de programa mas grandes

1.3.3.2. Identifica una serie de elementos léxicos que forman una unidad sintactica

1.3.4. Semántico

1.3.4.1. La estructura del código objeto empieza a tomar forma

1.3.4.2. Puente entre las partes de análisis y síntesis de traducción

1.4. Tabla de Simbolos

1.4.1. El analizador semántico se divide en un conjunto de analizadores mas pequeños

1.4.1.1. Estos interactuan entre ellos a través de información que se guarda en diversas estrcuturas de datos

1.4.2. Es una de las estructuras medulares de todo traductor

1.4.3. Contiene típicamente una entrada por cada identificador diferente encontrado en el programa fuente

1.5. Generación de Código

1.5.1. Dar el formato apropiado a la salida con base a la información que contiene

1.5.2. El código de salida puede ser directamente ejecutable o puede haber otros pasos de traducción

1.5.2.1. Ensamblado

1.5.2.2. Vinculación y Carga

2. Sintaxis

2.1. Forma de expresiones, sentencias

2.2. Métodos Formales de Descripción

2.2.1. Backus Naur Form (BNF)

2.2.1.1. Símbolos No Terminales

2.2.1.1.1. Representa una Regla

2.2.1.2. Símbolos Terminales

2.2.1.2.1. Tokens de las Reglas

2.2.1.3. Símbolos de Partida

2.2.1.3.1. Símbolo No Terminal

2.2.1.3.2. Generar un Programa

2.2.2. Extended BNF (EBNF)

2.2.2.1. Indicadores

2.2.2.1.1. Elemento Opcional

2.2.2.1.2. Alternativa en Regla

2.2.2.1.3. Repetición de Elementos

3. Semántica

3.1. Significado de expresiones, sentencias

3.1.1. Variables

3.1.1.1. Nombre

3.1.1.1.1. Cadena de caracteres que reconoce alguna entidad del programa

3.1.1.2. Dirección

3.1.1.2.1. Dirección de memoria a la cual esta asociada

3.1.1.2.2. Puede tener asociado diferentes direcciones en diferentes partes del programa

3.1.1.2.3. Alias

3.1.1.3. Tipo

3.1.1.3.1. Determina el rango de valores que puede tomar la variable

3.1.1.4. Valor

3.1.1.4.1. Contenido de la celda o celdas de memoria asociadas a las variables

3.1.2. Ligadura

3.1.2.1. Asociación entre un atributo y una entidad

3.1.2.2. Tiempo de Ligadura

3.1.2.2.1. Compilación

3.1.2.2.2. Linkeado

3.1.2.2.3. Carga

3.1.2.2.4. Ejecución

3.1.2.3. Ligadura Estatica

3.1.2.4. Ligadura Dinámica

3.1.2.4.1. Si ocurre durante del tiempo de ejecución o puede cambiar en el transcurso de la ejecución del programa

3.1.2.5. Espacio y Tiempo de Vida

3.1.2.5.1. Tiempo durante el cual la variable está ligada a una localización específica de memoria

3.1.3. Tipo

3.1.3.1. Comprobación de Tipos

3.1.3.1.1. Actividad que nos asegura que los operando de un operador son de tipos compatibles

3.1.3.2. Disciplina de Tipos

3.1.3.2.1. Si los errores de tipos se detectan siempre

3.1.3.3. Compatibilidad de Datos

3.1.3.3.1. Tipos Nominal

3.1.3.3.2. Tipos Estructural

3.1.3.3.3. Equivalencia de Declaración

3.1.3.3.4. Tipo Anónimo

3.1.3.4. Subtipo

3.1.3.4.1. Dinámico

3.1.3.4.2. Versión de un tipo existente con el que es compatible

3.1.3.5. Tipo Derivado

3.1.3.5.1. Basado en algún otro previamente definido con el que es incompatible, aunque sean estructural mente idénticos

3.1.4. Ámbito

3.1.4.1. Rango de sentencias en las que es visible la variable

3.1.4.1.1. Estático

3.1.4.1.2. Entorno de Referencia

3.1.5. Constantes

3.1.5.1. Objeto al que se le liga un valor sólo en el momento en el que se le liga el espacio

3.1.5.2. Su valor no puede cambiarse por asignación o por sentencia de entrada

3.1.6. Inicialización de Variables

3.1.6.1. Ligadura de un valor a una variable en el momento en el que también se le liga el almacenamiento

3.1.6.1.1. Variables Estáticas

3.1.6.1.2. Variables con Ligadura Dinámica

3.1.6.2. Variables No Inicializadas

3.1.6.2.1. Se les liga memoria pero su contenido es arbitrario

3.1.6.2.2. No puede ser interpretado como un valor del tipo del objeto declarado