Download LengDeProg1

Document related concepts
no text concepts found
Transcript
1. INTRODUCCIÓN
1
Evolución de los conceptos

ABSTRACCIÓN DE DATOS

Tipos de datos
• Elementales (HW)
• Estructurados (LP)
• Abstractos (U)
2
Tipos de datos: Elementales
•
•
•
•
Enteros
Reales
Booleanos
Caracteres
• Nivel: de la máquina
• Primitivos
• Tipo básico
• Proporcionados por el Hw
3
Tipos de datos: Estructurados
• Arreglos
• Registros
• Nivel: Del Lenguaje de Programación
• Proporcionado por los LP
• Con base en tipos elementales
• Se utilizan constructores de tipo que  al LP
4
Tipos de datos: Abstractos
• Stacks
• Colas, etc
• Nivel: Del usuario
• Definidos por el usuario para enriquecer el LP
5
Evolución de los conceptos

ABSTRACCIÓN DE CONTROL

Lógica del código
• Sentencias
• Unidades de Programas
6
Sentencias
Constructores de código
programación estructurada
que
facilitan
la
• Asignación
• Decisión
• Iteración
7
Unidades de programas
• Permiten programación modular
• Generalizan la noción de operador
• Permiten encapsular parte de un algoritmo
• Tienen una única definición
• Tienen múltiples activaciones
8
Clasificación de los Lenguajes
De Programación
9
Clasificación de los LP
Lenguajes
Naturales
De Programación
De Máquina
Simbólicos
Bajo nivel
Alto Nivel
• Imperativos
• Funcionales
• Lógicos
• OO
10
Categorización de los LP
C++ Delphi
Pascal
Mayor grado de
abstracción
C
L ENS
LM
11
1.3 Criterios de :Definición y Diseño de LP
12
Lenguajes Naturales
Conjunto de sonidos articulados con que el
hombre manifiesta a otros lo que siente o
piensa
13
Lenguajes de Programación
Notación sistemática por la cual describimos
procesos computacionales
14
Lenguajes de Máquina
Las instrucciones se expresan como strings binarios
que la CPU es capaz de entender, por lo tanto:
• Es característico de cada computador y
• Depende de la máquina
15
Lenguajes Simbólicos
Manejan identificadores en vez de strings de bits,
para:
• Operaciones
• Valores
• Localidades de almacenamiento
Aparece la necesidad de otro Sw, puesto que
NO es posible ejecutar notaciones diferentes
del LM
16
Lenguajes Bajo Nivel





Se denominan ensambladores
Es necesario el conocimiento de la arquitectura
subyacente.
LP simbólico más cercano al LM
La relación entre las sentencias del LM y el leng.
ensamblador es 1:1
Los LP ensambladores utilizan símbolos llamados
códigos mnemónicos: Add, Store, etc.
17
Lenguajes Alto Nivel


LP que permite un estilo de escritura fácil de
leer y comprender por otros programadores
Permite crear programas portables, sin cambios
sustanciales, por los que se dice, que son
independientes de la máquina.
18
Lenguajes Imperativos





Los primeros LP fueron
Pascal, C, Ada
creados en los 50's: Fortran,
Se denominan también, procedurales
Los LP que tienen a ForTran y COBOL como raíz, se
denominan imperativos.
Tienen como característica cambiar el estado
variables por asignación.
de las
Están influenciados por la máquina en la que deben "correr":
Máquina de Von Neuman.
CPU
RAM
19
Lenguajes Funcionales





Los primeros aparecieron en
Apl, Forth
los 60's: Lisp,
Se denominan también aplicativos.
Aplican funciones, ya sea, recursivamente o por
composición.
Se caracterizan por una programación sin
asignaciones , ie, puramente funcional.
Los usuarios de los LP funcionales NO deben
preocuparse de manejar el almacenamiento de
datos.
20
Lenguajes Funcionales
Ejemplos:
1.
x + y => (Plus x y)
2.
2*y
=> (Times 2 y)
3.
x5
=> (Exp x 5)
4.
5xyz => (Times 5(Times x (Times y z)))
5.
ax2 + bx + c =>
ax2 + (bx + c)
=>
(Plus (Times a (Exp x 2)) (Plus (Times b x) c ))
21
Lenguajes Lógicos




