Historia de los lenguajes de programación

Compartir Imprimir Citar

La historia de los lenguajes de programación abarca desde la documentación de las primeras computadoras mecánicas hasta las herramientas modernas para el desarrollo de software. Los primeros lenguajes de programación eran altamente especializados y se basaban en la notación matemática y una sintaxis igualmente oscura. A lo largo del siglo XX, la investigación en la teoría de los compiladores condujo a la creación de lenguajes de programación de alto nivel, que utilizan una sintaxis más accesible para comunicar instrucciones.

El primer lenguaje de programación de alto nivel fue Plankalkül, creado por Konrad Zuse entre 1942 y 1945. El primer lenguaje de alto nivel en tener un compilador asociado fue creado por Corrado Böhm en 1951, para su tesis doctoral. El primer lenguaje comercialmente disponible fue FORTRAN (FORMula TRANslation), desarrollado en 1956 (el primer manual apareció en 1956, pero desarrollado por primera vez en 1954) por un equipo dirigido por John Backus en IBM.

Historia temprana

Durante 1842–1849, Ada Lovelace tradujo las memorias del matemático italiano Luigi Menabrea sobre la máquina propuesta más nueva de Charles Babbage: el motor analítico; Complementó las memorias con notas que especificaban en detalle un método para calcular los números de Bernoulli con el motor, reconocido por la mayoría de los historiadores como el primer programa informático publicado en el mundo.

Los primeros códigos informáticos estaban especializados para sus aplicaciones: por ejemplo, Alonzo Church podía expresar el cálculo lambda de forma formulaica y la máquina de Turing era una abstracción del funcionamiento de una máquina marcadora de cinta.

Jacquard Looms y la máquina diferencial de Charles Babbage tenían lenguajes simples para describir las acciones que estas máquinas deberían realizar, por lo que fueron los creadores del primer lenguaje de programación.

Primeros lenguajes de programación

En la década de 1940, se crearon las primeras computadoras eléctricas reconociblemente modernas. La velocidad y la capacidad de memoria limitadas obligaron a los programadores a escribir programas en lenguaje ensamblador ajustados a mano. Finalmente se dio cuenta de que la programación en lenguaje ensamblador requería una gran cantidad de esfuerzo intelectual.

Una de las primeras propuestas para un lenguaje de programación de alto nivel fue Plankalkül, desarrollado por Konrad Zuse para su computadora Z1 entre 1942 y 1945 pero no implementado en ese momento.

Los primeros lenguajes de programación en funcionamiento diseñados para comunicar instrucciones a una computadora se escribieron a principios de la década de 1950. El código corto de John Mauchly, propuesto en 1949, fue uno de los primeros lenguajes de alto nivel desarrollados para una computadora electrónica. A diferencia del código de máquina, las declaraciones de código corto representaban expresiones matemáticas en forma comprensible. Sin embargo, el programa tenía que traducirse a código de máquina cada vez que se ejecutaba, lo que hacía que el proceso fuera mucho más lento que ejecutar el código de máquina equivalente.

A principios de la década de 1950, Alick Glennie desarrolló Autocode, posiblemente el primer lenguaje de programación compilado, en la Universidad de Manchester. En 1954, RA Brooker desarrolló una segunda iteración del lenguaje, conocida como "Mark 1 Autocode", para Mark 1. Brooker también desarrolló un código automático para Ferranti Mercury en la década de 1950 junto con la Universidad de Manchester. La versión para EDSAC 2 fue ideada por Douglas Hartree del Laboratorio Matemático de la Universidad de Cambridge en 1961. Conocido como EDSAC 2 Autocode, fue un desarrollo directo de Mercury Autocode adaptado a las circunstancias locales y se destacó por su optimización de código objeto y lenguaje fuente. diagnósticos avanzados para la época. Un hilo de desarrollo contemporáneo pero separado,

