Escolar Documentos
Profissional Documentos
Cultura Documentos
GUIN-NDICE
1. INTRODUCCIN
4. EL PROCESO DE COMPILACIN
6.1. Fortran
6.2. Cobol
6.3. Basic
6.4. Pascal
6.5. C
6.6. C++
6.7. Modula-2
6.8. Ada
6.9. Lisp
6.10. Prolog
7. BIBLIOGRAFA
TM-24(
1. INTRODUCCIN
Es el nico lenguaje que entiende directamente el ordenador. Por esta razn, su estructura est
totalmente adaptada a los circuitos de la mquina y muy alejada de la forma de expresin y anlisis de los
problemas propia de los humanos. Esto hace que la programacin en este lenguaje resulte tediosa y
complicada, requirindose un conocimiento profundo de la arquitectura fsica del ordenador. Frente a
esto, el cdigo mquina hace posible que el programador utilice la totalidad de recursos que ofrece el
ordenador, obtenindose programas muy eficientes (que aprovechan al mximo los recursos existentes) en
tiempo de ejecucin y en ocupacin de memoria.
Las principales caractersticas del lenguaje mquina son las siguientes:
Constituye el primer intento de sustitucin del lenguaje mquina por uno ms cercano al usado por
los humanos. Este acercamiento se plasma en las siguientes aportaciones:
- Uso de una notacin simblica o nemotcnica para representar los cdigos de operacin. De
esta forma se evitan los cdigos numricos, tan difciles de manejar. Normalmente, los
cdigos nemotcnicos estn constituidos por abreviaturas de las operaciones en ingls. As,
por ejemplo, la suma se representa en la mayora de los ensambladores por ADD.
Aparte de esto, el lenguaje ensamblador presenta la mayora de los inconvenientes del lenguaje
mquina, como son su repertorio muy reducido de instrucciones, el rgido formato de las instrucciones, la
baja portabilidad y la fuerte dependencia del hardware. Por otro lado, mantiene la ventaja del uso ptimo
de los recursos hardware, permitiendo la obtencin de un cdigo muy eficiente.
TM-24(
Este tipo de lenguajes hacen corresponder a cada instruccin en ensamblador una instruccin en
cdigo mquina. Esta traduccin es llevada a cabo por un programa traductor denominado ensamblador.
Para solventar en cierta medida la limitacin que supone poseer un repertorio de instrucciones
tan reducido, se han desarrollado unos ensambladores especiales denominados macroensambladores.
Los lenguajes que traducen los macroensambladores disponen de macroinstrucciones cuya traduccin da
lugar a varias instrucciones mquina y no a una sola. Por ejemplo, existen macroinstrucciones para
multiplicar, dividir, transferir bloques de memoria principal a disco, etc.
Dado que el lenguaje ensamblador est fuertemente condicionado por la arquitectura del
ordenador que soporta, los programadores no suelen escribir programas de tamao considerable en
ensamblador. Ms bien usan este lenguaje para afinar partes importantes de programas escritos en
lenguajes de ms alto nivel. El lenguaje ensamblador sigue siendo importante, ya que, da al programador
el control total de la mquina, y como resultado genera un cdigo compacto, rpido y eficiente.
Algunos ejemplos de instrucciones en ensamblador son:
- Son independientes de la arquitectura fsica del ordenador. Esto permite utilizar los mismos
programas en ordenadores de arquitecturas diferentes (portabilidad) y, adems, no es
necesario conocer el hardware especfico de la mquina.
Durante esta etapa, el programa fuente se divide en sus elementos componentes, crendose una
representacin intermedia del mismo. Durante este proceso, es posible detectar posibles errores en la
escritura del programa.
Esta fase se suele introducir para mejorar la eficiencia del cdigo producido por el compilador.
Se toma el cdigo intermedio de forma global y se optimiza, adaptndolo a las caractersticas del
procesador al que va dirigido para mejorar los resultados de su ejecucin.
La optimizacin se realiza en cualquier parte del programa, pero es en los bucles donde se
consiguen los mejores resultados; por ejemplo, sacar una sentencia que se repite fuera del bucle,
consiguiendo que slo se ejecute una vez. De esta forma, se consigue un programa igualmente correcto,
pero que consume menos tiempo de ejecucin.
Un problema de la optimizacin es que incrementa el tamao y la complejidad del compilador.
Se traduce el cdigo intermedio optimizado a cdigo final, es decir, al lenguaje mquina (en algunos
casos a ensamblador) del procesador al que va dirigido el compilador. Para ello, se reserva la memoria
necesaria para cada elemento del cdigo intermedio, y cada instruccin en lenguaje intermedio es
traducida a varias instrucciones en lenguaje mquina.
TM-24(
Aunque es en la etapa de anlisis donde se detectan la mayora de los errores, cada etapa del proceso
puede encontrar errores. Para tratar adecuadamente un error, interviene el mdulo de tratamiento de
errores que comprende generalmente la realizacin de dos acciones:
- Diagnstico del error: Trata de buscar su localizacin exacta y la posible causa del mismo,
para ofrecer al programador un mensaje de diagnstico, que ser incluido en el listado de
compilacin.
- Recuperacin del error: Despus de detectado un error, cada fase debe tratarlo de alguna
forma para poder continuar con la compilacin y permitir la deteccin de ms errores,
aunque no se genere cdigo objeto.
Los tipos de errores que puede tener un programa son los siguientes:
En ocasiones, se indican determinados errores que pueden existir pero que no perjudican al resto
del proceso de compilacin e incluso pueden permitir el funcionamiento del programa final. Estos
mensajes de error se denominan advertencias o warnings. Un ejemplo tpico puede ser la declaracin de
una variable que no se utiliza en ningn bloque del programa.
Los lenguajes de programacin se pueden clasificar de acuerdo con diversos criterios. El criterio ms
simple que se puede considerar hace referencia a la proximidad del lenguaje con la mquina o con el
lenguaje natural. De acuerdo con este criterio, existen tres niveles:
- Lenguajes de alto nivel: El resto de los lenguajes, a los que ya hemos hecho referencia.
Dado que los lenguajes de programacin, en cierto modo, han tenido un desarrollo paralelo a la
evolucin de los ordenadores, se pueden clasificar atendiendo a su desarrollo histrico. Esta
clasificacin distingue cinco generaciones de lenguajes:
De forma muy general, los lenguajes de alto nivel se pueden dividir en lenguajes de propsito
general, que pueden ser empleados en cualquier tipo de aplicacin y lenguajes de propsito especial.
Desde el punto de vista del campo de aplicacin al que pertenece el lenguaje podemos considerar la
siguiente clasificacin:
Otra forma de clasificar los lenguajes de alto nivel tiene en cuenta el estilo de programacin
que fomentan, es decir, la filosofa de construccin de programas:
Lenguajes orientados al problema. Este tipo de lenguajes estn diseados para problemas
especficos, principalmente de gestin. Los programas estn formados por sentencias que
indican qu se quiere hacer. Generalmente, suelen ser generadores de aplicaciones que
permiten cierta automatizacin de la tarea de desarrollo de software de gestin.
TM-24(
6.1. Fortran
Fue desarrollado en 1954 por el equipo de John Backus bajo el control de IBM. El objetivo principal
era la produccin de un lenguaje que pudiera traducirse de forma eficaz a lenguaje mquina.
FORTRAN significa FORmula TRANslator y est considerado como el primer lenguaje de alto
nivel. Alcanz gran popularidad desde su primera versin en 1957. Se estandariz y mejor en 1966 y
nuevamente en 1977 y en 1990.
Est diseado para su uso en aplicaciones cientficas y tcnicas. Se caracteriza por su potencia en los
clculos matemticos, pero est limitado en todo lo relativo al tratamiento de datos no numricos. Por esta
razn, no ha sido usado extensamente en el mbito del microordenador, pero sigue siendo un lenguaje
comn en aplicaciones de investigacin, ingeniera y educacin.
6.2. Cobol
Su nombre proviene de la frase Common Business Oriented Language (lenguaje general para los
negocios). Es el lenguaje ms utilizado en aplicaciones de gestin y fue creado en 1960 por un comit
patrocinado por el departamento de defensa de los Estados Unidos.
Ha experimentado diversas actualizaciones hasta su versin COBOL ANS-85. Se gan una amplia
aceptacin como lenguaje estandarizado, siendo uno de los ms populares.
Las caractersticas ms interesantes de este lenguaje son: se asemeja al lenguaje natural (haciendo
uso abundante del ingls sencillo), es autodocumentado y ofrece grandes facilidades en el manejo de
ficheros, as como en la edicin de informes escritos.
Entre sus inconvenientes estn sus rgidas reglas de formato de escritura, la necesidad de escribir
todos los elementos al mximo detalle, la extensin excesiva en sus sentencias y la inexistencia de
funciones matemticas.
6.3. Basic
Se dise en 1965 para proporcionar a los principiantes un lenguaje fcil de aprender (Beginners
All-purpose Symbolic Instruction Code).
El principal objetivo que se pretenda al disear BASIC era la facilidad de uso y aprendizaje, incluso
a costa de la ineficiencia.
Sus principales aportaciones son las de ser un lenguaje interpretado e interactivo. Esto, unido a la
popularizacin de los microordenadores, ha hecho que este lenguaje se extienda con rapidez e incluso que
aparezcan gran diversidad de versiones que extienden y adaptan el lenguaje original, hacindolo til para
aplicaciones tcnicas y de gestin. La versin ms moderna, Visual Basic, soporta las caractersticas y
mtodos orientados a objetos.
6.4. Pascal
El PASCAL recibe su nombre en honor al filsofo y matemtico francs Blaise Pascal, que invent la
primera mquina mecnica para sumar. Este lenguaje fue desarrollado en 1970 por el matemtico suizo
Nicklaus Wirth. Los motivos fundamentales de su creacin son, por un lado, proporcionar un lenguaje
adecuado para la enseanza de los conceptos y tcnicas de programacin, y por otra parte, desarrollar
implementaciones del lenguaje que funcionen de forma fiable y eficiente sobre los ordenadores
disponibles. Estos objetivos han sido alcanzados en gran medida y, adems, con el tiempo ha llegado a ser
un lenguaje muy utilizado en todo tipo de aplicaciones.
Est diseado para ilustrar conceptos clave de programacin, como los tipos de datos, programacin
estructurada y diseo descendente. Trata de proporcionar un mecanismo para implementar esos
conceptos. Se ha convertido en el predecesor de otros lenguajes ms modernos, como Modula-2 y Ada.
6.5. C
El lenguaje C fue creado en 1972 por Dennis Ritchie, que junto con Ken Thompson haba diseado
anteriormente el sistema operativo Unix, y su intencin era conseguir un lenguaje idneo para la
programacin de sistemas que fuese independiente de la mquina. Desde entonces, tanto el Unix como el
TM-24(
C han tenido un enorme desarrollo y proliferacin, hasta convertirse en un estndar industrial para el
desarrollo de software.
Es un lenguaje moderno de propsito general que combina las caractersticas de un lenguaje de alto
nivel (programacin estructurada, tipos y estructuras de datos, recursividad, etc.) con una serie de
caractersticas ms propias de los lenguajes de ms bajo nivel. Esta cualidad del C hace posible que se
utilice la programacin estructurada para resolver tareas de bajo nivel, obteniendo un cdigo ejecutable
veloz y eficiente. Debido a sus especiales caractersticas, muchas personas consideran al C como un
lenguaje de nivel medio.
Se ha vuelto muy popular y es el lenguaje ms utilizado entre los desarrolladores profesionales de
software comercial. Adems, es un lenguaje pequeo (pocas instrucciones) y conciso (no tiene
instrucciones redundantes). El coste de un lenguaje tan potente y til es que no es particularmente fcil de
aprender. La programacin segura y fiable en este lenguaje requiere un conocimiento bastante profundo
del mismo.
6.6. C++
Es el sucesor del lenguaje C, fue desarrollado por Bjarne Stroustup en los laboratorios Bell a
principios de la dcada de los 80.
Introduce la programacin orientada a objetos en C. Los objetos proporcionan una forma
completamente nueva de ver los programas, una nueva filosofa de programacin.
Es un lenguaje muy poderoso y eficiente. Sin embargo, es an ms difcil de aprender que C. Dado
que C es un subconjunto de C++, es necesario aprender todo acerca de C y luego asimilar la filosofa de
la programacin orientada a objetos y el uso que C++ hace de la misma. No obstante, cada vez ms
programadores de C adoptan C++.
6.7. Modula-2
A finales de los aos 70, Nicklaus Wirth dirige el desarrollo del lenguaje MODULA-2, con la
intencin de incluir las necesidades de la programacin de sistemas y dar respuesta a las crticas recibidas
con respecto a las carencias de lenguaje Pascal.
Adems de incluir las caractersticas del lenguaje Pascal, el nuevo lenguaje soluciona las principales
carencias del mismo, como son la posibilidad de compilacin separada, creacin de bibliotecas,
programacin concurrente, mejora en el manejo de cadenas de caracteres, procedimientos de
entrada/salida y de gestin de la memoria, etc. Adems posee grandes facilidades para la programacin de
sistemas.
Este lenguaje tambin posee cualidades didcticas, por lo cual, ha sido ampliamente aceptado en la
comunidad universitaria como herramienta idnea para la enseanza de la programacin.
6.8. Ada
Constituye el ltimo intento de obtener un nico lenguaje para todo tipo de aplicaciones e incluye los
ltimos avances en tcnicas de programacin. Su diseo fue encargado por el departamento de defensa de
Estados Unidos y su estandarizacin fue publicada en 1983. El nombre de ADA se debe a Augusta Ada
Byron, condesa de Lovelace, considerada la primera programadora de la historia.
Entre las caractersticas del lenguaje se encuentran la compilacin separada, la programacin
concurrente, la programacin estructurada, su buena mantenibilidad, caractersticas de tiempo real, etc. El
principal inconveniente de este lenguaje es su gran extensin, que puede complicar su uso.
6.9. Lisp
Es un lenguaje de programacin pequeo y conciso, diseado en 1959 por John McCarthy en el MIT
par el trabajo con inteligencia artificial. Este lenguaje toma su nombre del procesamiento de listas, en
ingls LISt Processing.
Est pensado para resolver problemas de manipulacin de smbolos, que son los elementos bsicos
de este lenguaje, y representan objetos arbitrarios del dominio de inters que se est tratando.
El LISP es un lenguaje funcional, ya que, todo programa se puede ver como una funcin de alto nivel
que se aplica sobre otras funciones de ms bajo nivel para obtener determinados resultados. Para realizar
operaciones elementales pueden utilizarse funciones de una biblioteca.
TM-24(
Por sus caractersticas, este lenguaje no se parece en nada a otros lenguajes de programacin. A pesar
de ello, es un lenguaje fcil de aprender y es el ms comn dentro de las aplicaciones en inteligencia
artificial.
Un problema inicial fue que no se poda ejecutar eficientemente en muchos ordenadores, por lo que
han aparecido una serie de terminales dedicados al Lisp, con hardware y software de bajo nivel diseado
para soportar este lenguaje de forma eficiente. En la actualidad, existen versiones estndar de Lisp, como
Common Lisp y DG Common Lisp.
6.10. Prolog
7. BIBLIOGRAFA
Alberto Prieto
Introduccin a la Informtica
Mc Graw-Hill, 2 edicin, 1997