Ensayo Los Compiladores

9
UNIVERSIDAD FERMÍN TORO VICERECTORADO ACADÉMICO DECANATO DE INGENIERIA ESCUELA DE COMPUTACIÓN SEDE CABUDARE Shearly Achji Adjam 20.829.265 Lenguaje de Programación Saia “A” Junio, 2015

Transcript of Ensayo Los Compiladores

Page 1: Ensayo Los Compiladores

UNIVERSIDAD FERMÍN TORO

VICERECTORADO ACADÉMICO

DECANATO DE INGENIERIA

ESCUELA DE COMPUTACIÓN

SEDE CABUDARE

Shearly Achji Adjam

20.829.265

Lenguaje de Programación

Saia “A”

Junio, 2015

Page 2: Ensayo Los Compiladores

La teoría de compiladores es un área de conocimientos fundamental para la

formación de los estudiantes de la ingeniería en computación.

Posee una relevancia práctica y teórica en la formación del futuro profesional, tanto

en el aspecto de la programación de computadoras como también, en la construcción de la

base teórica de conocimientos del mismo.

Es de vital importancia, que un profesional de la informática tenga una sólida

formación en este tema, debido a que, aunque durante su vida profesional no se dedique al

diseño de compiladores, sus aplicaciones podrán ser mucho más eficientes, si aplica

mencionados conocimientos adquiridos.

Por tal razón, en el presente ensayo, se abarcaron temas referentes a los

compiladores, programas fuente y destino, diferenciando las semejanzas entre ellos, para de

estar manera poder distinguirlos con claridad; de igual manera se mencionan las ventajas

que existen para que un sistema de procesamiento de lenguajes en el cual el compilador

produce un lenguaje ensamblador en vez de un lenguaje máquina y, qué ventajas hay en

cuanto al uso de “C” como lenguaje destino para un compilador. Finalmente, se

describieron algunas tareas que necesita realizar un ensamblador.

Page 3: Ensayo Los Compiladores

Hoy en día alrededor de todo el mundo se utilizan los llamados

“programas”, pero nunca se ha llegado a preguntar, ¿Qué son? o ¿De dónde

vienen?. Todo el software que se utiliza el día de hoy, es un derivado de un

lenguaje fuente (código fuente), que pasa por un proceso a través de un

compilador, el cual permite que sea más sencilla la interacción con la computadora

y sus componentes electrónicos.

Ahora bien, para entender qué diferencia hay entre uno y otro,

principalmente se debe de conocer que son cada uno por separado.

El lenguaje fuente (código fuente) de un programa informático (o software)

es un conjunto de líneas de texto que son las instrucciones que debe seguir la

computadora para ejecutar dicho programa. Por tanto, en el código fuente de un

programa está descrito por completo su funcionamiento. El lenguaje fuente de un

programa está escrito por un programador en algún lenguaje de programación,

pero en este primer estado no es directamente ejecutable por la computadora,

sino que debe ser traducido a otro lenguaje (el lenguaje máquina o código objeto)

que sí pueda ser ejecutado por el hardware de la computadora. Para esta

traducción se usan los llamados compiladores, ensambladores, intérpretes y otros

sistemas de traducción.

Mientras que el código objeto es el código que resulta de la compilación del

código fuente. Consiste en lenguaje máquina o bytecode y se distribuye en varios

archivos que corresponden a cada código fuente compilado. Para obtener un

programa ejecutable se han de enlazar todos los archivos de código objeto con un

programa llamado enlazador.

Page 4: Ensayo Los Compiladores

De esta manera, la gran diferencia que existe entre uno del otro, es que el

lenguaje fuente es la base para que pueda existir el programa destino (programa

objeto).

A continuación se presenta un cuadro comparativo detallando estos

aspectos:

PROGRAMA DESTINO

PROGRAMA FUENTE

Se le conoce como código objeto.

Se le conoce como código fuente.

Código que resulta de la compilación del

programa fuente.

Conjunto de líneas de texto, que son las

instrucciones que debe de seguir la

computadora para ejecutar mencionado

programa.

Para tener el programa ejecutable, es

necesario enlazar todos los archivos de

código objeto, con su respectivo

programa denominado enlazador.

Principio fundamental de todo programa

destino, siendo la base que los crea.

Caracteres traducidos por los

compiladores,intérpretes, ensambladores,

y otros sistemas de traducción.

Escrito por un programador, en un

lenguaje de programación.

Es ejecutable por la computadora, en su

primer estado, ya que su estado básico es

funcional siempre para el hardware.

No es directamente ejecutable por la

computadora, en su primer estado.

Como se sabe, la computadora no entiende directamente al Lenguaje

Ensamblador; es necesario traducirlo a Lenguaje Máquina. Siendo de esta

manera, como nacieron los compiladores del Lenguaje Ensamblador, que son

traductores que convierten el código fuente (en Lenguaje Ensamblador) a código

objeto (es decir, a Lenguaje de Máquina). Surge como una necesidad de facilitar al

programador la tarea de trabajar con lenguaje máquina sin perder el control directo

con el hardware.

Entendiendo este punto, se mencionan las ventajas principales de este tipo

de compiladores:

Page 5: Ensayo Los Compiladores

VELOCIDAD: El proceso de traducción que realizan los intérpretes, implica

un proceso de cómputo adicional al que el programador quiere realizar. Por

ello, nos encontraremos con que un intérprete es siempre más lento que

realizar la misma acción en Lenguaje Ensamblador, simplemente porque

tiene el costo adicional de estar traduciendo el programa, cada vez que lo

ejecutamos.

De ahí nacieron los compiladores, que son mucho más rápidos que los

intérpretes, pues hacen la traducción una vez y dejan el código objeto, que ya es

Lenguaje de Máquina, y se puede ejecutar muy rápidamente. Aunque el proceso

de traducción es más complejo y costoso que el de ensamblar un programa,

normalmente podemos despreciarlo, contra las ventajas de codificar el programa

más rápidamente.

TAMAÑO: Los compiladores e intérpretes generan más código máquina del

necesario; por ello, el programa ejecutable crece. Así, cuando es importante

reducir el tamaño del ejecutable, mejorando el uso de la memoria y

teniendo también beneficios en velocidad, puede convenir usar el lenguaje

Ensamblador. Entre los programas que es crítico el uso mínimo de

memoria, tenemos a los virus y manejadores de dispositivos (drivers).

Muchos de ellos, por supuesto, están escritos en lenguaje Ensamblador.

FLEXIBILIDAD: Las razones anteriores son cuestión de grado: podemos

hacer las cosas en otro lenguaje, pero queremos hacerlas más

eficientemente. Pero todos los lenguajes de alto nivel tienen limitantes en el

control; al hacer abstracciones, limitan su propia capacidad. Es decir,

existen tareas que la máquina puede hacer, pero que un lenguaje de alto

nivel no permite. Por ejemplo, en Visual Basic no es posible cambiar la

resolución del monitor a medio programa; es una limitante, impuesta por la

abstracción del GUI Windows. En cambio, en ensamblador es sumamente

sencillo, pues tenemos el acceso directo al hardware del monitor.

Page 6: Ensayo Los Compiladores

Un compilador Source-To-Source o transcompiler es un tipo de compilador

que toma el código fuente de un lenguaje de programación como su entrada

y salida del código fuente en otro lenguaje de programación.

Por ejemplo, se puede realizar una traducción de un

programa de Pascal a C.

Otro propósito de compilador Source-To-Source es la traducción de código

heredado de usar la próxima versión del lenguaje de programación subyacente

o una API que rompe la compatibilidad hacia atrás.

Dicho esto, ya que se entiende la definición de lo que es un compilador

Source-To-Source, las ventajas de que C sea su lenguaje destino son las

siguientes:

Es un lenguaje muy eficiente puesto que es posible utilizar sus

características de bajo nivel para realizar implementaciones óptimas.

Proporciona facilidades para realizar programas modulares y/o utilizar

código o bibliotecas existentes.

A pesar de su bajo nivel es el lenguaje más portado en existencia, habiendo

compiladores para casi todos los sistemas conocidos.

El código está formado.

Posee más rapidez al ejecutarlo.

Se modifica fácilmente.

Page 7: Ensayo Los Compiladores

La tarea fundamental de un ensamblador es traducir un programa en

lenguaje de ensamblador al código correspondiente en lenguaje de máquina. En

esencia, al ser el ensamblador un lenguaje de bajo nivel, las tareas que debe

realizar son las siguientes:

Convertir los códigos (“opcode” o mnemónicos: ej. LDA, STX) a su código

equivalente en lenguaje de máquina.

Convertir los operandos simbólicos (las etiquetas o variables) en las

direcciones correspondientes de los operandos.

Construir las instrucciones en lenguaje de máquina en el formato apropiado.

Convertir las constantes definidas en el programa en su verdadera

representación

Escribir el “listing” en lenguaje de ensamblador con el código en lenguaje de

máquina correspondiente.

Procesar las directrices al ensamblador (las directrices son instrucciones o

comandos dirigidos al ensamblador, que éste procesa y ejecuta al hallarlos

en el programa en lenguaje de ensamblador; estas directrices no se

traducen a lenguaje de máquina, si no que el ensamblador ejecuta alguna

acción, como reservar memoria para variables, entre otras).

En general, la mayoría de las tareas se puede realizar si se recorre el

programa línea por línea. Pero surge una dificultad si se trata de traducir una

instrucción cuyo operando está definido más abajo en el programa. Si esto ocurre,

el ensamblador desconoce la dirección del operando y la instrucción no se podría

ensamblar.

Page 8: Ensayo Los Compiladores

Muchas veces, hemos escuchado el término compilador, sobre todo dentro

de los campos de estudio que se especializan en la Informática, gracias a la

realización de este trabajo, se conoció su significado, lo que representa y su

marcada importancia de estos pequeños programas, los cuales son los

responsables de que existan todas las aplicaciones que utilizamos en nuestros

ordenadores a diario.

Un compilador es un pequeño programa informático, que se encarga de

traducir (compilar) el código fuente de cualquier aplicación que se esté

desarrollando. En pocas palabras, es un software que se encarga de traducir el

programa hecho en lenguaje de programación, a un lenguaje de máquina que

pueda ser comprendido por el equipo y pueda ser procesado o ejecutado por este.

Existen varios tipos de compiladores, los cuales se adecuan a los

requerimientos de los programadores. Podemos destacar los compiladores

cruzados, compiladores optimizadores, compiladores de una sola pasada y de

varias pasadas, compiladores JIT y los conocidos intérpretes, que traducen el

código del programa en tiempo real.

La importancia de los compiladores radica en que, sin estos programas no

existiría ninguna aplicación informática, ya que son la base de la programación en

cualquier plataforma.