En 1954, FORTRAN fue inventado en IBM por un equipo dirigido por John Backus; fue el primer lenguaje de programación de propósito general de alto nivel ampliamente utilizado en tener una implementación funcional, en lugar de solo un diseño en papel. Cuando FORTRAN se introdujo por primera vez, se vio con escepticismo debido a errores, retrasos en el desarrollo y la eficiencia comparativa de los programas "codificados a mano" escritos en ensamblador. Sin embargo, en un mercado de hardware que evolucionaba rápidamente; el idioma finalmente se hizo conocido por su eficiencia. Todavía es un lenguaje popular para la computación de alto rendimiento y se usa para programas que comparan y clasifican las supercomputadoras más rápidas del mundo.

Otro lenguaje de programación temprano fue ideado por Grace Hopper en los EE. UU., llamado FLOW-MATIC. Fue desarrollado para UNIVAC I en Remington Rand durante el período de 1955 a 1959. Hopper descubrió que los clientes de procesamiento de datos comerciales no se sentían cómodos con la notación matemática y, a principios de 1955, ella y su equipo escribieron una especificación para un lenguaje de programación en inglés e implementaron un prototipo El compilador FLOW-MATIC estuvo disponible públicamente a principios de 1958 y se completó sustancialmente en 1959. Flow-Matic fue una gran influencia en el diseño de COBOL, ya que solo él y su descendiente directo AIMACO estaban en uso real en ese momento.

Otros lenguajes que todavía se usan en la actualidad incluyen LISP (1958), inventado por John McCarthy y COBOL (1959), creado por el Comité de Corto Alcance. Otro hito a fines de la década de 1950 fue la publicación, por parte de un comité de científicos informáticos estadounidenses y europeos, de "un nuevo lenguaje para algoritmos"; el Informe ALGOL 60 (el " Lenguaje rítmico ALGO "). Este informe consolidó muchas ideas que circulaban en ese momento y presentó tres innovaciones lingüísticas clave:

Otra innovación, relacionada con esto, fue en cómo se describió el lenguaje:

Algol 60 fue particularmente influyente en el diseño de lenguajes posteriores, algunos de los cuales pronto se hicieron más populares. Los grandes sistemas de Burroughs fueron diseñados para ser programados en un subconjunto extendido de Algol.

Las ideas clave de Algol continuaron, produciendo ALGOL 68:

Las muchas funciones de lenguaje poco utilizadas de Algol 68 (por ejemplo, bloques concurrentes y paralelos) y su complejo sistema de accesos directos sintácticos y coerciones automáticas de tipos lo hicieron impopular entre los implementadores y le ganaron la reputación de ser difícil. Niklaus Wirth abandonó el comité de diseño para crear el lenguaje Pascal más simple.

Algunos lenguajes notables que se desarrollaron en este período incluyen:

Estableciendo paradigmas fundamentales

El período comprendido entre finales de la década de 1960 y finales de la década de 1970 trajo un gran florecimiento de los lenguajes de programación. La mayoría de los principales paradigmas lingüísticos actualmente en uso se inventaron en este período:

Cada uno de estos idiomas generó una familia completa de descendientes, y la mayoría de los idiomas modernos cuentan con al menos uno de ellos en su ascendencia.

Las décadas de 1960 y 1970 también vieron un debate considerable sobre los méritos de la "programación estructurada", que esencialmente significaba programar sin el uso de "goto". Una fracción significativa de programadores creía que, incluso en lenguajes que proporcionan "goto", es un mal estilo de programación usarlo, excepto en raras circunstancias. Este debate estaba estrechamente relacionado con el diseño del lenguaje: algunos lenguajes no incluían un "goto" en absoluto, lo que forzaba la programación estructurada en el programador.

Para proporcionar tiempos de compilación aún más rápidos, algunos lenguajes se estructuraron para "compiladores de un solo paso" que esperan que las rutinas subordinadas se definan primero, como con Pascal, donde la rutina principal, o la función del controlador, es la sección final de la lista del programa.

Algunos lenguajes notables que se desarrollaron en este período incluyen:

Década de 1980: consolidación, módulos, rendimiento

