1. INTRODUCCIÓN

Post on 05-Jan-2016

44 views 0 download

description

Cobol. C. Pascal. Fortran. 1. INTRODUCCIÓN. SmallTalk. Java. C++. Evolución de los conceptos. ABSTRACCIÓN DE DATOS Tipos de datos. Elementales (HW) Estructurados (LP) Abstractos (U). Tipos de datos: Elementales. Enteros Reales Booleanos Caracteres. - PowerPoint PPT Presentation

Transcript of 1. INTRODUCCIÓN

1

1. INTRODUCCIÓN

2

Evolución de los conceptos

ABSTRACCIÓN DE DATOS

Tipos de datos

• Elementales (HW)

• Estructurados (LP)

• Abstractos (U)

3

Tipos de datos: Elementales

• Nivel: de la máquina

• Primitivos

• Tipo básico

• Proporcionados por el Hw

• Enteros• Reales• Booleanos• Caracteres

4

• Nivel: Del Lenguaje de Programación

• Proporcionado por los LP

• Con base en tipos elementales

• Se utilizan constructores de tipo que al LP

• Arreglos• Registros

Tipos de datos: Estructurados

5

• Nivel: Del usuario

• Definidos por el usuario para enriquecer el LP

• Stacks• Colas, etc

Tipos de datos: Abstractos

6

Evolución de los conceptos

ABSTRACCIÓN DE CONTROL

Lógica del código

• Sentencias

• Unidades de Programas

7

Sentencias

• Asignación

• Decisión

• Iteración

Constructores de código que facilitan la programación estructurada

8

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

9

Clasificación de los Lenguajes De Programación

10

Clasificación de los LP

Lenguajes

Naturales

De Programación De Máquina Simbólicos

Bajo nivel Alto Nivel• Imperativos• Funcionales• Lógicos• OO

11

Categorización de los LP

L ENSLM

LAN ForTran

CO

BO

L

Pascal C

C++ Delphi

Mayor grado de abstracción

12

1.3 Criterios de :Definición y Diseño de LP

13

Lenguajes Naturales

Conjunto de sonidos articulados con que el hombre manifiesta a otros lo que siente o piensa

14

Lenguajes de Programación

Notación sistemática por la cual describimos procesos computacionales

15

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

16

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

17

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.

18

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.

19

Lenguajes Imperativos

Los primeros LP fueron creados en los 50's: Fortran, Pascal, C, Ada

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 de las variables por asignación.

Están influenciados por la máquina en la que deben "correr": Máquina de Von Neuman.

CPU RAM

20

Lenguajes Funcionales

Los primeros aparecieron en los 60's: Lisp, Apl, Forth

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.

21

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 ))

22

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.

23

Lenguajes Lógicos

Ejemplo:

Una forma de programación lógica son las tablas de decisión utilizadas en aplicaciones administrativas.

Acción 1 if (cond1)Acción 2 if (cond2)

:

24

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.

25

1.3 Criterios de :Definición y Diseño de LP

Ortogonalidad Claridad

Sintáctica Orientación Extensión Portabilidad Eficiencia

26

1.4 Sintáxis

27

ORTOGONALIDAD

Dotar al lenguaje de la máxima generalidad posible de modo que NO existan restricciones o casos especiales.

Ejemplos:

Ventajas:

Desventajas:

28

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 : Array1..10 of Real);

29

Ejemplo: Pascal

debiéndose declarar 

Type Vector = Array1..10 of Real;

Procedure A(var v : Vector);

30

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.

31

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

32

CLARIDAD SINTÁCTICA

Permitir que las diferencias semánticas se manifiesten en diferencias sintácticas

• COBOL : Es claro

33

CLARIDAD SINTÁCTICA

• APL : No es claro, puesto que está lleno de símbolos. Su sintáxis es encriptada

• Facilita la escritura a programadores experimentados

• Son difíciles de leer al momento de efectuar modificaciones futuras.

v 5 0

34

ORIENTACIÓN

Proveer una sintaxis comprometida con la orientación del lenguaje.

• 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.

35

EXTENSIÓN

Facilitar la implementación de estructuras inexistentes en función de las que éste provee, permitiendo al usuario:

• Definir sus propios EDT

• Codificar sus propios operadores

36

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

37

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

38

EFICIENCIA

En traducción: LP orientados a la educación.

Rápida compilación

En ejecución: LP orientados a rutinas muy utiliza-

das, como la verificación de claves En construcción LP que permiten una rápida y clara

construcción de programas y ayudaen el diagnóstico

39

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

40

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ácticosElementos Sintácticos

41

Gramática

42

Criterios Sintácticos Legibilidad:

COBOL: Write sueldo after advancing 2 lines

Facilidad de escritura:APL: AA*-1 Invierte una

matriz

43

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

44

Criterios SintácticosPor 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)

45

Criterios Sintácticos

Por ejemplo, en Pascal:

If (x=0)then

If (y=0) then

S1else

S2;

Solución en Pascal:

If (x=0)then

Begin If (y=0)

then S1;

Endelse

S2;

46