Aparecieron en los 70's : PROLOG
Son LP diseñados
principalmente para
aplicaciones de IA, máquinas de 5° generación.
Los LP lógicos revisan la presencia de una
determinada condición, la que, si es verdadera
se ejecuta una acción apropiada
Se basa en la noción de definir objetos y
relaciones de inferencia en clases de objetos.
22
Lenguajes Lógicos
Ejemplo:
Acción 1 if (cond1)
Acción 2 if (cond2)
:
Una forma de programación lógica son las
tablas de decisión utilizadas en aplicaciones
administrativas.
23
Lenguajes OO



Ejemplos de estos lenguajes son: Smalltalk,
Eiffel, C++, Java.
Son LP que incorporan nuevas formas de
pensar con respecto a cómo estructurar la
información dentro del computador
Se construyen complejos objetos de datos y se
diseña un conjunto de funciones para operar
con tales datos.
24
1.3 Criterios de :Definición y
Diseño de LP






Ortogonalidad
Claridad Sintáctica
Orientación
Extensión
Portabilidad
Eficiencia
25
1.4 Sintáxis
26
ORTOGONALIDAD
Dotar al lenguaje de la máxima generalidad
posible de modo que NO existan restricciones
o casos especiales.
Ejemplos:
Ventajas:
Desventajas:
27
Ejemplo: Pascal
Como ejemplo de FALTA de ortogonalidad
en Pascal, el tipo de dato de un parámetro
formal NO puede ser anónimo, es decir, no es
posible declararlo explícitamente
Procedure A(Var v : Array1..10 of Real);
28
Ejemplo: Pascal
debiéndose declarar
Type
Vector = Array1..10 of Real;
Procedure A(var v : Vector);
29
Ventajas de LP Ortogonales
Si un lenguaje es ortogonal, entonces tal LP:
• Es fácil de aprender
• Permite facilidad en la escritura de
programas.
Porque NO tiene excepciones ni casos especiales
que recordar.
30
Desventajas de LP Ortogonales
Si un lenguaje es ortogonal, entonces:
Un programa generalmentes compilará SIN errores,
aún cuando contenga combinaciones que son
lógicamente incoherentes o extremadamente
ineficientes
31
CLARIDAD SINTÁCTICA
Permitir que las diferencias semánticas se
manifiesten en diferencias sintácticas
• COBOL : Es claro
32
CLARIDAD SINTÁCTICA
• APL
: No es claro, puesto que está lleno de
símbolos. Su sintáxis es encriptada
v
5 0
• Facilita la escritura
experimentados
a
programadores
• Son difíciles de leer al momento de efectuar
modificaciones futuras.
33
ORIENTACIÓN
Proveer una sintaxis
orientación del lenguaje.
comprometida
con
la
• Es más bien de carácter histórico
• Es un compromiso con las personas
En general, la notación utilizada por un LP
debiera ser consistente con las notaciones
usadas en ese campo.
34
EXTENSIÓN
implementación de estructuras
inexistentes en función de las que éste provee,
permitiendo al usuario:
Facilitar
la
• Definir sus propios EDT
• Codificar sus propios operadores
35
PORTABILIDAD
Proveer una definición del lenguaje independiente
de las características de una máquina en particular.
Dos impedimentos para la independencia de la
máquina son:
• La aritmética de la máquina y
• El tamaño de la word
Incompatible con:
• Realidad
• Objet. Comerciales
36
Ejemplo: Java
Java crea una versión ejecutable portable
El proceso de compilación se detiene antes de
generar el código de máquina: Código de Byte
El proceso de traducción continúa en cada
máquina donde se ejecutará el programa
Código Byte
HOT JAVA
Cód. Ejecutable
37
EFICIENCIA
En traducción: LP orientados a la educación.
Rápida compilación
En ejecución:
LP orientados a rutinas muy utilizadas, como la verificación de claves
En construcción LP que permiten una rápida y clara
construcción de programas y ayuda
en el diagnóstico
38
1.4 Sintáxis
Conjunto de reglas que determinan
si las sentencias de un programa están
bien formadas o no.
• Manual del usuario: Reglas de cómo escribir.
• Compilador: Mecanismo que determina si el
programa está bien escrito
39
1.4 Sintáxis

Objetivo: Proveer una notación que
permita la comunicación entre el
programador
y el compilador
(procesador del lenguaje).
Criterios Sintácticos
Elementos Sintácticos
40
Gramática
41
Criterios Sintácticos

Legibilidad:
COBOL: Write sueldo after advancing 2 lines

Facilidad de escritura:
APL: AA*-1
Invierte una matriz
42
Criterios Sintácticos

Facilidad de traducción:
El compilador debiera generar poco código

