Sei sulla pagina 1di 9

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.
Herman Hollerith se percat de que poda codificar la informacin en tarjetas perforadas cuando
observ a los conductores de trenes codificar la apariencia de los tickets del tren con la posicin de los
agujeros perforados en estos. En 1890 Hollerith codific los datos del censo en tarjetas perforadas.
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.
Como muchos primeros en la historia, el primer lenguaje de programacin moderno es difcil de
identificar. Desde un inicio, las restricciones de hardware definan el lenguaje. Las tarjetas perforadas
permitan 80 columnas, pero algunas de estas seran utilizadas para una clasificacin de cada tarjeta.
FORTRAN inclua algunas palabras reservadas provenientes del Ingls, como IF, GOTO (go to) y
CONTINUE. El uso del tambor magntico para la memoria implicaba que los programas
informticos tuvieran que estar intercalados con las rotaciones del tambor. Por lo tanto los programas
eran muy dependientes del hardware.
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.

Los aos 40
En la dcada de 1940 fueron creadas las primeras computadoras modernas, con alimentacin elctrica.
La velocidad y capacidad de memoria limitadas forzaron a los programadores a escribir programas, en
lenguaje ensamblador muy afinados. Finalmente se dieron cuenta de que la programacin en lenguaje
ensamblador requera de un gran esfuerzo intelectual y era muy propensa a errores.
En 1948, Konrad Zuse public un artculo acerca de su lenguaje de programacin Plankalkl. Sin
embargo, no fue implementado en su vida y sus contribuciones fueron aisladas de otros desarrollos.
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.
1949 - 1954 -- una serie de conjuntos de instrucciones nemotcnicas, como la de ENIAC, comenzando
en 1949 con C-10 para BINAC (que luego evolucionara en UNIVAC). Cada conjunto de instrucciones
estaba destinado a un fabricante especfico.

Las dcadas de 1950 y 1960


