Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Este artculo trata sobre los acontecimientos ms importantes en la historia de los lenguajes
de programacin. Para entrar en detalle en la lnea del tiempo de estos eventos, visite la
cronologa de los lenguajes de programacin.
Antes de 1940
Los primeros lenguajes de programacin preceden a la computadora moderna. En un inicio
los lenguajes eran cdigos.
La mquina del telar de Jacquard, creada en 1801, utilizaba los orificios en tarjetas perforadas
para representar los movimientos de un brazo de la mquina de tejer, con el objetivo de
generar patrones decorativos automticamente.
Durante un perodo de nueve meses entre 1842 y 1843, Ada Lovelace tradujo las memorias
del matemtico italiano Luigi Menabrea acerca de la nueva mquina propuesta por Charles
Babbage, la Mquina Analtica. Con estos escritos, ella aadi unas notas en las cuales
especificaba en detalle un mtodo para calcular los nmeros de Bernoulli con esta mquina, el
cual es reconocido por muchos historiadores como el primer programa de computadora del
mundo.
Los primeros cdigos de computadora estaban especializados segn sus aplicaciones. En las
primeras dcadas del siglo 20, los clculos numricos estaban basados en los nmeros
decimales. Eventualmente se fueron dando cuenta que la lgica poda ser representada con
nmeros, no slo con palabras. Por ejemplo, Alonzo Church fue capaz de expresar el clculo
lambda a travs de frmulas. La mquina de Turing estableci las bases para almacenar
programas como datos en la arquitectura de von Neuman de una computadora. Sin embargo,
a diferencia del clculo lambda, el cdigo de Turing no servira satisfactoriamente como base
para lenguajes de ms alto nivel- su principal uso es en el anlisis riguroso en la complejidad
algortmica.
Para algunas personas, lo que sera el primer lenguaje de programacin moderno depende de
cunto poder y legibilidad humana se requera antes de que se concediera el estado de
"lenguaje de programacin". Tanto el telar de Jacquard como la Mquina Diferencial de
Babbage, tenan lenguajes muy simples y extremadamente limitados para describir las
acciones que estas mquinas realizaran. Se puede incluso considerar los agujeros perforados
en los rollos de pianola como un limitado lenguaje de dominio especfico, a pesar de no estar
diseado para el consumo humano.
Entre algunos lenguajes importantes que fueron desarrollados en este perodo se encuentran:
1943 - Plankalkl (Konrad Zuse), diseado, pero sin implementar durante medio siglo
1943 - el sistema de codificacin ENIAC.
Una notacin matemtica exacta, Backus-Naur Form (BNF), fue utilizada para describir la
sintaxis del lenguaje. Todos los subsecuentes lenguajes de programacin han utilizado una
variante de BNF para describir la porcin libre del contexto de su sintaxis.
Algol 60 influenci particularmente en el diseo de lenguajes posteriores, de los cuales
algunos se hicieron ms populares. Los grandes sistemas de Burroughs fueron diseados
para ser programados en un subconjunto extendido de Algol.
Algunos de los lenguajes importantes que fueron desarrollados en este perodo incluyen:
1962 - SNOBOL
1963 - CPL (precursor de C)
1964 - BASIC
1964 - PL/I
1967 - BCPL (precursor de C)
1968-1979: estableciendo paradigmas fundamentales[editar]
El perodo comprendido entre finales de 1960 y finales de 1970 trajo un gran florecimiento de
lenguajes de programacin. La mayora de los paradigmas de lenguajes de programacin ms
importantes y actualmente en uso se inventaron en este perodo:
Simula, inventado en la dcada de 1960 por Nygaard y Dahl como un superconjunto de Algol
60, fue el primer lenguaje diseado para apoyar la programacin orientada a objetos.
C, en principio un lenguaje de programacin sistemas, fue desarrollado por Dennis Ritchie y
Ken Thompson en los Laboratorios Bell entre 1969 y 1973.
Smalltalk (mediados de los 70) proporcionaron un completo diseo de un lenguaje orientado a
objetos.
Prolog, diseado en 1972 por Colmerauer, Roussel y Kowalski, fue el primer lenguaje de
programacin lgica.
ML construy un sistema de tipos polimrfico (inventado por Robin Milner en 1973) en el tope
de Lisp, pionero en los lenguajes funcionales de programacin con tipado esttico.
Cada uno de estos lenguajes gener toda una familia de descendientes, y los lenguajes ms
modernos cuentan al menos uno de ellos en su ascendencia.
1968 - Logo
1969 - B (precursor C)
1970 - Pascal
1970 - Forth
1972 - C
1972 - Smalltalk
1972 - Prolog
1973 - ML
1975 - Scheme
1978 - SQL (inicialmente slo un lenguaje de consulta, posteriormente ampliado con
construcciones de programacin)
La dcada de 1980: consolidacin, mdulos, rendimiento[editar]
La dcada de 1980 fueron aos de consolidacin relativa en los lenguajes imperativos. En vez
de inventar nuevos paradigmas, se comenz a trabajar a partir de las ideas inventadas en la
dcada anterior. C++ combinaba la programacin orientada a objetos y la programacin de
sistemas. El gobierno de Estados Unidos estandariz Ada, un lenguaje de programacin de
sistemas destinado a ser utilizado por contratistas de defensa. En Japn y en otras partes, se
gastaron enormes sumas investigando los llamados lenguajes de programacin de quinta
generacin que incorporaban construcciones de la programacin lgica. La comunidad de los
lenguajes funcionales llevaron a cabo la estandarizacin de ML y Lisp. La investigacin en
Miranda, un lenguaje funcional, con evaluacin perezosa, comenz a tomar fuerza en esta
dcada.
Las tecnologas de los lenguajes continuaron sobre estas lneas entrando en la dcada de
1990.
1988 - Tcl
1988 - Mathematica
1989 - FL (Backus);
La dcada de 1990: la era de Internet[editar]
El rpido crecimiento de Internet en la dcada de 1990 fue el siguiente gran acontecimiento
histrico para los lenguajes de programacin. Con la apertura de una plataforma totalmente
nueva para los sistemas informticos, Internet cre una oportunidad adoptar nuevos
lenguajes. En particular, el lenguaje de programacin Java se hizo popular debido a su pronta
integracin con el navegador web Netscape Navigator, y varios lenguajes de scripting
alcanzaron un amplio uso en el desarrollo de aplicaciones personalizadas para servidores
web. La dcada de 1990 no vio ninguna novedad fundamental en los lenguajes imperativos,
pero s mucha recombinacin y la maduracin de viejas ideas. Esta era comenz la difusin
de los lenguajes funcionales. Una filosofa de conduccin grande era la productividad del
programador. Surgieron muchos lenguajes de aplicaciones de desarrollo rpido (RAD), los
cuales usualmente venan con un IDE, recolector de basura, y eran descendientes de
lenguajes anteriores. Todos estos lenguajes eran orientados a objeto. Estos incluan Object
Pascal, Visual Basic y Java. Java, en particular, recibi mucha atencin. Pero ms radicales e
innovadores que los lenguajes de RAD eran los nuevos lenguajes de script. Estos no
descendan directamente de otros lenguajes y ofrecieron nuevas sintaxis e incorporacin ms
liberal de otras caractersticas. Muchos consideran estos lenguajes de script ms productivos
que los lenguajes de RAD, aunque esto se debe a menudo a que es ms difcil escribir y
mantener largos programas que pequeos programas simples. Sin embargo, no es menos
cierto que los programas de script llegaron para convertirse en los ms prominentes en la
conexin con la Web.
1990 - Haskell
1991 - Python
1991 - Visual Basic
1991 - HTML (lenguaje de marcado de hipertexto)
1993 - Ruby
1993 - Lua
1994 - CLOS (parte del ANSI Common Lisp)
1995 - Java
1995 - Delphi (Object Pascal)
1995 - JavaScript
1995 - PHP
1996 - WebDNA
1997 - Rebol
1999 - D
Tendencias actuales[editar]
La evolucin de los lenguajes de programacin contina, tanto en la industria como en
investigacin. Algunas de las tendencias actuales incluyen:
2000 - ActionScript
2001 - C#
2001 - Visual Basic .NET
2002 - F#
2003 - Groovy
2003 - Scala
2003 - Factor
2007 - Clojure
2009 - Go
2011 Dart
Conocimientos bsicos
HISTORIA
Los primeros lenguajes de programacin surgieron de la idea de Charles Babagge, la cual se
le ocurri a este hombre a mediados del siglo XIX. Era un profesor matemtico de la
universidad de Cambridge e inventor ingls, que al principio del siglo XIX predijo muchas de
las teoras en que se basan los actuales ordenadores. Consista en lo que l denominaba la
maquina analtica, pero que por motivos tcnicos no pudo construirse hasta mediados del
siglo XX. Con l colaboro Ada Lovedby, la cual es considerada como la primera programadora
de la historia, pues realizo programas para aqulla supuesta mquina de Babagge, en tarjetas
perforadas. Como la maquina no llego nunca a construirse, los programas de Ada,
lgicamente, tampoco llegaron a ejecutarse, pero si suponen un punto de partida de la
programacin, sobre todo si observamos que en cuanto se empez a programar, los
programadores utilizaron las tcnicas diseadas por Charles Babagge, y Ada, que consistan
entre otras, en la programacin mediante tarjetas perforadas. A pesar de ello, Ada ha
permanecido como la primera programadora de la historia. Se dice por tanto que estos dos
genios de antao, se adelantaron un siglo a su poca, lo cual describe la inteligencia de la que
se hallaban dotados.
En 1823 el gobierno Britnico lo apoyo para crear el proyecto de una mquina de diferencias,
un dispositivo mecnico para efectuar sumas repetidas. Pero Babagge se dedic al proyecto
de la mquina analtica, abandonando la mquina de diferencias, que se pudiera programar
con tarjetas perforadas, gracias a la creacin de Charles Jacquard (francs). Este hombre era
un fabricante de tejidos y haba creado un telar que poda reproducir automticamente
patrones de tejidos, leyendo la informacin codificada en patrones de agujeros perforados en
tarjetas de papel rgido. Entonces Babagge intento crear la mquina que se pudiera programar
con tarjetas perforadas para efectuar cualquier clculo con una precisin de 20 dgitos. Pero la
tecnologa de la poca no bastaba para hacer realidad sus ideas. Si bien las ideas de
Babagge no llegaron a materializarse de forma definitiva, su contribucin es decisiva, ya que
los ordenadores actuales responden a un esquema anlogo al de la mquina analtica. En su
diseo, la mquina constaba de cinco unidades bsicas:
Unidad de entrada, para introducir datos e instrucciones.
Memoria, donde se almacenaban datos y resultados intermedios.
Unidad de control, para regular la secuencia de ejecucin de las operaciones.
Unidad Aritmtico-Lgica, que efecta las operaciones.
Unidad de salida, encargada de comunicar al exterior los resultados.
Adems, estos tres trabajos han de realizarse dentro de las ligaduras y capacidades de la
organizacin de una computadora y de las limitaciones fundamentales de la propia
"calculabilidad". El trmino "el programador" es un tanto amorfo, en el sentido de que camufla
importantes diferencias entre distintos niveles y aplicaciones de la programacin. Claramente
el programador que ha realizado un curso de doce semanas en COBOL y luego entra en el
campo del procesamiento de datos es diferente del programador que escribe un compilador
en Pascal, o del programador que disea un experimento de inteligencia artificial en LISP, o
del programador que combina sus rutinas de FORTRAN para resolver un problema de
ingeniera complejo, o del programador que desarrolla un sistema operativo multiprocesador
en ADA.
En este trabajo, intentare clarificar estas distinciones tratando diferentes lenguajes de
programacin en el contexto de cada rea de aplicacin diferente. El "diseador del lenguaje"
es tambin un trmino algo nebuloso. Algunos lenguajes (como APL y LISP) fueron diseados
por una sola persona con un concepto nico, mientras que otros (FORTRAN y COBOL) son el
producto de desarrollo de varios aos realizados por comits de diseo de lenguajes.
Los lenguajes de " Alto Nivel" son los ms utilizados como lenguaje de programacin. Aunque
no son fundamentalmente declarativos, estos lenguajes permiten que los algoritmos se
expresen en un nivel y estilo de escritura fcilmente legible y comprensible por otros
programadores. Adems, los lenguajes de alto nivel tienen normalmente las caractersticas de
" Transportabilidad". Es decir, estn implementadas sobre varias mquinas de forma que un
programa puede ser fcilmente " Transportado " (Transferido) de una maquina a otra sin una
revisin sustancial. En ese sentido se llama "Independientes de la maquina". Ejemplos de
estos lenguajes de alto nivel son PASCAL, APL y FORTRAN (para aplicaciones cientficas),
COBOL (para aplicaciones de procesamiento de datos), SNOBOL (para aplicaciones de
procesamiento de textos), LISP y PROLOG (para aplicaciones de inteligencia artificial), C y
ADA (para aplicaciones de programacin de sistemas) y PL/I (para aplicaciones de propsitos
generales).
Los "Lenguajes Ensambladores" y los "Lenguajes Maquina" son dependientes de la mquina.
Cada tipo de mquina, tal como VAX de digital, tiene su propio lenguaje maquina distinto y su
lenguaje ensamblador asociado. El lenguaje Ensamblador es simplemente una representacin
simblica del lenguaje maquina asociado, lo cual permite una programacin menos tediosa
que con el anterior. Sin embargo, es necesario un conocimiento de la arquitectura mecnica
subyacente para realizar una programacin efectiva en cualquiera de estos niveles lenguajes.
PARADIGMAS EN LENGUAJES DE PROGRAMACION
Existen diversos lenguajes y paradigmas de programacin para facilitar la tarea de
programacin en diferentes mbitos. Por ejemplo, la programacin orientada a objetos es un
paradigma dirigido al mejoramiento en la calidad del software por medio de la observacin de
Qu es un lenguaje de programacin?
Al igual que las personas nos comunicamos entre nosotras utilizando un lenguaje (por ejemplo
Espaol o Ingls), un lenguaje de programacin permite a las personas comunicarse con los
ordenadores para indicarles lo que tienen que hacer. Una persona que quiere que el
ordenador realice una determinada tarea escribe un programa en un lenguaje de
programacin determinado, y el ordenador (utilizando ciertos traductores llamados
compiladores e intrpretes) es capaz de realizar dicha tarea.
En este artculo pretendo dar una pequea idea sobre la evolucin de los lenguajes de
programacin, desde los primeros como FORTRAN o COBOL, hasta los ms difundidos en la
actualidad como C, Java o C#. No pretendo mencionar todos los lenguajes de programacin actualmente existen ms de 2.500 - sino centrarme en los que considero que han sido ms
relevantes e influyentes en el mundo del desarrollo de software.
Ya en 1960 aparece LISP, un lenguaje idneo para crear programas de inteligencia artificial
porque utilizaba conceptos de programacin funcional y recursividad. Aunque no es muy
utilizado para el desarrollo de aplicaciones empresariales, LISP sigue siendo utilizado hoy en
da en entornos docentes (yo mismo lo utilizo en una asignatura en la que se ensean
diversos paradigmas de programacin).
Tambin en 1960 aparece COBOL, un lenguaje preparado para procesar grandes cantidades
de informacin. Esto hizo que fuese ampliamente adoptado en bancos y grandes
organizaciones que siguen utilizndolo hoy en da.
El lenguaje Pascal aparece por primera vez en 1971, diseado por el profesor Niklaus Wirth
con el objetivo de facilitar el aprendizaje de la programacin a sus alumnos. Pascal fue muy
utilizado en la dcada de los 80 y los 90, y es el precursor de lenguajes como Delphi.
El lenguaje Java
Java es un lenguaje orientado a objetos diseado en 1990 por James Gosling y Patrick
Naughton, de la empresa Sun Microsystems. El origen del nombre Java es bastante curioso,
se rumorea que sus creadores discutan sobre cmo llamar al lenguaje mientras tomaban
caf, y al final les
gust el nombre de la marca del caf que tomaban, el caf Java. Su desarrollo se realiz
siempre con un concepto en mente: Write Once, Run Anywhere. Esto significa que Java se
dise pensando en que un programa escrito en este lenguaje pudiese ser ejecutado en
cualquier mquina, no slo ordenadores, sino tambin cualquier dispositivo electrnico como
calculadoras, dispositivos mviles, porttiles, etc. Esta idea de un len
guaje universal ya haba sido abordada por el lenguaje C y su estandarizacin ANSI, pero la
realidad es que no se consigui hasta la llegada de Java.
En la actualidad el uso de Java ha sido muy impulsado por la amplia influencia de Internet,
debido a la universalidad de Java por la capacidad de sus programas para ser ejecutados en
cualquier tipo de mquina.
est escrito en su mayor parte en lenguaje C. El lenguaje C++ tambin sigue siendo muy
utilizado, sobre todo en aplicaciones de escritorio orientadas al sistema operativo Windows.
El lenguaje COBOL tambin se utiliza mucho, sobre todo en entidades bancarias y grandes
empresas con sistemas mainframes para las que la fiabilidad del sistema es un factor clave, y
los costes y riesgos de migracin a otros lenguajes son hoy por hoy inasumibles. Al contrario
de las creencias populares que afirman que se trata de un lenguaje obsoleto y no utilizado,
algunos lo plantean como una buena alternativa para aquellos que buscan empleo.
Existen otros lenguajes que cada vez cobran ms importancia, tales como Ruby, Perl, Phyton
o PHP. Asimismo, el lenguaje Javascript (no confundir con Java) tambin est jugando un
papel importante en el desarrollo de aplicaciones, impulsado por la amplia difusin de Internet
y tecnologas emergentes como Ajax para la creacin de interfaces ricas de usuario (RIA: Rich
Application Interface).
El Futuro
Referencias