Вы находитесь на странице: 1из 12

Generaciones de los lenguajes de programacin

Cronologa

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 ori icios en tarjetas per oradas para representar los mo!imientos de un brazo de la mquina de tejer, con el objeti!o de generar patrones decorati!os automticamente. "urante un per#odo de nue!e meses entre 18$% & 18$', (da Lo!elace tradujo las memorias del matemtico italiano Luigi )enabrea acerca de la nue!a mquina propuesta por *+arles ,abbage, la )quina (nal#tica. *on estos escritos, ella a-adi unas notas en las cuales especi icaba en detalle un m.todo para calcular los n/meros de ,ernoulli con esta mquina, el cual es reconocido por muc+os +istoriadores como el primer programa de computadora del mundo. 0erman 0ollerit+ se percat de que pod#a codi icar la in ormacin en tarjetas per oradas cuando obser! a los conductores de trenes codi icar la apariencia de los cric1et o tic1ets mejor conociado del tren con la posicin de los agujeros per orados en estos. En 1820 0ollerit+ codi ic los datos del censo en tarjetas per oradas. Los primeros cdigos de computadora estaban especializados seg/n sus aplicaciones. En las primeras d.cadas del siglo %0, los clculos num.ricos estaban basados en los n/meros decimales. E!entualmente se ueron dando cuenta que la lgica pod#a ser representada con n/meros, no slo con palabras. 3or ejemplo, (lonzo *+urc+ ue capaz de e4presar el clculo lambda a tra!.s de rmulas. La mquina de 5uring estableci las bases para almacenar programas como datos en la arquitectura de !on 6euman de una computadora. 7in embargo, a di erencia del clculo lambda, el cdigo de 5uring no ser!ir#a satis actoriamente como base para lenguajes de ms alto ni!el8 su principal uso es en el anlisis riguroso en la complejidad algor#tmica.

*omo muc+os 9primeros: en la +istoria, el primer lenguaje de programacin moderno es di #cil de identi icar. "esde un inicio, las restricciones de +ard;are de in#an el lenguaje. Las tarjetas per oradas permit#an 80 columnas, pero algunas de estas ser#an utilizadas para una clasi icacin de cada tarjeta. <=>5>(6 inclu#a algunas palabras reser!adas pro!enientes del ?ngl.s, como 9?<:, 9G=5=: @go toA & 9*=65?6BE:. El uso del tambor magn.tico para la memoria implicaba que los programas in ormticos tu!ieran que estar intercalados con las rotaciones del tambor. 3or lo tanto los programas eran mu& dependientes del +ard;are. 3ara algunas personas, lo que ser#a el primer lenguaje de programacin moderno depende de cunto poder & legibilidad +umana se requer#a antes de que se concediera el estado de Clenguaje de programacinC. 5anto el telar de Jacquard como la )quina "i erencialde ,abbage, ten#an lenguajes mu& simples & e4tremadamente limitados para describir las acciones que estas mquinas realizaran. 7e puede incluso considerar los agujeros per orados en los rollos de pianola como un limitado lenguaje de dominio espec# ico, a pesar de no estar dise-ado para el consumo +umano.

Los aos 40
En la d.cada de 12$0 ueron creadas las primeras computadoras modernas, con alimentacin el.ctrica. La !elocidad & capacidad de memoria limitadas orzaron a los programadores a escribir programas en lenguaje ensamblador mu& a inados. <inalmente se dieron cuenta que la programacin en lenguaje ensamblador requer#a de un gran es uerzo intelectual & era mu& propensa a errores. En 12$8, Donrad Euse public un art#culo acerca de su lenguaje de programacin 3lan1al1Fl. 7in embargo, no ue implementado en su !ida & sus contribuciones ueron aisladas de otros desarrollos. Entre algunos lenguajes importantes que ueron desarrollados en este per#odo se encuentranG 12$' 8 3lan1al1Fl @Donrad EuseA, dise-ado, pero sin implementar durante medio siglo 12$' 8 el sistema de codi icacin E6?(*.

