Vous êtes sur la page 1sur 11

TEMA 24 - Resumen

LENGUAJES DE PROGRAMACIN. TIPOS. CARACTERSTICAS.

GUIN-NDICE

1. INTRODUCCIN

2. TIPOS DE LENGUAJES DE PROGRAMACIN

2.1. Lenguaje mquina

2.2. Lenguaje ensamblador

2.3. Lenguajes de alto nivel

3. TRADUCTORES: COMPILADORES E INTRPRETES

4. EL PROCESO DE COMPILACIN

4.1. Anlisis del programa fuente

4.2. Sntesis del programa objeto

4.3. Deteccin y tratamiento de errores

5. CLASIFICACIN DE LOS LENGUAJES DE PROGRAMACIN

5.1. Clasificaciones de los lenguajes de alto nivel

6. EJEMPLOS DE LENGUAJES DE ALTO NIVEL

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

Un lenguaje de programacin es un conjunto de smbolos y de reglas para combinarlos, que se usan


para expresar algoritmos. Los lenguajes de programacin, al igual que los lenguajes que usamos para
comunicarnos, poseen un lxico (vocabulario o conjunto de smbolos permitidos), una sintaxis (reglas
que indican cmo realizar las construcciones del lenguaje) y una semntica (reglas que permiten
determinar el significado de las construcciones correctas del lenguaje).
Para que un ordenador pueda procesar un programa escrito en un determinado lenguaje de
programacin, es necesario realizar previamente una traduccin del programa al lenguaje que entienda
dicho ordenador, siguiendo una serie de fases.

2. TIPOS DE LENGUAJES DE PROGRAMACIN

2.1. Lenguaje mquina

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:

- Las instrucciones se expresan en el alfabeto binario, pudindose utilizar cdigos


intermedios (octal y hexadecimal).
- Los datos se referencian por medio de las direcciones de memoria donde se encuentran (no
aparecen nombres de variables o de constantes).
- Las instrucciones realizan operaciones muy simples.
- Existe muy poca versatilidad para la redaccin de las instrucciones, ya que, tienen un
formato rgido en cuanto a la posicin de los distintos campos.
- El lenguaje mquina depende y est ntimamente ligado a la CPU del ordenador. Esto hace
que los programas en dicho lenguaje no sean transferibles de un modelo de ordenador a otro,
es decir, existe baja portabilidad.

- En un programa en lenguaje mquina no pueden incluirse comentarios que faciliten la


legibilidad del mismo.

2.2. Lenguaje ensamblador

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.

- Direccionamiento simblico. En lugar de utilizar direcciones binarias absolutas, los datos


pueden identificarse con nombres.

- Se permite el uso de comentarios entre las lneas de instrucciones, haciendo posible la


redaccin de programas ms legibles.

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:

MOV CX, 50 ; Poner el registro CX a 50

CMP CX, 0 ; Es CX igual a cero?

2.3. Lenguajes de alto nivel

Los esfuerzos encaminados a hacer la labor de programacin independiente de la mquina dieron


como resultado la aparicin de los lenguajes de programacin de alto nivel. Estos lenguajes, ms
evolucionados, utilizan palabras y frases relativamente fciles de entender y proporcionan tambin
facilidades para expresar alteraciones del flujo de control de una forma bastante sencilla e intuitiva.
Las caractersticas fundamentales de los lenguajes de alto nivel son las siguientes:

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

- Normalmente, una sentencia da lugar, al ser traducida, a varias instrucciones en lenguaje


mquina.

- Utilizan notaciones cercanas a las habituales en un determinado mbito. Las operaciones se


expresan con sentencias muy parecidas al lenguaje matemtico o al lenguaje natural. Se
utilizan, por lo general, palabras o trminos en ingls.

La utilizacin de conceptos habituales suele implicar las siguientes cualidades:

a) Las instrucciones se expresan por medio de texto, conteniendo caracteres alfanumricos y


caracteres especiales.

b) Se puede asignar un nombre simblico a determinados componentes del programa, para


facilitar su comprensin. En los lenguajes imperativos, el programador puede definir las
variables que desee, dndoles los nombres que considere oportuno, y siendo las reglas para
la denominacin de las mismas poco restrictivas.
c) Se suelen incluir instrucciones potentes de uso frecuente que son ofrecidas por el lenguaje
de programacin. Por ejemplo, se suelen ofrecer funciones matemticas de uso comn
(seno, coseno, etc.), operadores especficos de entrada/salida, operadores de tratamiento de
cadenas de caracteres, etc.

d) Pueden incluirse comentarios en las lneas de instrucciones, o en lneas especficas de


comentarios. Esto facilita la legibilidad de los programas, tanto para el propio programador,
como para otras personas.

Como consecuencia de este alejamiento de la mquina y acercamiento a las personas, los


programas escritos en lenguajes de programacin no pueden ser interpretados directamente por el
ordenador, siendo necesario realizar previamente su traduccin a lenguaje mquina. Hay dos tipos de
traductores, que vamos a considerar en la siguiente seccin, los compiladores y los intrpretes.
TM-24(

3. TRADUCTORES: COMPILADORES E INTRPRETES

Un traductor es un metaprograma que toma como entrada un programa (o parte de un programa)


escrito en lenguaje simblico, alejado de la mquina, denominado programa fuente y proporciona como
salida otro programa, semnticamente equivalente, escrito en un lenguaje comprensible por el hardware
del ordenador, denominado programa objeto. Veremos dos tipos de traductores, los compiladores e
intrpretes, que representan dos aproximaciones muy distintas a la tarea de permitir el funcionamiento de
los programas escritos en un determinado lenguaje de programacin de alto nivel.
Un compilador traduce completamente un programa fuente, escrito en un lenguaje de alto nivel, a un
programa objeto, escrito en lenguaje ensamblador o mquina. El programa fuente suele estar contenido en
un archivo, y el programa objeto puede almacenarse como archivo en memoria masiva para ser procesado
posteriormente, sin necesidad de volver a realizar la traduccin. Una vez traducido el programa, su
ejecucin es independiente del compilador, as, por ejemplo, cualquier interaccin con el usuario slo
estar controlada por el sistema operativo. Como parte importante de este proceso de traduccin, el
compilador informa al usuario de la presencia de errores en el programa fuente, pasndose a crear el
programa objeto slo en el caso de que no hayan sido detectados errores (por lo general, suele cancelarse
la compilacin al detectar un error).
La traduccin por un compilador (la compilacin) consta de dos etapas fundamentales, que a veces
no estn claramente diferenciadas a lo largo del proceso: la etapa de anlisis del programa fuente y la
etapa de sntesis del programa objeto. Cada una de estas etapas conlleva la realizacin de varias fases. El
anlisis del texto fuente implica la realizacin de un anlisis del lxico, de la sintaxis y de la semntica.
La sntesis del programa objeto conduce a la generacin de cdigo y su optimizacin.
Un intrprete permite que un programa fuente escrito en un determinado lenguaje vaya
traducindose y ejecutndose directamente, sentencia a sentencia, por el ordenador. El intrprete capta
una sentencia fuente, la analiza e interpreta, dando lugar a su ejecucin inmediata, no crendose, por
tanto, un archivo o programa objeto almacenaje en memoria masiva para posteriores ejecuciones. La
ejecucin del programa estar supervisada por el intrprete.
En la prctica, el usuario crea un archivo con el programa fuente. Esto suele realizarse con un editor
especfico del propio intrprete del lenguaje. Segn se van almacenado las instrucciones simblicas, se
analizan y se producen los mensajes de error correspondientes; as, el usuario puede proceder
inmediatamente a su correccin. Una vez creado el archivo fuente, el usuario puede dar la orden de
ejecucin y el intrprete lo ejecuta lnea a lnea. Siempre el anlisis antecede inmediatamente a la
ejecucin.
Si utilizamos un intrprete para traducir un programa, cada vez que necesitemos ejecutar el programa
se volver a analizar, ya que, no se genera un fichero objeto. En cambio, con un compilador, aunque sea
ms lenta, la traduccin slo debe realizarse una vez. Adems los traductores no permiten realizar
optimizaciones del cdigo (que eliminan rdenes innecesarias compactando el cdigo) ms all del
contexto de cada sentencia del programa.
La principal ventaja de los intrpretes frente a los compiladores es que resulta ms fcil localizar y
corregir errores de los programas, ya que la ejecucin de un programa bajo un intrprete puede
interrumpirse en cualquier momento para conocer los valores de las distintas variables y la instruccin
fuente que acaba de ejecutarse. Con un compilador esto no se puede realizar, salvo que el programa se
ejecute bajo el control de un programa especial de ayuda denominado depurador (debugger). Por este
motivo, los intrpretes resultan ms pedaggicos para aprender a programar, ya que el alumno puede
detectar y corregir ms fcilmente sus errores.
4. EL PROCESO DE COMPILACIN

Por ser los compiladores el tipo de traductor ms utilizado en la actualidad, desarrollaremos el


proceso de compilacin, que consiste en la traduccin de un programa fuente, escrito en lenguaje de alto
nivel, a su correspondiente programa objeto, escrito en lenguaje mquina, dejndolo listo para la
ejecucin con poca o ninguna preparacin adicional.
Antes del proceso de compilacin, se crea el programa fuente utilizando cualquier aplicacin
disponible con capacidades de edicin de textos.
Para llevar a cabo la compilacin, el programa debe residir en memoria principal
simultneamente con el compilador. El resultado de la compilacin puede dar lugar a la aparicin de
errores, en cuyo caso no se genera el programa objeto, sino que se realiza un listado de compilacin, un
informe indicando la naturaleza y situacin de los errores detectados por el compilador en el programa
fuente. Con el programa editor se corrigen y se comienza de nuevo el proceso.
TM-24(

Una vez finalizada la compilacin y obtenido el programa objeto, se somete a un proceso de


montaje donde se enlazan los distintos mdulos que lo componen, en caso de tratar con programas que
poseen subprogramas (que pueden ser compilados separadamente). Adems, se incorporan las
denominadas rutinas de biblioteca en caso de solicitarlas el propio programa. Este proceso de montaje es
realizado por un programa denominado montador o encuadernador, que tambin recibe el nombre de
editor de enlace o linker.
La compilacin es un proceso complejo que consume a veces un tiempo muy superior a la propia
ejecucin del programa. Este proceso consta, en general, de dos etapas fundamentales: la etapa de
anlisis del programa fuente y la etapa de sntesis del programa objeto. Cada una de estas etapas conlleva
la realizacin de varias fases.
El compilador utiliza internamente una tabla de smbolos para introducir determinados datos que
necesita. Esta tabla interviene prcticamente en todas las fases del proceso de compilacin; as mismo, el
compilador posee un mdulo de tratamiento de errores que permite determinarlas reacciones que se
deben producir ante la aparicin de cualquier tipo de error.

4.1. Anlisis del programa fuente

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.

4.1.1. Anlisis lexicogrfico

Se examina el programa fuente de izquierda a derecha, reconociendo las unidades bsicas de


informacin pertenecientes al lenguaje. Estas unidades bsicas se denominan unidades lxicas o tokens.
Un token es un elemento o cadena (secuencia de caracteres) que tiene un significado propio en el
lenguaje.
Adems de reconocer cada token, almacena en la tabla de smbolos aquella informacin del
smbolo que pueda ser necesaria para las restantes fases de compilacin.
En el caso de que no existan errores en este primer anlisis, se obtiene una representacin del
programa formada por:

- La descripcin de smbolos en la tabla de smbolos.


- Una secuencia de smbolos en la que se incluye, junto a cada smbolo, una referencia a la
ubicacin de dicho smbolo en la tabla de smbolos. Esta secuencia es denominada tira de
tokens.

En esta nueva representacin, se ha eliminado previamente toda la informacin superflua, como


comentarios, tabulaciones y espacios en blanco no significativos.
Los errores que pueden ser reconocidos se deben a la deteccin de cadenas de caracteres del
programa fuente que no se ajustan al patrn de ningn token, como identificadores de variables
incorrectos, nmeros expresados incorrectamente, cadenas de caracteres mal delimitadas, etc.

4.1.2. Anlisis sintctico

La sintaxis de un lenguaje de programacin especifica cmo deben escribirse los programas


basndose en un conjunto de reglas sintcticas que determinan la gramtica del lenguaje. Un programa es
sintcticamente correcto cuando sus estructuras (expresiones, sentencias, asignaciones, etc.) aparecen
dispuestas de forma correcta de acuerdo a la gramtica del lenguaje.
El anlisis sintctico recibe la tira de tokens del analizador lexicogrfico e investiga en ella los
posibles errores sintcticos que aparezcan, como expresiones estructuradas incorrectamente, falta de
algn token dentro de una sentencia, formato incorrecto en una asignacin, etc.
En caso de no encontrar errores, se agrupan los componentes lxicos en frases gramaticales que
sern utilizadas en la sntesis del programa objeto. Estas frases gramaticales se suelen representar
mediante un rbol sintctico que pone de manifiesto la estructura jerrquica de los componentes de un
programa.

4.1.3. Anlisis semntico


TM-24(

Una construccin de un lenguaje de programacin puede ser sintcticamente correcta y carecer


de significado. Por tanto, si queremos generar cdigo en lenguaje mquina con el mismo significado que
el cdigo fuente, tendremos que determinar la validez semntica de las construcciones del cdigo fuente.
El anlisis semntico se encarga de estudiar la coherencia semntica del cdigo fuente a partir de la
identificacin de las construcciones sintcticas y de la informacin almacenada en la tabla de smbolos. El
anlisis semntico debe ser capaz de detectar construcciones sin un significado correcto. Por ejemplo,
asignar a una variable de tipo entero un valor de tipo cadena de caracteres, sumar dos valores booleanos,
etc.

4.2. Sntesis del programa objeto

Construye el programa objeto a partir de la representacin obtenida en la etapa de anlisis.

4.2.1. Generacin de cdigo intermedio

Se traduce el resultado de la etapa de anlisis (en el caso de ausencia de errores) a un lenguaje


intermedio propio del compilador. Esta representacin intermedia (cdigo intermedio) debe poseer las
siguientes caractersticas:

- Debe ser independiente de la mquina.


- Debe ser fcil de producir.
- Debe ser fcil de traducir a un lenguaje mquina.

Esta fase aparece, generalmente, en aquellos compiladores construidos para su implantacin en


distintas mquinas, ya que su existencia hace que todos los mdulos de anlisis del compilador sean
comunes para todas las mquinas (aumenta la portabilidad del compilador y se abaratan sus costes de
construccin).

4.2.2. Optimizacin de cdigo

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.

4.2.3. Generacin de cdigo objeto

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(

4.3. Deteccin y tratamiento de errores

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:

- Errores lexicogrficos: Se producen por la aparicin de tokens no reconocibles, es decir,


cadenas que no se ajustan al patrn de ningn smbolo elemental del lenguaje.
- Errores sintcticos: Aparecen cuando se violan las reglas de sintaxis del lenguaje.
- Errores semnticos: Se detectan cuando aparece una secuencia sintcticamente correcta,
pero que carece de sentido dentro del contexto del programa fuente.
- Errores lgicos: Son debidos a la utilizacin de un algoritmo o expresin incorrecta para el
problema que se trata de resolver.
- Errores de ejecucin: Son errores relacionados con desbordamientos, operaciones
matemticamente irresolubles, etc.

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.

5. CLASIFICACIN DE LOS LENGUAJES DE PROGRAMACIN

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 bajo nivel: Lenguajes mquina.

- Lenguajes de nivel medio: Lenguajes ensambladores y macroensambladores.

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

- Primera generacin: Lenguajes mquina.

- Segunda generacin: Ayudas a la programacin, como los ensambladores.

- Tercera generacin: Lenguajes de alto nivel imperativos, que siguen vigentes en la


actualidad, como Pascal, Modula-2, Fortran, Cobol, C y Ada.

- Cuarta generacin: Lenguajes o entornos de programacin orientados bsicamente a


aplicaciones de gestin y bases de datos, como SQL, Natural, etc.

- Quinta generacin: Lenguajes orientados a aplicaciones en Inteligencia Artificial, como


Lisp y Prolog.
TM-24(

5.1. Clasificaciones de los lenguajes de alto nivel

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:

Aplicaciones cientficas: En las que predominan las operaciones numricas o matriciales


propias de algoritmos matemticos. Lenguajes adecuados para estas aplicaciones son
Fortran y Pascal.

Aplicaciones de procesamiento de datos: Donde son frecuentes las operaciones de creacin,


mantenimiento y consulta sobre ficheros y bases de datos. Dentro de este campo estaran
aplicaciones de gestin empresarial, como programas de nminas, contabilidad, facturacin,
control de inventario, etc. Lenguajes aptos para este tipo de aplicaciones son Cobol y SQL.

Aplicaciones de tratamiento de textos: Asociadas al manejo de textos en lenguaje natural.


Lenguajes adecuados para ello son el Snobol y el C.

Aplicaciones en inteligencia artificial: Realizacin de programas que emulan el


comportamiento inteligente: algoritmos de juegos, programas de comprensin del lenguaje
natural, visin artificial, robtica y sistemas expertos. Los lenguajes que se suelen utilizar en
estos casos son el Lisp y el Prolog.

Aplicaciones de programacin de sistemas: Programacin de mdulos de sistemas


operativos, compiladores, ensambladores, intrpretes y, en general, aquellos de interfaz entre
el hardware y los usuarios. Tradicionalmente se utilizaba el lenguaje ensamblador, pero en la
actualidad se muestran muy adecuados los lenguajes Ada, C y Modula-2.

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 imperativos o procedurales. Estos lenguajes se fundamentan en el uso de


variables para almacenar valores y el uso de instrucciones que indican las operaciones a
realizar sobre los datos. La mayora de los lenguajes de alto nivel son de este tipo.

Lenguajes declarativos. En este caso, el proceso por el cual se ejecuta el programa no


aparece de forma explcita. Los programas se construyen mediante la definicin de
funciones (lenguajes funcionales como Lisp) o expresiones lgicas que indican las
relaciones entre determinadas estructuras de datos (lenguajes de programacin lgica como
Prolog).

Lenguajes orientados a objetos. El diseo de los programas se centra ms en los datos y su


estructura. Los programas consisten en descripciones de unidades denominadas objetos que
encapsulan los datos y las operaciones que actan sobre ellos. Uno de los lenguajes ms
usados en esta filosofa es el C++.

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. EJEMPLOS DE LENGUAJES DE ALTO NIVEL

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

El PROLOG (PROgramming Logic) es un lenguaje basado en la lgica, apropiado para un gran


nmero de aplicaciones en bases de datos e inteligencia artificial. Ha sido el lenguaje ms utilizado en
Europa para tal propsito.
Permite al programador expresar una serie de tareas basndose en la descripcin de los objetos que
intervienen en la misma (hechos y reglas) y las relaciones lgicas que existen entre ellos (predicados), en
lugar de hacerlo mediante un algoritmo. Lleva incorporada la programacin de operaciones y todo el
esfuerzo de programacin consiste en especificar adecuadamente los hechos y las reglas para despus
establecer las preguntas que podrn ser inferidas de forma automtica.
Frente al resto de los lenguajes empleados en sistemas expertos, permite desarrollarlos sin
demasiados conocimientos de programacin, ya que no requiere programar ningn algoritmo. Puede
utilizarse en educacin, para ensear lgica y tcnicas de resolucin de problemas.

7. BIBLIOGRAFA

Alberto Prieto
Introduccin a la Informtica
Mc Graw-Hill, 2 edicin, 1997

Alfonso Urea Lpez


Fundamentos de Informtica
Ra-ma, 1997