Documentos de Académico
Documentos de Profesional
Documentos de Cultura
de los lenguajes
de programacin
Vicente Trigo Aranda
1 En la actualidad, se acostumbra identificar el ensamblador, que es el programa traductor, con el cdigo de ensamblaje.
Y cuntos lenguajes de programacin existen? vaya a ser editado en Gran Bretaa. Desde luego, no
Pues sucede algo as como con los lenguajes humanos: tiene sentido que, quien compre su libro, tenga un
existen centenares, si bien slo unos pocos de ellos son intrprete cerca cada vez que desee leer su libro. Resul-
ampliamente utilizados. En este artculo me voy a cen- ta ms lgico traducir el libro al ingls, no? Cuando el
trar en los lenguajes de programacin ms difundidos, traductor haya finalizado su trabajo, se tendrn dos
siguiendo un criterio cronolgico, y lo finalizar presen- copias del libro; el original, en castellano, y su traduc-
tndole una somera relacin de otros lenguajes de pro- cin, en ingls, que ya puede ser leda por cualquier
gramacin ms minoritarios o que ya han cado en persona que conozca el idioma de Shakespeare, sin
desuso. necesidad de intrprete a su lado.
El equivalente informtico de esta modalidad de
traductor se denomina compilador2. Observe que, en
contraste con el intrprete, que traduce las instruccio-
INTRPRETES Y COMPILADORES nes una a una, el compilador traduce todo el programa
de golpe, dejndolo listo para ser ejecutado3. De esta
Antes de pasar a ver los principales lenguajes de forma, se logra mayor rapidez en la ejecucin y, ade-
programacin, debemos hacer un alto para comentar ms, se liberan recursos de la memoria, pues el progra-
una caracterstica comn a todos ellos: las rdenes ma, una vez compilado, no exige que el traductor est
dadas en cualquier lenguaje siempre deben traducirse residente en memoria, como sucede con los intrpre-
al cdigo binario del ordenador, que es el nico que tes. Por ejemplo, entre los lenguajes que siempre son
realmente comprende su unidad central. Esta labor de compilados se pueden destacar PASCAL, FORTRAN,
traduccin se lleva a cabo mediante un intrprete o un COBOL, etc.
compilador. Y qu diferencia hay entre estas dos
cosas? Retomemos el smil de los lenguajes humanos y Sin embargo, no todo son ventajas en los lenguajes
todo quedar aclarado. compilados. As, la depuracin del programa resulta
ms cmoda con un intrprete, ya que el compilador
Imagine que no sabe nada de ingls y necesita con- no informa de los posibles errores hasta el momento de
versar con alguien que slo conoce ese idioma. La la compilacin. Por otra parte, cada vez que se modifi-
forma ms sencilla de establecer comunicacin es con- ca algo en el programa es preciso volver a compilarlo
seguir una persona que ejerza de intrprete. Cuando de nuevo4.
diga una frase en castellano, su intrprete la traducir
al ingls y, de esta forma, podr entenderla aquella Una vez aclarada la diferencia entre intrprete y
persona con la que est conversando; anlogo proceso compilador, vayamos ya con el primer lenguaje de alto
se seguir para traducir del ingls al castellano. En nivel de amplia difusin.
resumen, mientras est presente su intrprete, la con-
versacin es posible.
El intrprete informtico realiza, ms o menos, el
mismo papel. Traduce instruccin a instruccin y, de FORTRAN
esta forma, favorece la interactividad, la depuracin y Al comienzo de la dcada de los 50, John Backus
puesta a punto del programa, la ejecucin inmediata estaba trabajando con SSEC (Selective Sequence Elec-
de una orden, etc. Por ejemplo, entre los lenguajes que tronic Calculator), uno de los primeros ordenadores de
suelen ser interpretados, se encuentran BASIC, LOGO, IBM, y desarroll el programa SPEEDCODING para l.
etc. Tomando ste como base, se emprendi, en otoo de
No obstante, existe otro tipo de traduccin, la escri- 1954, la creacin de un lenguaje para aadirle ms
ta, que presenta diferencias con respecto a la traduc- prestaciones al modelo IBM 704, que iba a salir pronto
cin oral. Suponga, por ejemplo, que uno de sus libros al mercado.
2 La introduccin del trmino compilador (compiler, en ingls) en informtica, se debe a la pionera Grace Hopper, que design con ese nom-
bre a su programa traductor A-O (1949). Ms tarde, desarroll el compilador B-O para UNIVAC.
3 Se llama programa fuente al programa original y programa objeto al programa resultante de la traduccin.
4Debido a que los intrpretes ocupan menos memoria que los compiladores y, adems, siempre deben estar en memoria, en los microorde-
nadores (recuerda el ZX-Spectrum o el VIC-20?) se inclua, a modo de sistema operativo, un lenguaje interpretado (BASIC, generalmente).
En 1956 se termin el compilador FORTRAN que se ha visto superado por otros muchos lenguajes,
(FORmula TRANslator) y se incluy en el IBM 704, ya que sus programas carecen de estructuracin y son
junto con un manual de 51 pginas (figura 2). difciles de seguir (figura 3). Sin embargo, todava se
sigue utilizando, sobre todo en el mbito universitario.
Por qu? La respuesta radica en la gran biblioteca de
subrutinas y funciones que se ha ido creando en sus
ms de treinta aos de existencia.
COBOL
A finales de los 50, el Departamento de Defensa
USA estaba bastante preocupado con los lenguajes de
programacin existentes, especialmente por dos razo-
nes: los programas no podan llevarse de un ordenador
a otro y resultaban bastante difciles de leer y modificar.
Para solventar estos inconvenientes, patrocin una
conferencia sobre lenguajes (CODASYL, COnference
on DAta SYstems Languages), que tuvo lugar en 1959
y en la que participaron las grandes empresas del sec-
tor (IBM, Sperry Rand, Honey Well, etc.). Como era
previsible, formaba parte del comit la gran dama de la
informtica, Grace Hopper (figura 4).
BASIC
John G. Kemeny y Thomas E. Kurtz eran profesores
del Dartmouth College (New Hampshire) y, en 1964,
disearon un nuevo lenguaje que permitiera introducirse
a sus estudiantes en los sistemas de tiempo compartido.
Ese lenguaje, al que llamaron BASIC por su sencillez5, es,
sin duda, el ms difundido, aplicndose tanto en tareas
de gestin como en aplicaciones cientficas (figura 6).
http://www.truebasic.com/
C
En los Laboratorios Bell (New Jersey) trabajaron dos
de los investigadores ms conocidos de la moderna infor-
mtica, Kenneth Thompson y Dennis Ritchie (figura 11),
creadores del sistema operativo UNIX, en 1969.
PASCAL
A principios de los 70, el profesor suizo Niklaus
Wirth (figura 13), del Instituto Politcnico Federal de
Zurich, emprendi la creacin de un nuevo lenguaje Figura 14. Portada del libro que divulg el PASCAL
(PASCAL) que permitiera introducirse en la programa-
cin de una forma fcil pero a la vez potente y, sobre Durante ms de un dcada, Turbo PASCAL ha sido
todo, siguiendo unas pautas estructuradas. De hecho, sinnimo de PASCAL, pero, por desgracia, en el ao
PASCAL es el lenguaje ms sencillo que posibilita el 2000, Borland dej de darle soporte tcnico y su pre-
acceso a la informtica terica: descomposicin modu- sencia es cada da menor en el mbito de la programa-
lar, recursividad, punteros, etc. cin, sobreviviendo a duras penas en el mundo univer-
8 Posteriormente, se reescribi UNIX en C. Tambin estn desarrollados en C el propio compilador C y la mayora de sistemas operativos.
9 En C el operador ++ equivale a incrementar la variable. Como el nuevo lenguaje incrementaba la potencialidad de C con la programacin
orientada a objetos, se opt por el nombre C++.
10 Poco despus, para solventar todos los inconvenientes que presentaba PASCAL, Wirth dise el lenguaje MODULA-2 (MODUlar LAngua-
je number 2), que est basado en el manejo de mdulos, como bloques independientes.
11 Microsoft, que haba lanzando su propia versin de PASCAL (Quick PASCAL), acab retirndola del mercado.
sitario. Sin embargo, en 1995 surgi una nueva ver- puestas puedan deducirse lgicamente de los conoci-
sin, DELPHI, que ampla PASCAL a la programacin mientos dados al inicio.
visual e intenta hacerle la competencia a Visual BASIC.
Como es fcil suponer, PROLOG no est destinado
al clculo cientfico. Su aplicacin en el campo de la
inteligencia artificial, definiendo objetos y establecien-
PROLOG do relaciones, permite resolver problemas lgicos,
desarrollar sistemas expertos, investigar en la compren-
En 1972, Robert Kowalski (universidad de Edim- sin del lenguaje humano, etc.
burgo) y Alain Colmerauer y Phillippe Roussell (univer-
sidad de Aix-Marseille) expusieron la revolucionaria
idea de que la lgica poda emplearse como lenguaje
de programacin. Siguiendo esta lnea, al ao siguien- ADA
te, el grupo de inteligencia artificial de la universidad
de Aix-Marseille comenz a disear ese lenguaje, al Quince aos despus de intentar uniformizar los
que se llam PROLOG (PROgramation LOGique). lenguajes con COBOL, el Departamento de Defensa
USA percibi que su objetivo no se haba cumplido, ni
mucho menos12. Por ese motivo, en 1975 form un
grupo de trabajo para evaluar los lenguajes existentes
en aquel entonces13 y ver si alguno de ellos poda
adaptarse a las necesidades del Departamento.
Y qu condiciones deba cumplir el lenguaje dese-
ado? En principio, deba permitir el diseo de progra-
mas modulares y estructurados, de modo que fuesen
fciles de leer y de depurar. Tambin era necesario
Figura 15. Alain Colmerauer que, como deba controlar instrumentos militares de
todo tipo, gestionase sin problemas cualquier perifrico.
PROLOG es el prototipo de lenguaje declarativo Adems, tena que aceptar el trabajo en paralelo, de
por excelencia. Y qu es eso de declarativo? Todos los modo que varios procesos se ejecutaran de forma
lenguajes que hemos ido viendo hasta ahora son algo- simultnea o cuasisimultnea.
rtmicos; es decir, los ordenadores se consideran Qu lenguaje eligi el grupo de trabajo? Lo cierto es
mquinas de Turing a las que debemos indicar todos y que ninguno le convenci y en su informe final propuso
cada uno de los pasos a seguir para realizar una cierta la creacin de un nuevo lenguaje, recomendando que se
tarea. Frente a estos lenguajes imperativos, los declara- basara en PASCAL, PL/I (ver ltimo apartado) y ALGOL
tivos no estn basados en rdenes sino en descripcio- 68, ya que eran los ms apropiados de los evaluados14.
nes. En otras palabras, en los programas PROLOG se
proporcionan al ordenador una serie de conocimientos Poco despus, se convoc un concurso para desa-
sobre un tema, junto con una serie de reglas, y el pro- rrollar un nuevo lenguaje que se ajustara a los requeri-
grama nos contestar todas aquellas preguntas que mientos del Departamento de Defensa. Se presentaron
deseemos hacerle sobre el tema siempre que las res- 17 propuestas que, tras una seleccin previa, quedaron
12 Se estima que, a comienzos de los ochenta, sus ordenadores manejaban del orden de cuatrocientos lenguajes distintos, si bien muchos de
ellos eran dialectos creados especficamente para determinados equipos militares. Teniendo en cuenta, adems, que los programas tenan un
promedio de cien mil lneas de cdigo, no es extrao que hubiera un cierto caos informtico.
13 Los lenguajes evaluados fueron: ALGOL 60, ALGOL 68, CMS-2, COBOL, CORAL 66, CS-4, ECL, EUCLID, FORTRAN, HAL/S, JOVIAL
J-3B, JOVIAL J-73, LIS, LTR, MORAL, RTL/2, PASCAL, PDL/2, PEARL, PL/I, SIMULA 67, SPL/1, TACPOL.
14 The unanimous recommendations of the evaluation committee, adopted unanimously by the HOLWG were:
That none of the evaluated languages met the requirements to such an extent as to be selected with little or no modifications for a DoD-
wide standard;
That it appeared feasible within the state-of-the-art to construct a single language to meet essentially all of the requirements;
That the construction of such a language would most likely be done by modification (albeit substantial) of an existing language. The
approaches recommended as a basis for further development were the language families of PL/I, Pascal, and ALGOL-68.
LISP
Durante un encuentro sobre inteligencia artificial
celebrado en el verano de 1956, H. A. Simon, A.
Newell y J. C. Shaw describieron su lenguaje IPL
(Information Processing Language), creado para el
ordenador JOHNIAC. Inspirndose en ese lenguaje, en
1958 John McCarthy cre el LISP (LISt Processing lan-
guage) como parte de un proyecto de inteligencia arti-
ficial del MIT, teniendo como soporte un equipo IBM
70418. Se trata de un lenguaje conciso e interactivo,
basado en el tratamiento de listas (de ah su nombre),
ya que tanto los programas como los datos se estructu-
ran mediante listas. Figura 19. La direccin es: http://www.jovial.hill.af.mil
18 Para conocer ms a fondo la historia de LISP, segn John McCarthy, vaya a la siguiente direccin:
http://www-formal.stanford.edu/jmc/history/lisp/lisp.html
19El nombre original del lenguaje era OVIAL (Our Own Version of the International Algebraic Language) pero se le aadi la J inicial por-
que, segn palabras de Jules Schwartz, director del proyecto: In the late 1950s, society wasnt quite as free thinking as it is today. The name
OVIAL seemed to have a connotation relative to the birth process that did not seem acceptable to some people.
PL/I
Este lenguaje fue desarrollado por IBM, a partir de
1963, que deseaba un lenguaje polivalente, en el senti-
do de que poda aplicarse tanto a gestin como al mbi-
to cientfico. Buscando aunar las ventajas de COBOL,
FORTRAN y ALGOL, PL/I20 result un lenguaje muy Figura 21. Nygaard y Dahl, ya fallecidos, recibieron
flexible y potente, por lo que todava sigue en uso. el premio Turing de la ACM en el ao 2001
RPG FORTH
A principios de los 60, IBM comenz a desarrollar Este lenguaje fue creado a finales a los 60 por
un lenguaje orientado la obtencin de informes (ven- Charles H. Moore, para controlar los radiotelescopios
tas, pagos, etc.) en el mbito de gestin (RPG son las de Kitt Peak y procesar sus datos. Se trata de un len-
siglas de Report Program Generator). En 1964 sali al guaje22 funcional e interactivo que ha ido evolucionan-
20 PL/I son las siglas de Programming Language/I, donde I representa el uno El primer lenguaje de programacin? El nmero uno de los
lenguajes de programacin?
21 Por ejemplo, en:
http://www.simula-c.de/download.htm
http://www.ifi.uio.no/~cim/sim_index.shtml
22 El origen de su nombre es ciertamente curioso. Moore consideraba que su lenguaje era tan avanzado que deba pertenecer a la cuarta
(fourth, en ingls) generacin de ordenadores (en aquel entonces estaban en la tercera). Pero como su implementacin tuvo lugar en un IBM
1130 que slo admita identificadores de cinco letras, perdi la U y se qued en FORTH.
do con el paso del tiempo. Debido a la poca memoria 80) y ofrece un entorno completo para el desarrollo de
que ocupa y a su rapidez, fue uno de los primeros en programas.
difundirse entre los microordenadores (figura 22).
COMAL
Destinado a la informtica educativa en los pases
escandinavos, fue desarrollado por Benedict Loefstedt
y Borge Christensen en 1973, combinando las ventajas
de BASIC y PASCAL (sus siglas corresponden a COM-
mon Algorithmic Language). En 1980 se estandariz y
todava sigue siendo utilizado, sobre todo en la Europa
del norte.
Se ha quedado con ganas de conocer ms lengua-
jes? Si la respuesta es afirmativa, puede darse un paseo
por la Web Dictionary of Programming Languages
(figura 23), donde encontrar referencias y comenta-
rios sobre un centenar y medio de lenguajes.
Figura 22. FORTH para Commodore
LSE
Con objeto de que el profesorado francs de secun-
daria fuese capaz de crear sus propios materiales edu-
cativos informticos, se dise el lenguaje este lenguaje
(Lenguage Symbolique dEnseignement) en 1971, que
no tuvo mucho xito23.
SMALLTALK
Creado por Alan Kay en el Centro de Investigacio-
nes Xerox de Palo Alto, en los primeros 70, es un len-
guaje muy influenciado por SIMULA, estando tambin Figura 23. Su direccin es http://cgibin.erols.com/ziring/cgi-
orientado a objetos. Tuvo sucesivas versiones (72, 76 y bin/cep/cep.pl
23En la Escuela Superior de Electricidad se desarrollaron, entre 1968 y 1976, varios lenguajes con una filosofa similar: LSD, LSE, LSG y
LST.