12$2 8 12H$ 88 una serie de conjuntos de instrucciones nemot.cnicas, como la de E6?(*, comenzando en 12$2 con *810 para ,?6(* @que luego e!olucionar#a en B6?I(*A. *ada conjunto de instrucciones estaba destinado a un abricante espec# ico.

Las dcadas de 1950 y 1960


En los cincuenta, los tres primeros lenguajes de programacin modernos, cu&os descendientes a/n contin/an siendo utilizados, sonG <=>5>(6 @12HHA, creado por Jo+n ,ac1us et al.J L?73 @12H8A, creado por Jo+n )c*art+& et al.J *=,=L @12H2A, creado por el 7+ort >ange *ommittee, altamente in luenciado por Grace 0opper. =tro +ito a inales de 12H0 ue la publicacin, por un comit. (mericano & Europeo de cient# icos de la computacin, de un nue!o 9lenguaje para algoritmos:J el >eporte de (LG=L K0 @CALGOrit+mic LanguageCA. Este reporte consolid muc+as ideas que estaban circulando en aquel entonces, & proporcion dos inno!aciones importantes para los lenguajes de programacinG Estructuras de bloques anidadasG las secuencias de cdigo & las declaraciones asociadas se pueden agrupar en bloques sin tener que pertenecer e4pl#citamente a procedimientos separadosJ Lmbito l.4icoG un bloque puede tener sus propias !ariables, procedimientos & unciones, in!isible al cdigo uera de dic+o bloque, por ejemplo, ocultamiento de in ormacin. =tra inno!acin, relacionada con esto, ue cmo el lenguaje ue descritoG Bna notacin matemtica e4acta, ,ac1us86aur <orm @,6<A, ue utilizada para describir la sinta4is del lenguaje. 5odos los subsecuentes lenguajes de programacin +an utilizado una !ariante de ,6< para describir la porcin libre del conte4to de su sinta4is.

(lgol K0 in luenci particularmente en el dise-o de lenguajes posteriores, de los cuales algunos se +icieron ms populares. Los grandes sistemas de ,urroug+s ueron dise-ados para ser programados en un subconjunto e4tendido de (lgol. Las ideas undamentales de (lgol se continuaron, produciendo (lgol K8G la sinta4is & la semntica se +izo a/n ms ortogonal, con rutinas annimas, un sistema de tipi icacin recursi!a con unciones de orden superior, etc.J & no slo la parte libre del conte4to, sino que tanto la sinta4is como la semntica del lenguaje completo ueron de inidos ormalmente, en t.rminos de una gramtica de Ian Mijngaarden, un ormalismo dise-ado espec# icamente para este propsito. Las !ariadas pero poco usadas caracter#sticas de (lgol K8 @por ejemplo, bloques simultneos & paralelosA & su complejo sistema de atajos sintcticos & coerciones automticas de tipo lo +icieron impopular entre los ejecutores & se gan una reputacin de ser di #cil. 6i1laus Mirt+ sali del comit. de dise-o para crear el sencillo lenguaje 3ascal. (lgunos de los lenguajes importantes que ueron desarrollados en este per#odo inclu&enG 12H1 8 >egional (ssembl& Language 12H% 8 (utocode 12H$ 8 ?3L @precursor de L?73A 12HH 8 <L=M8)(5?* @precursor de *=,=LA 12HN 8 <=>5>(6 @primer compiladorA 12HN 8 *=)5>(6 @precursor de *=,=LA 12H8 8 L?73 12H8 8 (LG=L H8 12H2 8 <(*5 @precursor de *=,=LA 12H2 8 *=,=L 12H2 8 >3G 12K% 8 (3L 12K% 8 7imula 12K% 8 76=,=L 12K' 8 *3L @precursor de *A 12K$ 8 ,(7?*

12K$ 8 3LO? 12KN 8 ,*3L @precursor de *A

1968-1979: estableciendo paradigmas !ndamentales"


El per#odo comprendido entre inales de 12K0 & inales de 12N0 trajo un gran lorecimiento de lenguajes de programacin. La ma&or#a de los paradigmas de lenguajes de programacin ms importantes & actualmente en uso se in!entaron en este per#odoG 7imula, in!entado en la d.cada de 12K0 por 6&gaard & "a+l como un superconjunto de (lgol K0, ue el primer lenguaje dise-ado para apo&ar la programacin orientada a objetos. *, en principio un lenguaje de programacin sistemas, ue desarrollado por "ennis >itc+ie & Den 5+ompson en los Laboratorios ,ell entre 12K2 & 12N'. 7malltal1 @mediados de los N0A proporcionaron un completo dise-o de un lenguaje orientado a objetos. 3rolog, dise-ado en 12N% por *olmerauer, >oussel & Do;als1i, ue el primer lenguaje de programacin lgica. )L constru& un sistema de tipos polimr ico @in!entado por >obin )ilner en 12N'A en el tope de Lisp, pionero en los lenguajes uncionales de programacin con tipado esttico. *ada uno de estos lenguajes gener toda una amilia de descendientes, & los lenguajes ms modernos cuentan al menos uno de ellos en su ascendencia. En los a-os K0 & N0 tambi.n suscit un debate considerable sobre los m.ritos de la Cprogramacin estructuradaC, que esencialmente signi icaba programacin sin el uso de G=5=. Este debate estaba estrec+amente relacionado con el dise-o del lenguajeG algunos lenguajes no inclu#an G=5=, lo que oblig a la programacin estructurada en el programador. (unque el debate se recrudec#a acaloradamente en ese momento, casi todos los programadores estn de acuerdo en

que, incluso en lenguajes que o recen G=5=, es una mala prctica de programacin usarlo, e4cepto en raras circunstancias. *omo resultado de ello, las generaciones posteriores de dise-adores de lenguajes +an encontrado el debate sobre programacin estructurada tedioso e incluso desconcertante. (lgunos lenguajes importantes que se desarrollaron en este per#odo ueronG 12K8 8 Logo 12K2 8 , @precursor *A 12N0 8 3ascal 12N0 8 <ort+ 12N% 8 * 12N% 8 7malltal1 12N% 8 3rolog 12N' 8 )L 12NH 8 7c+eme 12N8 8 7PL @inicialmente slo un lenguaje de consulta, posteriormente ampliado con construcciones de programacinA

La dcada de 1980: consolidaci#n$ m#d!los$ rendimiento


La d.cada de 1280 ueron a-os de consolidacin relati!a en los lenguajes imperati!os. En !ez de in!entar nue!os paradigmas, se comenz a trabajar a partir de las ideas in!entadas en la d.cada anterior. *QQ combinaba la programacin orientada a objetos & la programacin de sistemas. El gobierno de Estados Bnidos estandariz (da, un lenguaje de programacin de sistemas destinado a ser utilizado por contratistas de de ensa. En Japn & en otras partes, se gastaron enormes sumas in!estigando los llamados lenguajes de programacin de quinta generacin que incorporaban construcciones de la programacin lgica. La comunidad de los lenguajes uncionales lle!aron a

cabo la estandarizacin de )L & Lisp. La in!estigacin en )iranda, un lenguaje uncional, con e!aluacin perezosa, comenz a tomar uerza en esta d.cada. Bna nue!a tendencia importante en el dise-o de lenguajes era un ma&or en oque en la programacin de sistemas a gran escala a tra!.s del uso de mdulos, una organizacin a gran escala de unidades de cdigo. )odula, (da, & )L desarrollaron sistemas de mdulos notables en la d.cada de 1280. Los sistemas de mdulos eran relacionados con recuencia con construcciones de programacin gen.ricas, que ser#an, en esencia, mdulos parametrizados @!.ase tambi.n polimor ismo en programacin orientada a objetosA. (unque no aparec#an nue!os paradigmas de lenguajes de programacin imperati!os, muc+os in!estigadores e4pandieron las ideas de los lenguajes anteriores & las adaptaron a nue!os conte4tos. 3or ejemplo, los lenguajes de los sistemas (rgus & Emerald adaptaron la programacin orientada a objetos para sistemas distribuidos. La d.cada de 1280 tambi.n trajo a!ances en la implementacin de lenguajes de programacin. El mo!imiento de >?7* en la arquitectura de computadoras postulaba que el +ard;are deb#a estar dise-ado para los compiladores ms que para los programadores de ensamblador +umanos. *on la a&uda de las mejoras en la !elocidad del procesador, permitiendo t.cnicas de compilacin cada !ez ms agresi!as, el mo!imiento >?7* despert un ma&or inter.s en la tecnolog#a de compilacin de los lenguajes de alto ni!el. Las tecnolog#as de los lenguajes continuaron sobre estas l#neas entrando en la d.cada de 1220. (lgunos lenguajes importantes que se desarrollaron en este per#odo sonG 1280 8 *QQ @* con clases, el nombre cambi en Julio de 128'A 128' 8 (da 128$ 8 *ommon Lisp 128$ 8 )(5L(, 128H 8 Ei el 128K 8 =bjecti!e8* 128K 8 Erlang 128N 8 3erl 1288 8 5cl 1288 8 )at+ematica 1282 8 <L @,ac1usA

La dcada de 1990: la era de %nternet


El rpido crecimiento de ?nternet en la d.cada de 1220 ue el siguiente gran acontecimiento +istrico para los lenguajes de programacin. *on la apertura de una plata orma totalmente nue!a para los sistemas in ormticos, ?nternet cre una oportunidad adoptar nue!os lenguajes. En particular, el lenguaje de programacin Ja!a se +izo popular debido a su pronta integracin con el na!egador ;eb 6etscape 6a!igator, & !arios lenguajes de scripting alcanzaron un amplio uso en el desarrollo de aplicaciones personalizadas para ser!idores ;eb. La d.cada de 1220 no !io ninguna no!edad undamental en los lenguajes imperati!os, pero s# muc+a recombinacin & la maduracin de !iejas ideas. Esta era comenz la di usin de los lenguajes uncionales. Bna iloso #a de conduccin grande era la producti!idad del programador. 7urgieron muc+os lenguajes de 9aplicaciones de desarrollo rpido: @>("A, los cuales usualmente !en#an con un ?"E, recolector de basura, & eran descendientes de lenguajes anteriores. 5odos estos lenguajes eran orientados a objeto. Estos inclu#an =bject 3ascal, Iisual ,asic & Ja!a. Ja!a, en particular, recibi muc+a atencin. 3ero ms radicales e inno!adores que los lenguajes de >(" eran los nue!os lenguajes de script. Estos no descend#an directamente de otros lenguajes & o recieron nue!as sinta4is e incorporacin ms liberal de otras caracter#sticas. )uc+os consideran estos lenguajes de script ms producti!os que los lenguajes de >(", aunque esto se debe a menudo a que es ms di #cil escribir & mantener largos programas que peque-os programas simples. 7in embargo, no es menos cierto que los programas de script llegaron para con!ertirse en los ms prominentes en la cone4in con la Meb. (lgunos lenguajes importantes que se desarrollaron en este per#odo sonG 1220 8 0as1ell 1221 8 3&t+on 1221 8 Iisual ,asic 1221 8 05)L @lenguaje de marcado de +iperte4toA 122' 8 >ub& 122' 8 Lua 122$ 8 *L=7 @parte del (67? *ommon LispA 122H 8 Ja!a 122H 8 "elp+i @=bject 3ascalA 122H 8 Ja!a7cript

122H 8 303 122K 8 Meb"6( 122N 8 >ebol 1222 8 "

&endencias act!ales
La e!olucin de los lenguajes de programacin contin/a, tanto en la industria como en in!estigacin. (lgunas de las tendencias actuales inclu&enG (umentar el soporte para la programacin uncional en lenguajes importantes utilizados comercialmente, incluida la programacin uncional pura para +acer el cdigo ms cil de razonar & de paralelizar @tanto en macro como en micro8ni!elesA. *onstruir lenguajes para apo&ar la programacin concurrente & distribuida. )ecanismos para a-adir al lenguaje !eri icacin en cuanto a seguridad & con iabilidadG c+equeo sintctico e4tendido, control de lujo de in ormacin, seguridad de +ilos. )ecanismos alternati!os de modularidadG mi4ins, delegados, aspectos. "esarrollo de so t;are orientado a componentes. )etaprogramacin, la re le4in o el acceso al rbol de sinta4is abstracta. )a&or .n asis en cuanto a distribucin & mo!ilidad. ?ntegracin con bases de datos, inclu&endo R)L & bases de datos relacionales. 7oporte para Bnicode para que el cdigo uente @te4to del programaA no se limite slo a los caracteres contenidos en el conjunto de caracteres (7*??, permitiendo, por ejemplo, el uso de caracteres no latinos basados en guiones o signos de puntuacin e4tendidos. R)L para inter az gr ica @RBL, R()LA. El cdigo abierto como una iloso #a de desarrollo de lenguajes, inclu&endo la coleccin de compiladores de G6B & lenguajes recientes, como 3&t+on, >ub&, & 7quea1.

3rogramacin =rientada a (spectos @(=3A. Lenguajes que soporten programar sobre los procesadores de la G3B en paralelo, como =pen*L.

(lgunos lenguajes importantes desarrollados durante este per#odo inclu&enG %000 8 (ction7cript %001 8 *S %001 8 Iisual ,asic .6E5 %00% 8 <S %00' 8 Groo!& %00' 8 7cala %00' 8 <actor %00N 8 *lojure %002 8 Go %011 8 "art

'ersonas destacadas en la (istoria de los leng!a)es de programaci#n


Joe (rmstrong, creador de Erlang. Jo+n ,ac1us, in!entor de <ortran. (lan *ooper, desarrollador de Iisual ,asic. Edsger M. "ij1stra, desarroll la estructura para la programacin estructurada. James Gosling, desarrollador de =a1, precursor de Ja!a. (nders 0ejlsberg, desarrollador de 5urbo 3ascal, "elp+i & *S. Grace 0opper, desarrolladora de <lo;8)atic, in luenciando el lenguaje *=,=L. Dennet+ E. ?!erson, desarrollador de (3L, & co8desarrollador de J junto a >oger 0ui. ,ill Jo&, in!entor de !i, autor de ,7" Bni4, creador de 7un=7, el cual se con!irti en 7olaris.

(lan Da&, pionero en programacin orientada a objetos, creador de 7malltal1. ,rian Dernig+an, coautor del primer libro de programacin en lenguaje * con "ennis >itc+ie, & coautor de los lenguajes de programacin (MD & ()3L.

Tu1i+iro )atsumoto, creador de >ub&. Jo+n )c*art+&, in!entor de L?73. ,ertrand )e&er, in!entor de Ei el. >obin )ilner, in!entor de )L, & comparti cr.dito en el m.todo 0indle&U )ilner de in erencia de tipo polimr ica.

Jo+n !on 6eumann, creador del concepto de sistema operati!o. )artin =ders1&, creador de 7cala, & pre!iamente contribu& en el dise-o de Ja!a "ennis >itc+ie, in!entor de *. 7istema =perati!o Bni4. 6at+aniel >oc+ester, in!entor del primer lenguaje en ensamblador simblico @?,) N01A. Guido !an >ossum, creador de 3&t+on. ,jarne 7troustrup, desarrollador de *QQ. Den 5+ompson, in!entor de ,, desarrollador de Go, & coaut+or del sistema operati!o Bni4. Larr& Mall, creador de 3erl & 3erl K. 6i1laus Mirt+, in!entor de 3ascal, )odula & =beron. 7tep+en Mol ram, creador de )at+ematica. )organ (rriaza, )ejor estudiante de V?),83*WW.

*ibliogra +a
>osen, 7aul, @editorA, Programming Systems and Languages, )cGra;80ill, 12KN 7ammet, Jean E., Programming Languages: History and Fundamentals, 3rentice80all, 12K2 7ammet, Jean E., C3rogramming LanguagesG 0istor& and <utureC, Communications of the ACM, o Iolume 1H, 6umber N, Jul& 12N% >ic+ard L. Me4elblat @ed.AG History of Programming Languages, (cademic 3ress 1281.

5+omas J. ,ergin and >ic+ard G. Gibson @eds.AG History of Programming Languages, (ddison Mesle&, 122K