Elementos Sintácticos Set de Caracteres Identificadores Símbolos para operadores Palabras claves y reservadas Comentarios Abreviaciones Espacios

47

Elementos Sintácticos (Cont.)

Delimitadores Formatos Fijo y Libre Expresiones Sentencias Estructura de Unidades de pr

ograma

48

Gramática

49

Set de Caracteres

Datos estandarizados:

ASCII - EBCDIC

Algol: ASCII Extended

APL

Datos propios:

50

Identificadores

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.

Escritura básica de los LP.

51

Símbolos para Operadores

APL: Posee caracteres especiales Lisp: Plus, Times Fortan: .EQ., **, .GT. Pascal: div, mod COBOL: Add, Multiply

General: +, -, *, etc

52

Palabras Claves y Reservadas

Una palabra reservada es una palabra clave no declarable como identificador de usuario.

Una palabra clave es un identificador que constituye la parte no cambiante de una instrucción.

53

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

:

54

Ejemplo en ForTran

Las sentencias:

Do , If

NO son palabras reservadas,

Son palabras claves, por lo tanto el programador las puede usar como identificadores.

55

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.

56

Comentarios

Auto documentación del código fuente.

Comentarios en líneas separadas:

Fortran: en la primera columna: C

57

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: !

58

Abreviaciones

Relacionado con la legibilidad, por ejemplo:

• a = a+1 a++

• a = a+b a+=b

• a = a % b a%=b

59

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

60

Delimitadores

Se utilizan para demarcar una unidad sintáctica como:

Sentencia

Expresión.

Begin End, { }

( )

Ventajas

61

Else colgante:

If (x=0)then

Begin If (y=0)

then S1;

Endelse

S2;

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

62

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

63

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.

64

Expresiones

Funciones que acceden a ODD de un programa y retornan un valor.

Esta estructura sintáctica involucra:

• identificadores

• Operadores y

• Variables

65

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.

66

Sentencias

Mínima unidad constitutiva de código

Simples

Estructuradas

No permite instrucciones anidadas

Permite instrucciones anidadas

67

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

68

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.

69

Metalenguajes

Gramática formal destinada a la descripción de un lenguaje.

Existen tres metalenguajes comúnmente utilizados

• BNF (Backus-Naur-Form)

• Diagramas sintácticos

• CBL (COBOL-Like)

70

1.5 Semántica

71

BNF (Backus - Naur Form)

Notación desarrollada por los especialistas Backus y Naur para definir lenguaje Algol 60

• < >: 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.

Metasímbolos:

72

BNF Número real, identificador

<real> ::=

<letra> ::=

<secuencia> ::=

<secuencia>

<identificador> ::=

<letra>

<dígito>

<dígito> ::= 0

. <secuencia>

{<dígito>}0

|1|2|3|...8|9

{<letra> | <dígito>}0|B|C|...Y |Z|Aa|b|c...y|zA

73

BNF Expresión aritmética

 <exp>::=<término>::=<factor>::=

Expresión:

x

término

término

término

a*b - c/d a * bfactor

factor

<término>

| <término> +<término>

<factor>

|<factor> * <factor>

|<término> -<término>|<factor> / <factor>

<identificador>

|<constante>

(<exp>)

74

BNF Sentencia For de Pascal

<s- for> ::= For <identificador> := <intervalo> do <sentencia>

<intervalo> ::= < inicial> to <final> | <inicial> downto < final>

<inicial> ::= <exp>

<final> ::= <exp>

75

BNF Recursivas

  <entero>::=

.

0|1||..|9

| <dígito> <secuencia>

<dígito>

|

dígito>::=

<secuencia> ::=

<dígito>

<dígito><entero>

<real> ::=

<secuencia>

<secuencia>

76

BNF Recursivas

<identificador> ::=<secuencia> ::= <carácter><carácter> ::=

<letra>

<Mlista> ::=

( )

<lista> ::=

<elemento>

| <elemento> <lista><elemento>::

=<átomo>

| <Mlista>

| <letra> <secuencia>|

<carácter><secuencia>

<letra> | <dígito>

| ( <lista> )

Multilista: (1 2 (3 4 (5)6)7 8)

77

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>

78

BNF Otra vez la expresión aritmética REC

 <exp>::=<término>::=<factor>::=

Expresión:

x

término

término

término

a*b - c/d a * bfactor

factor

<término>

| <término> +<exp>

<factor>

|<factor> * <término>

|<término> - <exp>

|<factor> / <término>

<identificador>

|<constante>

(<exp>)

(a+b)*cEjemplo:

79

BNF Expresión Recursiva

a + b*c

Expresión

Término Expresión +

Factor

Identificador

a

*

Identificador

b

Factor

Identificador

c

b*c

Término

Factor Término

80

BNF Expresión RecursivaExpresión

Término Expresión -

Términoa - b - c

Factor

Identificador

a

Factor

-

Identificador

b

Factor

Identificador

c

b - c

Expresión

Término

81

BNF Expresión RecursivaExpresión

Término Expresión +

(a +b) *c

Factor

Identificador

a

*

Factor

Identificador

c

Término

Factor Término

(Expresión)

Término