Ausencia de ambigüedad:
Evitar que una estructura tenga más de un
significado
43
Criterios Sintácticos
Por ejemplo, en Fortran:
M(i) puede significar un elemento del arreglo M, ó
 M(i) una llamada a la función M. Con el parámetro i.

Por ejemplo, en PL/1:


A=B=C: Asignación múltiple B=C, A=B
Asignación de un valor booleano: A=(B=C)
44
Criterios Sintácticos
Por ejemplo, en Pascal:
If (x=0)
then
If (y=0)
then
S1
else
S2;
Solución en Pascal:
If (x=0)
then
Begin
If (y=0)
then
S1;
End
else
S2;
45
Elementos Sintácticos
Set de Caracteres
 Identificadores
 Símbolos para operadores
 Palabras claves y reservadas
 Comentarios
 Abreviaciones
 Espacios

46
Elementos Sintácticos (Cont.)
Delimitadores
 Formatos Fijo y Libre
 Expresiones
 Sentencias
 Estructura de Unidades de
programa

47
Gramática
48
Set de Caracteres

Datos estandarizados:
ASCII -
EBCDIC
 Datos propios:
Algol: ASCII Extended
APL
49
Identificadores



Escritura básica de los LP.
Tienen una cantidad máxima de símbolos
definidos por la versión
Generalmente es:


Un string con letras y/o dígitos comenzando
con letra
La legibilidad aumenta si las versiones
permiten
identificadores
de
varios
caracteres.
50
Símbolos para Operadores






General: +, -, *, etc
APL: Posee caracteres especiales
Lisp: Plus, Times
Fortan: .EQ., **, .GT.
Pascal: div, mod
COBOL: Add, Multiply
51
Palabras Claves y Reservadas


Una palabra clave es un identificador que
constituye la parte no cambiante de una
instrucción.
Una palabra reservada es una palabra clave
no declarable como identificador de usuario.
52
Ventaja Palabras Reservadas
La mayoría de los LP utilizan palabras
reservadas, así:


El análisis sintáctico es más fácil y,
La detección de errores es más
eficiente.
Ejemplos:
53
Ejemplo en ForTran
Las sentencias:
Do , If
NO son palabras reservadas,
Son palabras claves, por lo tanto el
programador las puede usar como
identificadores.
54
Ejemplo en COBOL
•Posee demasiadas palabras reservadas,
lo que hace imposible recordarlas todas.
Esto facilita el camino para que el
programador elija una de ellas como
identificador, ocasionando ERRORES en la
compilación.
55
Comentarios

Auto documentación del código fuente.

Comentarios en líneas separadas:
Fortran: en la primera columna: C
56
Comentarios


Comentarios delimitados por marcas
especiales sin límite de líneas:

Pascal: (* .. *) , { .. }

C: /* .. */
Se indica el comienzo y termina con el
fin de línea:

Ada:

C++:
//

Fortan 90: !
57
Abreviaciones
Relacionado con la legibilidad, por
ejemplo:
• a = a+1
 a++
• a = a+b
 a+=b
• a = a % b  a%=b
58
Espacios
Su uso varía entre los LP
• ForTran: No son significativos
• SNOBOL 4: Genera confusión.
• Concatenación
• Separador entre elementos de una instrucción
59
Delimitadores
Se utilizan para demarcar una unidad
sintáctica como:

Sentencia
Begin End,