En los cincuenta, los tres primeros lenguajes de programacin modernos, cuyos descendientes an
continan siendo utilizados, son:
FORTRAN (1955), creado por John Backus et al.;
LISP (1958), creado por John McCarthy et al.;
COBOL (1959), creado por el Short Range Committee, altamente influenciado por Grace Hopper.
Otro hito a finales de 1950 fue la publicacin, por un comit Americano y Europeo de cientficos de la
computacin, de un nuevo lenguaje para algoritmos; el Reporte deALGOL 60 ("ALGOrithmic
Language"). Este reporte consolid muchas ideas que estaban circulando en aquel entonces, y
proporcion dos innovaciones importantes para los lenguajes de programacin:
Estructuras de bloques anidadas: las secuencias de cdigo y las declaraciones asociadas se pueden
agrupar en bloques sin tener que pertenecer explcitamente a procedimientos separados;
mbito lxico: un bloque puede tener sus propias variables, procedimientos y funciones, invisible al
cdigo fuera de dicho bloque, por ejemplo, ocultamiento de informacin.
Otra innovacin, relacionada con esto, fue cmo el lenguaje fue descrito:
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.
Las ideas fundamentales de Algol se continuaron, produciendo Algol 68:
la sintaxis y la semntica se hizo an ms ortogonal, con rutinas annimas, un sistema de tipificacin
recursiva con funciones de orden superior, etc.;
y no slo la parte libre del contexto, sino que tanto la sintaxis como la semntica del lenguaje
completo fueron definidos formalmente, en trminos de una gramtica de Van Wijngaarden, un
formalismo diseado especficamente para este propsito.
Las variadas pero poco usadas caractersticas de Algol 68 (por ejemplo, bloques simultneos y
paralelos) y su complejo sistema de atajos sintcticos y coerciones automticas de tipo lo hicieron
impopular entre los ejecutores y se gan una reputacin de ser difcil. Niklaus Wirth sali del comit de
diseo para crear el sencillo lenguajePascal.
Algunos de los lenguajes importantes que fueron desarrollados en este perodo incluyen:
1951 - Regional Assembly Language
1952 - Autocode
1954 - IPL (precursor de LISP)
1955 - FLOW-MATIC (precursor de COBOL)
1957 - FORTRAN (primer compilador)
1957 - COMTRAN (precursor de COBOL)
1958 - LISP
1958 - ALGOL 58
1959 - FACT (precursor de COBOL)
1959 - COBOL
1959 - RPG
1962 - APL
1962 - Simula
1962 - SNOBOL
1963 - CPL (precursor de C)
1964 - BASIC
1964 - PL/I

1967 - BCPL (precursor de C)

1968-1979: estableciendo paradigmas fundamentales


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.
En los aos 60 y 70 tambin suscit un debate considerable sobre los mritos de la "programacin
estructurada", que esencialmente significaba programacin sin el uso deGOTO. Este debate estaba
estrechamente relacionado con el diseo del lenguaje: algunos lenguajes no incluan GOTO, lo que
oblig a la programacin estructurada en el programador. Aunque el debate se recrudeca
acaloradamente en ese momento, casi todos los programadores estn de acuerdo en que, incluso en
lenguajes que ofrecen GOTO, es una mala prctica de programacin usarlo, excepto en raras
circunstancias. Como resultado de ello, las generaciones posteriores de diseadores de lenguajes han
encontrado el debate sobre programacin estructurada tedioso e incluso desconcertante.
Algunos lenguajes importantes que se desarrollaron en este perodo fueron:
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
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.
Una nueva tendencia importante en el diseo de lenguajes era un mayor enfoque en la programacin de
sistemas a gran escala a travs del uso de mdulos, una organizacin a gran escala de unidades de
cdigo. Modula, Ada, y ML desarrollaron sistemas de mdulos notables en la dcada de 1980. Los
sistemas de mdulos eran relacionados con frecuencia con construcciones de programacin genricas,
que seran, en esencia, mdulos parametrizados (vase tambin polimorfismo en programacin
orientada a objetos).
Aunque no aparecan nuevos paradigmas de lenguajes de programacin imperativos, muchos
investigadores expandieron las ideas de los lenguajes anteriores y las adaptaron a nuevos contextos. Por
ejemplo, los lenguajes de los sistemas Argus y Emerald adaptaron la programacin orientada a objetos
para sistemas distribuidos.
La dcada de 1980 tambin trajo avances en la implementacin de lenguajes de programacin. El
movimiento de RISC en la arquitectura de computadoras postulaba que el hardware deba estar
diseado para los compiladores ms que para los programadores de ensamblador humanos. Con la
ayuda de las mejoras en la velocidad del procesador, permitiendo tcnicas de compilacin cada vez ms
agresivas, el movimiento RISC despert un mayor inters en la tecnologa de compilacin de los
lenguajes de alto nivel.
Las tecnologas de los lenguajes continuaron sobre estas lneas entrando en la dcada de 1990.
Algunos lenguajes importantes que se desarrollaron en este perodo son:
1980 - C++ (C con clases, el nombre cambi en julio de 1983)

1983 - Ada
1984 - Common Lisp
1984 - MATLAB
1985 - Eiffel
1986 - Objective-C
1986 - Erlang
1987 - Perl
1988 - Tcl
1988 - Mathematica
1989 - FL (Backus);

La dcada de 1990: la era de Internet


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.
Algunos lenguajes importantes que se desarrollaron en este perodo son:
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
La evolucin de los lenguajes de programacin contina, tanto en la industria como en investigacin.
Algunas de las tendencias actuales incluyen:
Aumentar el soporte para la programacin funcional en lenguajes importantes utilizados
comercialmente, incluida la programacin funcional pura para hacer el cdigo ms fcil de razonar y de
paralelizar (tanto en macro como en micro-niveles).
Construir lenguajes para apoyar la programacin concurrente y distribuida.
Mecanismos para aadir al lenguaje verificacin en cuanto a seguridad y confiabilidad: chequeo
sintctico extendido, control de flujo de informacin, seguridad de hilos.
Mecanismos alternativos de modularidad: mixins, delegados, aspectos.
Desarrollo de software orientado a componentes.
Metaprogramacin, la reflexin o el acceso al rbol de sintaxis abstracta.
Mayor nfasis en cuanto a distribucin y movilidad.
Integracin con bases de datos, incluyendo XML y bases de datos relacionales.
Soporte para Unicode para que el cdigo fuente (texto del programa) no se limite slo a los caracteres
contenidos en el conjunto de caracteres ASCII, permitiendo, por ejemplo, el uso de caracteres no
latinos basados en guiones o signos de puntuacin extendidos.

XML para interfaz grfica (XUL, XAML).


El cdigo abierto como una filosofa de desarrollo de lenguajes, incluyendo la coleccin de
compiladores de GNU y lenguajes recientes, como Python, Ruby, y Squeak.
Programacin Orientada a Aspectos (AOP).
Lenguajes que soporten programar sobre los procesadores de la GPU en paralelo, como OpenCL.
Algunos lenguajes importantes desarrollados durante este perodo incluyen:
2000 - ActionScript
2001 - C#
2001 - Visual Basic .NET
2002 - F#
2003 - Groovy
2003 - Scala
2003 - Factor
2007 - Clojure
2009 - Go
2011 - Dart

Personas destacadas en la historia de los lenguajes de


programacin
Joe Armstrong, creador de Erlang.
John Backus, inventor de Fortran.
Alan Cooper, desarrollador de Visual Basic.
Edsger W. Dijkstra, desarroll la estructura para la programacin estructurada.
James Gosling, desarrollador de Oak, precursor de Java.
Anders Hejlsberg, desarrollador de Turbo Pascal, Delphi y C#.
Grace Hopper, desarrolladora de Flow-Matic, influenciando el lenguaje COBOL.
Kenneth E. Iverson, desarrollador de APL, y co-desarrollador de J junto a Roger Hui.
Bill Joy, inventor de vi, autor de BSD Unix, creador de SunOS, el cual se convirti en Solaris.

Alan Kay, pionero en programacin orientada a objetos, creador de Smalltalk.


Brian Kernighan, coautor del primer libro de programacin en lenguaje C con Dennis Ritchie, y
coautor de los lenguajes de programacin AWK y AMPL.
Yukihiro Matsumoto, creador de Ruby.
John McCarthy, inventor de LISP.
Bertrand Meyer, inventor de Eiffel.
Robin Milner, inventor de ML, y comparti crdito en el mtodo HindleyMilner de inferencia de tipo
polimrfica.
John von Neumann, creador del concepto de sistema operativo.
Martin Odersky, creador de Scala, y previamente contribuy en el diseo de Java
Seymour Papert, pionero de la inteligencia artificial, inventor del lenguaje de programacin Logo en
1968. .
Dennis Ritchie, inventor de C. Sistema Operativo Unix.
Nathaniel Rochester, inventor del primer lenguaje en ensamblador simblico (IBM 701).
Guido van Rossum, creador de Python.
Bjarne Stroustrup, desarrollador de C++.
Ken Thompson, inventor de B, desarrollador de Go, y coauthor del sistema operativo Unix.
Larry Wall, creador de Perl y Perl 6.
Niklaus Wirth, inventor de Pascal, Modula y Oberon.
Stephen Wolfram, creador de Mathematica.

Potrebbero piacerti anche