Ensayo Los Compiladores
-
Upload
shearly-achji -
Category
Engineering
-
view
36 -
download
8
Transcript of 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
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.
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.
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:
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.
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.
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.
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.
http://www.monografias.com/trabajos14/lenguaje-
ensamblador/lenguaje-ensamblador.
http://www.monografias.com/trabajos14/lenguaje-programac/lenguaje-
programac.shtml
http://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)