Expresión.
( )
{ }
Ventajas
60
Delimitadores
• Su uso mejora la legibilidad
• Simplifica el análisis sintáctico
• Permite
remover
la
ambigüedad, definiendo en
forma explícita los límites
de una estructura
Else colgante:
If (x=0)
then
Begin
If (y=0)
then
S1;
End
else
S2;
61
Formatos Fijo y Libre
Es histórico, viene de la época de las tarjetas perforadas.
Formato fijo: Las instrucciones deben aparecer en
una determinada parte de la línea.
Ejemplo: ForTran
Reserva las primeras 5 posiciones de cada línea
1° columna: carácter C para comentario
6° columna: Indicador de continuación de línea.
7°- 72°
: Instrucciones
62
Formatos Fijo y Libre
Formato Libre: Las instrucciones se pueden escribir
sin preocuparse de su posición en la línea o del largo
de ella
Ejemplo:
Pascal, C, etc.
63
Expresiones
Funciones que acceden a ODD de un programa y
retornan un valor.
Esta estructura sintáctica involucra:
• identificadores
• Operadores y
• Variables
64
Expresiones
En un LP Imperativo:
Las expresiones forman las operaciones básicas
que permiten a las instrucciones cambiar el estado
de las variables
En LP funcionales:
Las expresiones forman la secuencia básica de
control que dirige la ejecución de un programa.
65
Sentencias
Mínima unidad constitutiva de código
Simples
No permite instrucciones
anidadas
Estructuradas
Permite instrucciones
anidadas
66
Estructuras de Unidades de Programas
Formas que los LP utilizan para describir una organización
sintáctica de:
Programa Principal - Subprogramas
en la que hay una desagrupación de código que
evolucionó hacia la programación estructurada.
• Definición Separada
• Definición Anidada
• Definición separada de datos
67
Gramática
Representa la definición formal de la
sintaxis de un lenguaje.
Consta de un conjunto de reglas que
especifican las NORMAS de escritura para
formar estructuras en un lenguaje.
68
Metalenguajes
Gramática formal destinada a la
descripción de un lenguaje.
Existen tres
utilizados
metalenguajes
comúnmente
• BNF (Backus-Naur-Form)
• Diagramas sintácticos
• CBL (COBOL-Like)
69
1.5 Semántica
70
BNF (Backus - Naur Form)
Notación desarrollada por los especialistas
Backus y Naur para definir lenguaje Algol 60
Metasímbolos:
• < >: indica símbolo NO-TERMINAL o meta variable
• ::= : "Se define como"
• |: " o"
• { }n: Repetición. Mínimo n veces.
• identificador: Palabra reservada, constante o carácter TERMINAL.
71
BNF
Número real, identificador
<real> ::= <secuencia> .<secuencia>
<secuencia> ::= <dígito> {<dígito>}0
<dígito> ::=
0|1|2 |3|...8|9
<identificador> ::= <letra> {<letra> | <dígito>}0
<letra> ::= A |B|C|...Y |Z|Aa|b|c...y|z
72
BNF
Expresión aritmética
Expresión:
a*b - c/d
x
término
término
término
a * b
factor
factor
<exp>::= <término>| <término> +<término>|<término> -<término>
<término>::=
<factor>|<factor> * <factor>
<factor>::= <identificador>|<constante>
|<factor> / <factor>
(<exp>)
73
BNF
Sentencia For de Pascal
<s- for> ::= For <identificador> := <intervalo> do <sentencia>
<intervalo> ::= < inicial> to <final> | <inicial> downto < final>
<inicial> ::= <exp>
<final> ::= <exp>
74
BNF Recursivas
<entero>::= <dígito> | <dígito><entero>
dígito>::=
0|1||..|9
<real> ::= <secuencia>
.
<secuencia>
<secuencia> ::= <dígito> | <dígito> <secuencia>
75
BNF Recursivas
<identificador> ::= <letra> | <letra> <secuencia>
<secuencia> ::= <carácter> |<carácter><secuencia>
<carácter> ::= <letra> | <dígito>
Multilista: (1 2 (3 4 (5)6)7 8)
<Mlista> ::= ( ) | ( <lista> )
<lista> ::= <elemento> | <elemento> <lista>
<elemento>::= <átomo> | <Mlista>
76
BNF
Sentencia Pascal
<sentencia> ::= <simple> | <compuesta>
<simple>::= <s-asig>|<s-inv>|<s-dec>|<s-iter>
<compuesta>::=
Begin <grupo-sentencia> End
<grupo-sentencia>::=<simple>|<simple>;<grupo-sentencia>
77
BNF
Otra vez la expresión aritmética REC
Expresión:
a*b - c/d
x
término
término
término
a * b
factor
factor
<exp>::= <término>| <término> +<exp>|<término> - <exp>
<término>::=
<factor>|<factor> * <término>|<factor> / <término>
<factor>::= <identificador>|<constante>
(<exp>)
Ejemplo: (a+b)*c
78
BNF
Expresión Recursiva
Expresión
Término
a + b*c
+
Expresión
Término
Factor
Identificador
a
b*c
Factor
*
Término
Identificador
Factor
b
Identificador
c
79
BNF
Expresión Recursiva
Expresión
Término
a-b-c
-
Expresión
Factor
Término
Identificador
Factor
a
-
Identificador
b
b-c
Expresión
Término
Factor
Identificador
c
80
BNF
Expresión Recursiva
Expresión
Término
Factor
(a +b) *c
*
(Expresión)
Término
Factor
+ Expresión
Factor
Término
Identificador
Factor
a
Término
Identificador
c
Identificador
b
81
BNF
Sentencias Pascal
<s-While>::=
While <exp B> do <sentencia>
<s-If>::= If <exp B> then <sentencia>
|If <exp B> then <sentencia> else <sentencia>
82
BNF
Sentencias C
do
{printf("Número ");
scanf("%d",&n);
}while (n<=0);
<do-while>::= do <sentencia> while <exp B>
83
BNF
Sentencias C
switch (x)
{case 1: cout<<"es UNO";break;
case 2:
case 3: cout <<"es dos o tres";break;
default : cout <<"es distinto de 1,2 ó 3";
}
<switch>::= switch
(<exp>) {<secuencia>}
<secuencia> ::= <caso> <caso> <secuencia> <caso><defecto>
<caso> ::= case <constante>:<sentencias>;
| case <constante> : <sentencias>; break;
<defecto> ::= default :<sentencias>;
<constante>::= enteros | caracteres
84
Diagramas Sintácticos
Constituyen un método de descripción de
lenguajes, equivalente a la BNF, originalmente
propuesto por N. Wirth. para definir sintáxis de Pascal.
Equivalencias entre BNF y Diagramas sintácticos:
85
Diagramas Sintácticos
<S> ::= <v1> | <v2> ··· | <vn>
Cada ocurrencia de un símbolo
terminal corresponde al diagrama

V1
V2



Vn
Cada ocurrencia de un símbolo no
terminal corresponde al diagrama
X
86
Diagramas Sintácticos
Una producción de la forma:
<S> ::= {<x>}0
corresponde al siguiente diagrama
(mientras)
Una producción de la forma:
<S> ::= <x>{<x>}0
corresponde al siguiente diagrama
(repetir)
X
X
87
Diagramas Sintácticos Pascal
Letra:
Identificador:
A
B


Letra
z
Letra
Dígito
_
Dígito:
0
1


9
88
Diagramas Sintácticos Pascal
Número Entero:
Dígito
Número Real:
Dígito

Dígito
89
Diagramas Sintácticos Pascal
Sentencia:
Sentencia Compuesta:
Simple
Compuesta
Begin
Sentencia Simple:
Simple
End
;
Asignación
Invocación
Decisión
Iteración
90
Diagramas Sintácticos Pascal
Sentencia Asignación:
:=
Identificador
Exp
Sentencia if:
If
Exp B
then
Sentencia
else
Sentencia
Sentencia while:
While
Exp B
do
Sentencia
91
CBL COBOL - like
Constituye una extensión de la BNF destinada a la
descripción sintáctica del lenguaje Cobol.
92
CBL COBOL - like
• Elementos opcionales se denotan entre paréntesis
cuadrados  x 
• Elementos alternativos se listan verticalmente entre
paréntesis llave
• Elementos alternativos opcionales se listan verticalmente
entre paréntesis cuadrados  
• La repetición de los elementos se indica mediante tres
puntos a continuación de una ocurrencia del elemento
 x ...
93
CBL COBOL - like
<entero> ::= [ + ] <digito> ...
<identificador> ::= <letra>
<digito>
<letra>
-
<condición>::=<identificador> IS NOT
...
NUMERIC
ALPHABETIC
94
1.5 Semántica
95
1.5 Semántica
 La sintáxis se refiere sólo a la forma de un programa.
Está fuertemente ligada a la semántica la que da el
significado al programa.
 Se define como un conjunto de reglas que describen
el comportamiento de ese lenguaje en tiempo de
ejecución
 ¿Qué ocurre con la ejecución de un programa ?
 ¿Qué sentencias se ejecutarán?
 ¿Qué valores se asignan a determinadas variables?
 ¿Qué salidas se obtienen?
96
Ejemplo
Una expresión sintáctica, mediante BNF, como
<fecha> ::= <d><d>/<d><d>/<d><d><d><d>
puede tener dos interpretaciones semánticas; por
ejemplo:
09/04/2002 se entiende como
• 9 de Abril de 2002 en Chile
• 4 de Septiembre de 2002 en EEUU.
97
Métodos formales
Métodos formales de semántica:
 Axiomático
: Cálculo del predicado (PROLOG)
 Denotacional
: Teoría de las funciones (Lisp)
 Compilador