Los años 80 fueron años de relativa consolidación en las lenguas imperativas. En lugar de inventar nuevos paradigmas, todos estos movimientos elaboraron sobre las ideas inventadas en la década anterior. C++ combina programación orientada a objetos y de sistemas. El gobierno de los Estados Unidos estandarizó Ada, un lenguaje de programación de sistemas destinado a los contratistas de defensa. En Japón y en otros lugares, se gastaron grandes sumas de dinero investigando los llamados lenguajes de programación de quinta generación que incorporaron construcciones de programación lógica. La comunidad de lenguajes funcionales se movió para estandarizar ML y Lisp. La investigación en Miranda, un lenguaje funcional con evaluación perezosa, comenzó a afianzarse en esta década.

Una nueva tendencia importante en el diseño de lenguajes fue un mayor enfoque en la programación de sistemas a gran escala mediante el uso de módulos, o unidades organizativas de código a gran escala. Modula, Ada y ML desarrollaron notables sistemas de módulos en la década de 1980. Los sistemas de módulos a menudo se unían a construcciones de programación genéricas, siendo los genéricos, en esencia, módulos parametrizados (ver también polimorfismo en la programación orientada a objetos).

Aunque no aparecieron nuevos paradigmas importantes para los lenguajes de programación imperativos, muchos investigadores ampliaron las ideas de lenguajes anteriores y los adaptaron a nuevos contextos. Por ejemplo, los lenguajes de los sistemas Argus y Emerald adaptaron la programación orientada a objetos a los sistemas distribuidos.

La década de 1980 también trajo avances en la implementación del lenguaje de programación. El movimiento RISC en la arquitectura de computadoras postuló que el hardware debería diseñarse para compiladores en lugar de programadores de ensamblaje humanos. Con la ayuda de mejoras en la velocidad del procesador que permitieron técnicas de compilación cada vez más agresivas, el movimiento RISC despertó un mayor interés en la tecnología de compilación para lenguajes de alto nivel.

La tecnología del lenguaje continuó en esta línea hasta bien entrada la década de 1990.

Algunos lenguajes notables que se desarrollaron en este período incluyen:

1990: la era de Internet

El rápido crecimiento de Internet a mediados de la década de 1990 fue el próximo gran evento histórico en los lenguajes de programación. Al abrir una plataforma radicalmente nueva para los sistemas informáticos, Internet creó una oportunidad para que se adoptaran nuevos lenguajes. En particular, el lenguaje de programación JavaScript ganó popularidad debido a su temprana integración con el navegador web Netscape Navigator. Varios otros lenguajes de secuencias de comandos lograron un uso generalizado en el desarrollo de aplicaciones personalizadas para servidores web como PHP. La década de 1990 no vio ninguna novedad fundamental en los lenguajes imperativos, sino mucha recombinación y maduración de viejas ideas. Esta era comenzó la difusión de los lenguajes funcionales. Una gran filosofía impulsora fue la productividad del programador. Surgieron muchos lenguajes de "desarrollo rápido de aplicaciones" (RAD), que generalmente venían con un IDE, recolección de basura, y eran descendientes de lenguas más antiguas. Todos estos lenguajes estaban orientados a objetos. Estos incluían Object Pascal, Visual Basic y Java. Java en particular recibió mucha atención.

Más radicales e innovadores que los lenguajes RAD fueron los nuevos lenguajes de scripting. Estos no descendían directamente de otros idiomas y presentaban nuevas sintaxis y una incorporación más liberal de funciones. Muchos consideran que estos lenguajes de secuencias de comandos son más productivos incluso que los lenguajes RAD, pero a menudo debido a opciones que hacen que los programas pequeños sean más simples pero que los programas grandes sean más difíciles de escribir y mantener. Sin embargo, los lenguajes de programación llegaron a ser los más prominentes utilizados en conexión con la Web.

Algunos lenguajes notables que se desarrollaron en este período incluyen:

Tendencias actuales

La evolución del lenguaje de programación continúa, tanto en la industria como en la investigación. Algunas de las tendencias recientes han incluido:

Algunos lenguajes notables desarrollados durante este período incluyen:

Otros nuevos lenguajes de programación incluyen Red, Crystal, Elm, Hack, Haxe, Zig y Reason.

Figuras claves

Algunas personas clave que ayudaron a desarrollar lenguajes de programación: