Está en la página 1de 5

1.

LENGUAJES DE PROGRAMACIN
Un lenguaje de programacin se puede definir de distintas formas:
Es una notacin formal para describir algoritmos o funciones que sern ejecutadas por un
ordenador.
Es un lenguaje para de comunicar instrucciones al ordenador.
Es una convencin para escribir descripciones que puedan ser evaluadas.
Los lenguajes de programacin se pueden clasificar desde distintos puntos de vista:
Segn su grado de independencia de la mquina
Segn la forma de sus instrucciones
Por generaciones
Segn su grado de independencia de la mquina
Los lenguajes se pueden clasificar segn su grado de independencia de la maquina en que se ejecutan
en cinco grupos:
Lenguaje mquina: Es la forma ms baja de un lenguaje de programacin. Cada instruccin en un
programa se representa por un cdigo numrico, y unas direcciones que se utiliza para referir las
asignaciones de memoria del ordenador. El lenguaje mquina es la flotacin que entiende directamente
el ordenador. Est en binario o en notacin hexadecimal. Y el repertorio de sus instrucciones, as como
la estructura de stas. Estn ligadas directamente a la arquitectura de la mquina. Los ordenadores
actuales se basan en la arquitectura dela mquina de Von Neumann. La mquina de Von Neumann tiene
un repertorio de instrucciones basado en datos. Operaciones aritmticas, asignaciones de posiciones de
memoria y control de flujo.
Lenguaje ensamblador: Es esencialmente una versin simblica de un lenguaje mquina. Cada cdigo
de operacin se indica por un cdigo simblico. Por ejemplo ADD para adicin y MUL para
multiplicacin. Adems, las asignaciones de memoria se dan con nombres simblicos, tales como PAGO
y COBRO. Algunos ensambladores contienen macro instrucciones cuyo nivel es superior a las
instrucciones del ensamblador.
Lenguajes de medio nivel: Tienen algunas de las caractersticas de los lenguajes de bajo nivel aadidas
a las posibilidades de manejo de estructuras de control y de datos de los lenguajes de alto nivel.
Ejemplos de este tipo de lenguajes son el C y el FORTH.
Lenguajes de alto nivel o lenguajes orientados a usuarios: Tienen caractersticas superiores a los
lenguajes de tipo ensamblador. Aunque no tienen algunas posibilidades de acceso directo al sistema.
Facilitan la escritura de programas con estructuras de datos complejas, la utilizacin de bloques y
procedimientos o subrutinas. Dentro de los lenguajes de alto nivel se pueden destacar un tipo de
lenguajes. Denominados lenguajes orientados a objetos. Que permiten definir tipos abstractos de datos
que agrupan datos y mtodos. Los objetos son la instanciacin de una clase. Las clases se definen en
tiempo de compilacin. Y los objetos son definidos en ejecucin. Las clases pueden heredar propiedades
de otras clases. El acceso a los datos de un objeto tan slo se hace a travs de sus mtodos. Los mtodos
con un mismo nombre pueden manejar distintos tipos de objetos. Detectando el mtodo en tiempo de
ejecucin la operacin que debe realizar sobre el objeto. Ejemplos de este tipo de lenguajes son
Smailtalk. C++. Eiffel. Object Pascal y Turbo Pascal.
Lenguajes orientados a problemas concretos: Se utilizan para la resolucin de problemas en un campo
especfico. Ejemplos de tales lenguajes son el SQL (ver anexo XIII) y XBASE panel manejo de bases de
datos; SPSS (ver anexo X1) y BMDP para clculos estadsticos; Postsciipt (ver anexo 3CU) y Tnie Page
para la descripcin de pginas y el COGO para aplicaciones en ingeniera civil.

