Este documento describe la evolución de los lenguajes de programación a través de las
generaciones. Comenzó con lenguajes de máquina en la primera generación, luego lenguajes
ensambladores en la segunda. La tercera generación introdujo lenguajes de alto nivel como
FORTRAN y COBOL. La cuarta generación buscó acelerar el desarrollo de aplicaciones y
reducir costos, mientras que la quinta generación se relacionó con lenguajes de inteligencia
artificial como LISP y PROLOG.
1. LOS LENGUAJES DE PROGRAMACIÓN
HENRY RAFAEL SALAZAR VEGA
V- 20.473.603
2. Es comúnmente aceptado que la historia de la computación moderna comienza con
Charles Babbage, en 1822, sin embargo las primeras computadoras mecánicas y
eléctricas no contaban con un lenguaje de programación tal como lo conocemos
ahora, la mayoría de ellas era construida para llevar a cabo una tarea especifica; por
lo tanto la forma de programarla era particular a cada computadora. Fue en el año
de 1945 cuando el matemático Jhon Von Neumann[1] fascinado por las posibilidades
de ENIAC[2], elaboró un estudio que demostró que una computadora podía tener
una estructura física muy simple y fija, y aun así ser capaz de ejecutar cualquier tipo
de programa mediante un control correcto, sin la necesidad de modificar la
computadora para esto.
A partir de esta innovación de Von Neunmann, que en conjunto se conoce como la
técnica de programa almacenado es que se inicia la era de los lenguajes de
programación.
3. Antes de que un computador pudiera ejecutar una tarea, debía programársele para
que lo hiciera colocando en la memoria principal un algoritmo apropiado, expresado
en lenguaje máquina, que no es más que una secuencia de números mediante los
que se representan las operaciones a realizar y los operandos con los que operar.
Originariamente, este proceso de programación se realizaba por el laborioso método
de expresar todos los algoritmos en el lenguaje de máquina, enfoque que hacía más
penosa la ya de por sí difícil tarea de diseñar un programa, y en la mayoría de los
casos daba pie a errores que era necesario localizar y corregir.
El primer paso para eliminar estas complejidades del proceso de programación fue
la asignación de nombres mnemónicos a los diversos códigos de operación, y
usarlos en vez de la representación hexadecimal, aumentando considerablemente la
comprensibilidad de las secuencias de instrucciones de la máquina. Luego un
programa especial llamado ensamblador se encargaba la traducción de los códigos
mnemónicos a instrucciones en lenguaje máquina. Las instrucciones en lenguaje
maquina, se expresaban en términos de la unidad de memoria mas pequeña, el bit
(digito binario 0 o 1 ).
(1951-1958)
4. En la época en que aparecieron los primeros lenguajes ensambladores, parecía que se había
dado un gigantesco salto hacia adelante en la búsqueda de mejores entornos de programación, y
es por ello que se les comenzó a llamar lenguajes de segunda generación, siendo la primera
generación la compuesta por los lenguajes máquina. Estamos en los primeros años 50 y
ejemplos de estos lenguajes podrían ser AUTOCODER, SPS, BAL o EASYCODER.
Una consecuencia importante de la íntima asociación entre los lenguajes ensamblador y de
máquina es que cualquier programa escrito en lenguaje ensamblador depende inherentemente
de la máquina; esto es, las instrucciones del programa se expresan en términos de los atributos
de una máquina específica. Por tanto, un programa escrito en lenguaje ensamblador no se puede
transportar fácilmente a otra máquina porque se tiene que reescribir de modo que se ajuste a la
configuración de registros y al conjunto de instrucciones de la nueva máquina.
Otra desventaja de los lenguajes ensambladores es que el programador, aunque no tiene que
codificar las instrucciones en forma de patrones de bits, sí está obligado a pensar en términos de
los pequeños pasos incrementales del lenguaje de la máquina, y no puede concentrarse en la
solución global de la tarea que está realizando. En pocas palabras, las instrucciones elementales
en que se debe expresar finalmente un programa no son necesariamente las instrucciones que
deben usarse al diseñarlo.
(1958-1964)
5. De acuerdo con esta idea, a mediados de los 50 se comenzaron a crear lenguajes de
programación que eran más propicios para la elaboración de software que los lenguajes
ensamblador de bajo nivel. El resultado fue la aparición de una tercera generación de lenguajes
de programación que difería de las anteriores en que sus instrucciones eran de alto nivel y
además independientes de las máquinas. Una vez escrito el programa con instrucciones de alto
nivel, se utilizaba un programa llamado traductor que traducía a lenguaje máquina los programas
escritos en lenguajes de alto nivel. Estos programas son parecidos a los ensambladores de la
segunda generación, solo que a menudo tienen que compilar, reunir varias instrucciones de
máquina para formar secuencias cortas que simularan la actividad solicitada por la instrucción de
alto nivel, y por esta razón se comenzó a llamar compiladores a este tipo de programa.
Unos de los primeros lenguajes de la tercera generación son FORTRAN y COBOL, por lo que
algunas clasificaciones les colocan en la segunda generación. También está ALGOL60. Después
de estos aparecen otros como BASIC (1965), SNOBOL, APL, PL/1 y SIMULA, entre otros. En los
70 aparecen lenguajes de alto nivel como PASCAL, C, MODULA y PROLOG. Más recientes son
Eiffel, Smalltalk, ADA, ML, C++ y Java.
Con la aparición de los lenguajes de tercera generación se alcanzó, en gran medida la meta de la
independencia respecto a las máquinas. Como las instrucciones de estos lenguajes no hacían
referencia a los atributos de ninguna máquina en particular, se podían compilar con la misma
facilidad en una u otras máquinas. Así, en teoría, un programa escrito en un lenguaje de tercera
generación se podía utilizar en cualquier máquina con sólo aplicar el compilador apropiado. Sin
embargo, la realidad no ha resultado ser tan simple.
(1964-1971)
6. Los lenguajes de cuarta generación pretenden superar los problemas surgidos de los lenguajes
de tercera generación:
Acelerar el proceso de construcción de aplicaciones.
Hacer aplicaciones fáciles y rápidas de modificar, reduciendo por tanto los costes de
mantenimiento.
Minimizar los problemas de búsqueda y corrección de errores.
Generar código ejecutable sin errores a partir de los requerimientos deseados, dados con
expresiones de alto nivel.
Hacer lenguajes fáciles de usar, de manera que el usuario final pueda resolver sus propios
problemas usando él mismo el lenguaje de programación.
Estos lenguajes permiten generar aplicaciones de cierta complejidad con un número de líneas
menor que el que tendríamos si usáramos un lenguaje de tercera generación. Para construir
aplicaciones el programador contará, aparte de un conjunto de instrucciones secuenciales, con
una gran diversidad de mecanismos como son: el rellenado de formularios, la interacción con la
pantalla, etc. Un ejemplo de este tipo de lenguajes es SQL.
(1971-1988)
7. La quinta generación de lenguajes se ha relacionado con los lenguajes que se utilizan en el
campo de la inteligencia artificial: sistemas basados en el conocimiento, sistemas expertos,
mecanismos de inferencia o procesamiento del lenguaje natural. Lenguajes como LISP o
PROLOG han sido la base de este tipo de lenguajes.
(1983 al presente)