Professional Documents
Culture Documents
Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel: Compilador
e intérprete.
Diferencias
Compiladores Interpretes
Analiza el programa fuente y "lo Analiza el programa fuente y "lo ejecuta
traduce" a otro equivalente escrito en directamente", sin generar ningún
otro lenguaje (por ejemplo, en el código equivalente. Su acción equivale
lenguaje de la máquina). Su acción a la de un intérprete humano, que
equivale a la de un traductor humano, traduce las frases que oye sobre la
que toma un libro y produce otro marcha, sin producir ningún escrito
equivalente escrito en otra lengua. permanente.
Una versión preliminar del lenguaje apareció en 1968 y el primer compilador totalmente
completo apareció a finales de 1970. Desde entonces, muchos compiladores han sido
construídos y están disponibles para diferentes máquinas. Durante muchos años, el
libro Pascal User Manual and Report , publicado por Wirth y Kathleen Jensen en 1974, ha
servido de facto como estándar de todas las versiones.
Ensambladores
Preprocesadores
Intérpretes
Compiladores
Ensambladores
Funcionamiento
El programa lee el fichero escrito en lenguaje ensamblador y sustituye cada uno de los
códigos mnemotécnicos que aparecen por su código de operación correspondiente en sistema
binario.
Preprocesadores
Traduce un lenguaje de alto nivel a otro, cuando el primero no puede pasar a lenguaje
máquina directamente.
Es un programa que forma parte del compilador y que “prepara” o modifica el código fuente
antes de ser traducido a código binario. Los cambios los hace interpretando aquellas líneas del
código que comienzan por el símbolo “#”. El uso de estas directivas es tan común en los
programas en C que parece que forman parte del lenguaje, pero en realidad son parte de un
lenguaje que sólo entiende el procesador.
Es el tipo de traductor más conocido. Se trata de un programa que traduce código fuente
escrito en un lenguaje de alto nivel (Pascal) en código máquina (no siempre). Son más rápidos
que los intérpretes pero presentan mayor dificultad a la hora de detectar errores.
Los lenguajes C y C++ son lenguajes que utiliza un compilador. El trabajo del compilador y su
función es llevar el código fuente escrito en C/C++ a un programa escrito en lenguaje
máquina. Entrando en más detalle, un programa en código fuente es compilado obteniendo
un archivo parcial (un objeto) que tiene extensión obj. Luego el compilador invoca al “linker”
que convierte al archivo objeto en un ejecutable con extensión exe; este último archivo es un
archivo en formato binario (ceros y unos) y puede funcionar por sí sólo.
Las etapas por las que debe pasar un programa escrito en un lenguaje de programación, hasta
poder ser ejecutable son:
Programa fuente: Programa escrito en un lenguaje de alto nivel (texto ordinario que contiene
las sentencias del programa en un lenguaje de programación). Necesita ser traducido a código
máquina para poder ser ejecutado.
Programa Ejecutable: Traducción completa a código máquina, realizada por el enlazador, del
programa fuente y que ya es directamente ejecutable.
• Los errores en tiempo de compilación son los que se producen antes de la ejecución del programa,
durante el proceso de compilación del programa.
• Los errores en tiempo de ejecución son los que se producen durante la ejecución del programa. Son
los más difíciles de encontrar, no son detectados por el compilador, ya que son errores de lógica, no de
sintaxis.
• Un programa puede interrumpirse bruscamente, por ejemplo si tenemos que hacer una división y el
divisor es cero, etc.
− Errores fatales: Son raros. Indican errores internos del compilador. Cuando ocurren la compilación
se detiene inmediatamente.
− Errores de sintaxis: Son los errores típicos de sintaxis. No detienen la compilación sino que al
finalizar ésta se mostrará la lista con todos los errores encontrados. Algunos errores suelen ser
consecuencia de otros cometidos con anterioridad. Con este tipo de errores no se puede obtener un
programa objeto y por lo tanto tampoco el ejecutable.
− Advertencias o avisos (warnings): Indican que hay líneas de código sospechosas que a pesar de
no infringir ninguna regla sintáctica, el compilador las encuentra susceptibles de provocar un error.
Cuando se detecta un warning la compilación no se detiene. Si en un programa fuente sólo se
detectan warnings sí que se podrá obtener un programa objeto, que tras el linkado dará lugar a un
programa ejecutable.
Lenguajes de programación
Un lenguaje de programación permite al usuario crear programas que serán entendidos por el
ordenador (directa o indirectamente) con el objetivo de realizar alguna tarea.
Lenguaje máquina
Los lenguajes máquina son aquellos cuyas instrucciones son directamente entendibles por el
ordenador sin la necesidad de traducción alguna. Sus instrucciones no son más que ristras
de ceros y unos (bits). Estas especifican la operación a realizar, los registros del procesador y
celdas de memoria implicados, etc.
Obviamente, este tipo de lenguajes serán fáciles de comprender para un ordenador pero muy
difíciles para el hombre. Esta razón nos lleva a buscar otro lenguaje para comunicarnos con el
ordenador.
Fue el primer lenguaje utilizado en la programación para las primeras computadoras, pero
dejó de utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes más
fáciles de aprender y utilizar, y que además reducen la posibilidad de cometer errores.
El lenguaje máquina es el único lenguaje que puede ejecutar una computadora, es específico
en cada arquitectura, es un código que es interpretado directamente por el microprocesador,
está compuesto por un conjunto de instrucciones ejecutadas en secuencia que representan
acciones que la máquina podrá tomar.
Para representar datos que contengan una información se utilizan una serie de unos y ceros
cuyo conjunto indica dicha información.
Todo código fuente en última instancia debe llevarse a un lenguaje máquina mediante el
proceso de compilación o interpretación para que la computadora pueda ejecutarlo.
Las instrucciones preparadas en cualquier lenguaje de máquina tienen por lo menos dos
partes, el comando u operación, que dice a la computadora cuál es la función que va a realizar
y la instrucción es el operando, que indica a la computadora donde hallar o almacenar los
datos y otras instrucciones que se van a manipular; el número de operandos de una
instrucción varía en las distintas computadoras, una instrucción en lenguaje máquina puede,
por ejemplo, representarse de la siguiente forma:
011011001010010011110110
Como se puede observar, estas instrucciones serán fáciles de leer por la computadora y difíciles
por un programador, y viceversa, esta razón hace difícil escribir programas en código o
lenguaje a máquina y requiere buscar otro lenguaje para comunicarse con la computadora,
pero que sea más fácil de escribir y leer por el programador. Para evitar la tediosa tarea de
escribir programas en lenguaje máquina, se han diseñado otros lenguajes de programación que
facilitan la escritura y posterior ejecución de los programas.
Lenguajes de bajo nivel (ensamblador)
La programación en lenguaje máquina es difícil, por ello se necesitan lenguajes que permitan simplificar este
proceso. Los lenguajes de bajo nivel han sido diseñados para este fin.
Estos lenguajes son generalmente dependientes de la máquina, es decir, dependen de un conjunto de instrucciones
específicas del ordenador. Un ejemplo de este tipo de lenguajes es el ensamblador. En él, las instrucciones se
escriben en códigos alfabéticos conocidos como mnemotécnicos (generalmente, abreviaturas de palabras inglesas).
Las palabras mnemotécnicas son mucho más fáciles de recordar que las secuencias de ceros y unos. Una instrucción
típica de ensamblador puede ser: ADD x,y,z .Esta instrucción significaría que se deben sumar los números
almacenados en las direcciones de memoria x e y, y almacenar el resultado en la dirección z. Pero aun así, a medida
que los programas crezcan en tamaño y complejidad, el ensamblador sigue sin ser una buena solución.
Los lenguajes de bajo nivel son más fáciles de utilizar que los lenguajes máquina, pero, al igual que ellos, dependen
de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en
lenguaje ensamblador son instrucciones conocidas como nemotécnicos. Por ejemplo, nemotécnicos típicos de
operaciones aritméticas son: en inglés, ADD, SUB, DIV, etc.; en español, SUM,RES,DIV,etc. Una instrucción
típica de suma sería:
ADD M, N, P
Esta instrucción podría significar “sumar el número contenido en la posición de memoria M al número almacenado
en la posición de memoria N y situar el resultado en la posición de memoria P”. Evidentemente es mucho más
sencillo recordar la instrucción anterior con un nemotécnico que su equivalente en código máquina”.
Los lenguajes de alto nivel son aquellos en los que las instrucciones o sentencias son escritas
con palabras similares a las de los lenguajes humanos (en la mayoría de los casos, el Inglés).
Esto facilita la escritura y comprensión del código al programador.
ADA
BASIC
COBOL
FORTRAN
C
Modula-2
Pascal
Java
Los programas escritos en lenguaje de alto nivel no son entendibles directamente por la
máquina. Necesitan ser traducidos a instrucciones en lenguaje máquina que entiendan los
ordenadores. Los programas que realizan esta traducción se llaman compiladores, y los
programas escritos en lenguajes de alto nivel se denominan programas fuente.
En los primeros lenguajes, la limitación era que se orientaban a un área específica y sus
instrucciones requerían de una sintaxis predefinida. Se clasifican como lenguajes
procedimentales o lenguajes de bajo nivel. Otra limitación de estos es que se requiere de
ciertos conocimientos de programación para realizar las secuencias de instrucciones lógicas.
Los lenguajes de alto nivel se crearon para que el usuario común pudiese solucionar un
problema de procesamiento de datos de una manera más fácil y rápida.
Por esta razón, a finales de los años 1950 surgió un nuevo tipo de lenguajes de programación
que evitaba estos inconvenientes, a costa de ceder un poco en las ventajas. Estos lenguajes se
llaman de tercera generación o de nivel alto, en contraposición a los de bajo nivel o de nivel
próximo a la máquina.
Bibliografía
https://www.uclm.es/area/egi/OFITEC/Descarga/HISTORIA%20COMPUT
ACION.PDF
http://leonelmartinez.udem.edu.ni/wp-content/uploads/2015/01/1-2-
generaciones-de-las-computadoras.pdf
https://niyi17.files.wordpress.com/2011/06/lenguaje-de-bajo-nivel.jpg
http://compiladorandrea.blogspot.com/p/proceso-de-compilacion.html
http://teleformacion.edu.aytolacoruna.es/PASCAL/document/intro.htm
Nombre: Juan Antonio
Código: 141601010
Curso: Informática