Los lenguajes se pueden clasificar segn la forma de sus instrucciones o segn los distintos paradigmas
de programacin:
Lenguajes imperativos o procedimentales: Son los que usan la instruccin o sentencia de asignacin
como construccin bsica en la estructura de los programas. Son lenguajes orientados a instrucciones.
Es decir la unidad de trabajo bsica de estos lenguajes es la instruccin o sentencia. Ejemplos de
lenguajes imperativos son: Pascal. C. C++. Ada. FORTRAN. COBOL. Modula-2 . Oberon.
Este tipo de lenguajes se caracteriza por:
Uso intensivo de variables.
Estructura de programas basada en instrucciones.
Manejo frecuente de las instrucciones de asignacin.
Resolucin de algoritmos por medio de estructuras de control secuenciales, alternativas y
repetitivas.
Incorporacin de mecanismos de manejo de bloques.
Gestin de memoria dinmica heap en tiempo de ejecucin.
Adecuacin al paradigma de orientaci6n a objetos.
Lenguajes declarativos: lgicos y funcionales: Son lenguajes de muy alto nivel cuya notacin es muy
prxima al problema real del algoritmo que resuelven. Hay dos tipos de lenguajes declarativos:
Los lenguajes funcionales y aplicativos
Los lenguajes lgicos definen sus instrucciones siguiendo un tipo de Lgica.
Lenguajes concurrentes: Son los que permiten la ejecucin simultnea de dos o varias tareas. La
concurrencia puede ser una caracterstica propia del lenguaje. O el resultado de ampliar las
instrucciones de un lenguaje no concurrente
Lenguajes orientados a objetos: Un lenguaje de programacin se dice que es un lenguaje basado en
objetos si soporta directamente tipos abstractos de datos y clases. Un lenguaje orientado a objetos es
tambin basado en objetos. Pero aade mecanismos para soportar La herencia y el polimorfismo
Los lenguajes se pueden clasificar por generaciones en:
La primera generacin est constituida por los lenguajes mquina y ensamblador desarrollados en los
aos cuarenta y cincuenta.
La segunda generacin comienza con el desarrollo del primer compilador de FORTRAN en el ao 1958
y continua hasta mediados de los aos sesenta con la normalizacin por el American National Standard
Institute (ANSI) de los lenguajes de programacin ligados hasta ese momento a marcas comerciales. Se
caracteriza por los lenguajes con asignacin esttica de memoria, es decir toda la memoria se asigna en
tiempo de compilacin. Estos lenguajes no tenan ni recursividad ni manejaban estructuras dinmicas de
datos. Ejemplos de estos lenguajes son FORTRAN y COBOL.
La tercera generacin est ligada al trmino programacin estructurada y se desarrolla entre
mediados de los aos sesenta y mediados de los aos setenta. Aunque a nivel de lenguajes sus races
estn en el lenguaje Algol 60. Como caractersticas principales de los lenguajes de esta generacin son:
uso de mdulos o subprogramas, variables locales, recursividad y estructuras dinmicas. Ejemplos de
estos lenguajes son: Algol 60, PLi Algol 68. Pascal. Modula. y C.
La cuarta generacin est caracterizada por lenguajes de muy alto nivel dedicados a tareas especficas,
en muchos casos denominados herramientas. Una gran parte de ellos estn dedicados a la gestin de
bases de datos y a la generacin de aplicaciones con herramientas CASE. El desarrollo de estos lenguajes
se produce desde mediados de los aos setenta hasta finales de los ochenta. Ejemplos: SQL. DB2,
DBASE. Ingress. Natural. Ideal. Application Factory. etc...
La quinta generacin est asociada a los lenguajes ligados a la Inteligencia Artificial. La mayor parte de
este tipo de lenguajes son versiones actualizadas o descendientes de los lenguajes Lisp y Prolog. Aunque
el lenguaje Lisp data de 1959. El desarrollo intenso de estos lenguajes se produce desde principios de los
aos ochenta a principios de los noventa. Ejemplos: Common Lisp, Prolog. Parlog. ML, Haskell, Miranda.
etc...
Generacin orientada a objetos. Es la ltima generacin puede decirse que comienza a mediados de
los aos ochenta.
Generacin visual. Comienza a principios de los aos noventa, ligado a la exigencia de los usuarios de
disponer de interfaces amigables. La mayor parte de las caractersticas visuales van orientadas al diseo
del interfaz de usuario.
Generacin internet. Comienza a mediados de los aos noventa, ligado a la gran explosin de internet
y a la necesidad de manejar aplicaciones en distintas plataformas dentro de toda la red. El lenguaje ms
caracterstico es Java pero tambin se podran incluir dentro de esta generacin: XML. HTML. VRML y
otros.
Ventajas de los lenguajes de alto nivel
Las ventajas de los lenguajes de alto nivel sobre los de bajo nivel son las siguientes:
Los lenguajes de alto nivel son ms fciles de aprender que los de bajo nivel. El aprendizaje de
muchos lenguajes de alto nivel necesita pocos o nulos conocimientos del hardware, ya que
dichos lenguajes son prcticamente independientes de la mquina. Sin embargo los lenguajes
de alto nivel estn cerrados a ciertas zonas de la mquina, a las que tienen acceso los lenguajes
de bajo nivel.
Los programadores w liberan de ocupaciones rutinarias con referencias a instrucciones
simblicas o numricas. Asignaciones de memoria. etc...Tales tareas se manejan por un
traductor que traslada el lenguaje de alto nivel al lenguaje mquina, y se evitan errores
humanos.
Un programador de lenguajes de alto nivel no necesita conocer la forma en que se colocan los
distintos tipos de datos en la memoria del ordenador.
La mayora de los lenguajes de alto nivel ofrecen al programador una gran variedad de
estructuras de control, que no se disponen en los lenguajes de bajo nivel. Por ejemplo los
lenguajes de alto nivel tienen las siguientes construcciones de control de flujo:
-Sentencias condicionales (tales como IF-THEN-ELSE o CASE)
-Bucles (FOR. WHILE, REPEAT)
-Estructuras de bloque (BEGIN-END)
Estas estructuras de programacin fomentan estilos y tcnicas de programacin estructurada.
Obtenindose programas fciles de leer, comprender y modificar. Con lo que se reducen los
costos de programacin al ser programas menos complicados que los realizados en lenguajes de
bajo niel.
Los programas escritos en lenguajes de alto nivel se depuran ms fcilmente que los escritos en
lenguaje mquina o ensamblador. Los lenguajes de alto nivel tienen construcciones que
eliminan o reducen ciertos tipos de errores de programacin, que aparecen en los lenguajes de
bajo nivel.
Los lenguajes de alto nivel tienen una mayor capacidad de creacin de estructuras de datos,
tanto estticas como dinmicas, que facilitan la resolucin de muchos problemas. Los lenguajes
orientados a objeto tambin pueden manejar tipos abstractos de datos, que permiten la
reutilizacin de cdigo.
Los lenguajes de alto nivel permiten un diseo modular de los programas. Con lo que se
consigue una divisin del trabajo entre los programadores. Obtenindose un mejor rendimiento
en la realizacin de aplicaciones.
Los lenguajes de alto nivel tambin incluyen la posibilidad de incorporar soporte para la
programacin orientada a objetos y la generosidad.
Finalmente los lenguajes de alto nivel son relativamente independientes de la mquina,
obtenindose programas que se pueden ejecutar en diferentes ordenadores. Tan slo hay que
volver a compilarlos o interpretarlos, reducindose costos y, en general. Pueden instalarse de
nuevo si se queda el ordenador obsoleto. Sin embargo todos los programas escritos en lenguaje
mquina y en ensamblador no se pueden implementar en otros ordenadores que no posean una
arquitectura compatible o se utilice algunos de los mtodos de transporte que se vern en el
apartado.
Inconvenientes de los lenguajes de alto nivel
Les lenguajes de alto nivel tambin tienen sus inconvenientes sobre los lenguajes de bajo nivel. La
comodidad del programador se paga en mayores tamaos de los ficheros ejecutables y
consecuentemente en mayores tiempos de compilacin y de ejecucin. As en los anexos I (lenguaje
mquina XOxX6), Il (lenguaje ensamblador XOXX6), IV (lenguaje C) y VIII (lenguaje C4-+) se han escrito
sendos programas que presentan en pantalla una cadena de caracteres con un saludo. Los cuatro
ficheros ejecutables realizan la misma operacin, mostrar en pantalla el mensaje Hola a lodo?, sin
embargo el tamao del fichero ejecutable se va incrementando segn se va ascendiendo en el nivel del
lenguaje (fig. 4). El lector puede comprobar que los tiempos de compilacin y ejecucin tambin se van
incrementando segn se va ascendiendo en el nivel del lenguaje. Sin embargo las ventajas enumeradas
en el apartado anterior suelen superar con creces. En la mayor parte de las aplicaciones, los
inconvenientes enunciados anteriormente.
Procesadores de lenguaje es el nombre genrico que reciben todas las aplicaciones informticas en las
cuales uno de los datos fundamentales de entrada es un lenguaje.
Un traductor es un programa que procesa el texto frente y genera un texto objeto. El traductor est
escrito en un lenguaje de implementacin (LI) o tambin denominado lenguaje host. El texto fuente est
escrito en lenguaje fuente (LF), por ejemplo un lenguaje de alto nivel. El texto objeto est escrito en
lenguaje objeto (LO), por ejemplo un lenguaje mquina, ensamblador u otro lenguaje de alto nivel. Se
suele utilizar la flotacin cii T, tal como se muestra en la figura 5. La flotacin en T tambin se puede
representar de una forma abreviada como: LFLILO.