Factor

Identificador

b

82

BNF Sentencias Pascal

<s-While>::=

While

<exp B>

do <sentencia>

<s-If>::=

|If <exp B> then <sentencia> else <sentencia>

If <exp B> then <sentencia>

83

BNF Sentencias C

<do-while>::=

do <sentencia> while <exp B>

do

{printf("Número ");

scanf("%d",&n);

}while (n<=0);

84

BNF Sentencias C

<switch>::=switch (<exp>) {<secuencia>}

<caso> ::=case<constante>

:<sentencias>;<secuencia> ::=<caso> <secuencia><caso>

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";}

| case <constante><sentencias>; break;:

<caso><defecto>

<defecto> ::=

default :<sentencias>;<constante>::

=enteros | caracteres

85

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:

86

Diagramas Sintácticos

<S> ::= <v1> | <v2> ··· | <vn>

Cada ocurrencia de un símbolo terminal corresponde al diagrama

Vn

V1

V2

Cada ocurrencia de un símbolo no terminal corresponde al diagrama

X

87

Diagramas Sintácticos

Una producción de la forma: <S> ::= {<x>}0

corresponde al siguiente diagrama

X

(mientras)

Una producción de la forma:

<S> ::= <x>{<x>}0

corresponde al siguiente diagrama

X

(repetir)

88

Diagramas Sintácticos Pascal

Identificador: Letra:

A

B

z

Dígito: 0

1

9

_

Letra

Dígito

Letra

89

Diagramas Sintácticos Pascal

Número Entero:

Dígito

Número Real:

DígitoDígito

90

Diagramas Sintácticos Pascal

Sentencia: Sentencia Compuesta:

Compuesta

Simple

Sentencia Simple:

Invocación

Asignación

Decisión

Iteración

Simple

;

Begin End

91

Diagramas Sintácticos Pascal

Sentencia Asignación:

Identificador := Exp

Sentencia if: If Exp B then Sentencia

else Sentencia

Sentencia while:

Exp B do SentenciaWhile

92

CBL COBOL - like

Constituye una extensión de la BNF destinada a la descripción sintáctica del lenguaje Cobol.

93

CBL COBOL - like

• Elementos opcionales se denotan entre paréntesis cuadrados x

• Elementos alternativos se listan verticalmente entre paréntesis llave

• La repetición de los elementos se indica mediante tres puntos a continuación de una ocurrencia del elemento x ...

• Elementos alternativos opcionales se listan verticalmente entre paréntesis cuadrados

94

CBL COBOL - like

<identificador> ::= <letra> ...

<digito><letra> -

<condición>::=

<identificador> IS NOTNUMERICALPHABETIC

<entero> ::= [ + ] <digito> ...

95

1.5 Semántica

96

1.5 Semántica

Se define como un conjunto de reglas que describen el comportamiento de ese lenguaje en tiempo de ejecución

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.

¿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?

97

Ejemplo

<fecha> ::= <d><d>/<d><d>/<d><d><d><d>

puede tener dos interpretaciones semánticas; por ejemplo:

Una expresión sintáctica, mediante BNF, como

09/04/2002 se entiende como

• 9 de Abril de 2002 en Chile

• 4 de Septiembre de 2002 en EEUU.

98

Métodos formales

Para especificar la semántica de una sentencia, lo haremos vía definición

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

99

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.

100

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

101

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

PreprocesadorCompiladorIntérpreteEnsambladorLigadorCargador

102

Capítulo 2

103

Pre-ProcesadorTraductor, 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

Preprocesador Programa en LAN estándar

Pre-procesador Compilador Ensamblador Cargador

C++ CLeng.Ensam.

CódigoReubicable

CódigoEjecutable

104

CompiladorEs un traductor cuyo lenguaje fuente es un lenguaje de alto nivel lenguaje objeto es un lenguaje intermedio orientado a la máquina.

Programa en Lenguaje de Alto

Nivel

Compilador Programa en L orientado a la

Máquina

Análisis lexicográficoAnálisis sintáctico

Generación de código

Optimización

código objeto

105

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)

106

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

Término Expresión +

Factor

Identificador

a

*

Identificador

b

Factor

Identificador

c

Término

Factor Término

a + b*c

107

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.

108

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.

109

IntérpreteEs 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

110

Diferencias: Compilador-Intérprete

El compilador : El intérprete :

Sólo traduce 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 lógica

Acepta las instrucciones según su secuencialidad física

111

EnsambladorTraductor, 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

112

Ligador

Traductor cuyo Lenguaje fuente es lenguaje orientado a la máquina

Programa en L orientado a la

máquina

Linker Programa en LM

código reubicable

Lenguaje objeto es el L orientado a la máquina, pero denominado código reubicable

Enlaza de manera conjunta código compilado independientemente en UN solo módulo de carga, libre de referencias de un módulo a otro.

113

Cargador

Traductor cuyo lenguaje fuente es lenguaje orientado a la máquina

reubicable

Programa en código reubicable

Loader Programa en LM

código real

Lenguaje objeto es el LM del computador. Módulo ejecutable

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.

Programa Ejecutable