Академический Документы
Профессиональный Документы
Культура Документы
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.
(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?*
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
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
&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
(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