: Máquina teórica
Para especificar la semántica de una sentencia, lo
haremos vía definición
98
1.6 Procesadores
El diseño de compiladores es el corazón de la
implementación de un lenguaje.
DEFINICIÓN
Es una máquina capaz de ejecutar acciones
expresadas
en
algún
lenguaje
concreto,
actualmente, sólo lenguaje de máquina.
99
Procesadores

En teoría, es posible construir:



Computadores - LISP
Computadores - C, etc.
Desventajas:


Son máquinas poco flexibles
De alto costo.
Se favorece la construcción de
máquinas que operen con LP
de bajo nivel.
TRADUCTOR
100
Traductores
Es un decodificador que acepta programas escritos en algún
lenguaje fuente y genera programas, funcionalmente
equivalentes, en algún lenguaje objeto
Programa en
Lenguaje Fuente
Traductor
Programa en
Lenguaje Objeto
Preprocesador
Compilador
Intérprete
Ensamblador
Ligador
Cargador
101
Capítulo 2
102
Pre-Procesador
Traductor, cuyo
lenguaje fuente es una extensión de un lenguaje de alto nivel.l
 lenguaje objeto es el estándar del lenguaje de alto nivel.

Ej: C, C++, etc.

Programa en
extensión de LAN
Pre-procesador
C++
Preprocesador
Compilador
C
Ensamblador
Leng.
Ensam.
Programa en
LAN estándar
Cargador
Código
Reubicable
Código
Ejecutable
103
Compilador
Es un traductor cuyo
 lenguaje fuente es un lenguaje de alto nivel
 lenguaje
objeto es un lenguaje intermedio
orientado a la máquina.
código objeto
Programa en
Lenguaje de Alto
Nivel
Compilador
Programa en
L orientado a la
Máquina
Análisis lexicográfico
Análisis sintáctico
Generación de código
Optimización
104
Compilador: Análisis lexicográfico
Reconocimiento y clasificación de tokens básicos:



Constantes
Identificadores
Palabras reservadas, etc
Construcción de la tabla de símbolos
Lista de todos los símbolos y sus atributos usados en
un programa (variables, etiquetas, rutinas, etc)
105
Compilador: Análisis sintáctico

Generación de un árbol de reconocimiento usando una
representación interna de la gramática del lenguaje como
guía.
Expresión
a + b*c
Término +
Expresión
Factor
Término
Identificador Factor
a
* Término
Identificador Factor
b
Identificador
c
106
Compilador: Generación de código
Enlace entre la sintáxis y la semántica (o representación
máquina) de un lenguaje.
Convierte el árbol de reconocimiento en una
lista equivalente de instrucciones en
lenguaje de máquina.
107
Compilador: Optimización
Refinar el código generado para mejorar el rendimiento
en tiempo de ejecución
Ubicación de
• Construcciones semánticas redundantes
• Uso ineficiente de registros, etc.
108
Intérprete
Es un procesador cuyo lenguaje concreto es un
lenguaje de alto nivel.
Ningún computador es capaz de ejecutar un código
distinto al de máquina
Se debe simular mediante software la existencia de
un computador cuyo lenguaje de máquina es un
lenguaje de alto nivel
109
Diferencias: Compilador-Intérprete
El compilador :
 Sólo traduce


El intérprete :
 Decodifica y ejecuta
Traduce sólo una vez
cada sentencia
 Puede procesar varias veces
algunas e ignorar completamente
otras instrucciones
Acepta las instrucciones
según su secuencialidad
física
 Acepta las instrucciones según
su secuencialidad lógica
110
Ensamblador
Traductor, cuyo
 Lenguaje fuente es un lenguaje ensamblador
(representación simbólica de un LM)
 Lenguaje objeto es el LM del computador
Programa en
Leng. Ensam.
Ensamblador
Programa en
LM
111
Ligador
Traductor cuyo
 Lenguaje fuente es lenguaje orientado a la máquina
Enlaza de manera conjunta código compilado
independientemente en UN solo módulo de carga, libre
de referencias de un módulo a otro.

Lenguaje objeto es el L orientado a la máquina, pero
denominado código reubicable
Programa en L
orientado a la
máquina
Linker
Programa en
LM
código reubicable
112
Cargador
Traductor cuyo

lenguaje fuente es lenguaje orientado a la máquina reubicable
Carga el programa en diversas localidades de memoria,
actualizando las tablas de datos en que indican puntos de
código reubicable que serán modificados para la ejecución
del programa.
 Lenguaje objeto es el LM del computador. Módulo ejecutable
Programa Ejecutable
Programa en
código reubicable
Loader
Programa en
LM
código real
113