stringtranslate.com

Historia de los lenguajes de programación

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 dependían de la notación matemática y una sintaxis igualmente oscura . [1] A lo largo del siglo XX, la investigación en la teoría de 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. [2] El primer lenguaje de alto nivel en tener un compilador asociado fue creado por Corrado Böhm en 1951, para su tesis doctoral . [3] El primer lenguaje disponible comercialmente fue FORTRAN (FORmula TRANslation), desarrollado en 1956 (el primer manual apareció en 1956, pero se desarrolló por primera vez en 1954) por un equipo dirigido por John Backus en IBM .

Historia temprana

Entre 1842 y 1849, Ada Lovelace tradujo las memorias del matemático italiano Luigi Menabrea sobre la última máquina propuesta por Charles Babbage : la máquina analítica ; complementó las memorias con notas que especificaban en detalle un método para calcular números de Bernoulli con la máquina, reconocida por la mayoría de los historiadores como el primer programa informático publicado del mundo. [4]

Tanto los telares Jacquard como la máquina diferencial de Charles Babbage fueron diseñados para utilizar tarjetas perforadas , [5] [6] que describirían la secuencia de operaciones que sus máquinas programables debían realizar.

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

Primeros lenguajes de programación

En la década de 1940 se crearon los primeros ordenadores eléctricos reconocibles como modernos. La velocidad y la capacidad de memoria limitadas obligaron a los programadores a escribir programas en lenguaje ensamblador ajustados a mano . Con el tiempo, se comprendió que programar en lenguaje ensamblador requería un gran esfuerzo intelectual. [ cita requerida ]

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. [7]

Los primeros lenguajes de programación funcionales diseñados para comunicar instrucciones a una computadora fueron escritos a principios de la década de 1950. Short Code de John Mauchly , propuesto en 1949, fue uno de los primeros lenguajes de alto nivel desarrollados para una computadora electrónica . [8] A diferencia del código de máquina , las instrucciones de Short Code representaban expresiones matemáticas en forma comprensible. Sin embargo, el programa tenía que ser interpretado en 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 versión del lenguaje, conocida como "Mark 1 Autocode", para el Mark 1. Brooker, junto con la Universidad de Manchester, también desarrolló un autocódigo para el Ferranti Mercury en la década de 1950. La versión para el EDSAC 2 fue ideada por Douglas Hartree del Laboratorio de Matemáticas 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 diagnósticos de lenguaje fuente que eran avanzados para la época. Atlas Autocode , un hilo de desarrollo contemporáneo pero separado, se desarrolló para la máquina Atlas 1 de la Universidad de Manchester .

En 1954, un equipo dirigido por John Backus inventó FORTRAN en IBM ; fue el primer lenguaje de propósito general de alto nivel ampliamente utilizado que tenía una implementación funcional, en contraste con solo un diseño en papel. [9] [10] Cuando se introdujo FORTRAN por primera vez, se lo vio con escepticismo debido a errores, retrasos en el desarrollo y la eficiencia comparativa de los programas "codificados a mano" escritos en ensamblador. [11] Sin embargo, en un mercado de hardware que estaba evolucionando rápidamente, el lenguaje finalmente se hizo conocido por su eficiencia. Sigue siendo un lenguaje popular para la computación de alto rendimiento [12] y se usa para programas que evalúan y clasifican las supercomputadoras TOP500 más rápidas del mundo . [13]

Otro lenguaje de programación temprano fue ideado por Grace Hopper en los EE. UU., llamado FLOW-MATIC . Fue desarrollado para el 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. [14] El compilador FLOW-MATIC se puso a disposición del público a principios de 1958 y estuvo sustancialmente completo en 1959. [15] Flow-Matic fue una gran influencia en el diseño de COBOL , ya que solo este y su descendiente directo AIMACO estaban en uso en ese momento. [16]

Otros lenguajes que todavía se utilizan en la actualidad son LISP (1958), inventado por John McCarthy , y COBOL (1959), creado por el Short Range Committee. Otro hito a finales de los años 50 fue la publicación, por parte de un comité de informáticos estadounidenses y europeos, de "un nuevo lenguaje para algoritmos"; el Informe ALGOL 60 (el " lenguaje ALGOrítmico "). Este informe consolidó muchas de las ideas que circulaban en ese momento y presentó tres innovaciones clave en el lenguaje :

Otra innovación, relacionada con ésta, estaba en cómo se describía 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 y se produjo ALGOL 68 :

Las numerosas características poco utilizadas del lenguaje ALGOL 68 (por ejemplo, bloques concurrentes y paralelos) y su complejo sistema de atajos sintácticos y conversiones automáticas de tipos lo hicieron impopular entre los implementadores y le valieron una reputación de ser difícil . Niklaus Wirth , de hecho, abandonó el comité de diseño para crear el lenguaje Pascal más simple.

Logotipos

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

Establecimiento de paradigmas fundamentales

Logotipos

El período que va desde finales de los años 1960 hasta finales de los años 1970 trajo consigo un importante florecimiento de los lenguajes de programación. La mayoría de los principales paradigmas lingüísticos que se utilizan actualmente se inventaron en este período: [ ¿Investigación original? ]

En los años 1960 y 1970 también hubo 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 circunstancias excepcionales. Este debate estaba estrechamente relacionado con el diseño de lenguajes: algunos lenguajes no tenían goto, lo que obligaba al uso de programación estructurada.

Para proporcionar tiempos de compilación aún más rápidos, algunos lenguajes fueron estructurados para " compiladores de una sola pasada " que esperan que las rutinas subordinadas se definan primero, como en Pascal , donde la rutina principal, o función controladora, es la sección final de la lista del programa.

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

Años 80: consolidación, módulos, rendimiento

Logotipos

Los años 1980 fueron años de relativa consolidación de los lenguajes imperativos . En lugar de inventar nuevos paradigmas, todos estos movimientos elaboraron sobre las ideas inventadas en la década anterior. C++ combinó la programación orientada a objetos y la programación de sistemas. El gobierno de los Estados Unidos estandarizó Ada , un lenguaje de programación de sistemas destinado a ser utilizado por contratistas de defensa. En Japón y en otros lugares, se gastaron grandes sumas de dinero en la investigación de los llamados lenguajes de programación de quinta generación que incorporaban 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 diferida , 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 para sistemas a gran escala mediante el uso de módulos , o unidades organizativas de código a gran escala. Modula , Ada y ML desarrollaron sistemas de módulos notables en la década de 1980. Los sistemas de módulos a menudo se combinaban con construcciones de programación genéricas : los genéricos eran, en esencia, módulos parametrizados [ cita requerida ] (ver también Polimorfismo (ciencia informática) ).

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

La década de 1980 también trajo consigo avances en la implementación de lenguajes de programación. El movimiento RISC ( ordenador de conjunto de instrucciones reducido ) en arquitectura informática postuló que el hardware debería estar diseñado para compiladores en lugar de para programadores humanos de ensamblaje. Con la ayuda de mejoras en la velocidad de la unidad central de procesamiento (CPU) que permitieron métodos de compilación cada vez más agresivos, el movimiento RISC despertó un mayor interés en la tecnología de compiladores para lenguajes de alto nivel.

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

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

Los años 90: la era de Internet

Logotipos

El rápido crecimiento de Internet a mediados de los años 1990 fue el siguiente gran acontecimiento 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 alcanzó popularidad debido a su temprana integración con el navegador web Netscape Navigator. Varios otros lenguajes de scripting 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 entorno de desarrollo integrado (IDE), recolección de basura y eran descendientes de lenguajes más antiguos. Todos estos lenguajes estaban orientados a objetos . Estos incluían Object Pascal , Objective Caml (rebautizado como OCaml ), 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 lenguajes y presentaban nuevas sintaxis y una incorporación más liberal de características. Muchos consideran que estos lenguajes de scripting son más productivos que incluso los lenguajes RAD, pero a menudo debido a opciones que hacen que los programas pequeños sean más simples pero los programas grandes más difíciles de escribir y mantener. [ cita requerida ] Sin embargo, los lenguajes de scripting llegaron a ser los más destacados utilizados en conexión con la Web.

Algunos lenguajes de programación incluyeron otros lenguajes en su distribución para ahorrar tiempo de desarrollo. Por ejemplo, tanto Python como Ruby incluyeron Tcl para soportar la programación GUI a través de bibliotecas como Tkinter .

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

Tendencias actuales

Logotipos

La evolución de los lenguajes de programación continúa, tanto en la industria como en la investigación. Algunas de las tendencias recientes incluyen:

Muchas grandes empresas tecnológicas introdujeron múltiples lenguajes de programación nuevos que están diseñados para satisfacer sus necesidades y brindar soporte de primera clase para sus plataformas. Por ejemplo:

Algunos lenguajes notables desarrollados durante este período y que figuran en el índice TIOBE (Top 100 programming language) a febrero de 2024 incluyen: [20] [21]

Otros nuevos lenguajes de programación incluyen Elm , Ballerina , Red , Crystal , Haxe , V (Vlang) , Reason y Mojo .

Cifras clave

Algunos innovadores

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

Véase también

Referencias

  1. ^ Hopper (1978) pág. 16.
  2. ^ Knuth, Donald E.; Pardo, Luis Trabb. "Desarrollo temprano de los lenguajes de programación". Enciclopedia de informática y tecnología . 7 . Marcel Dekker: 419–493.
  3. ^ Tesis doctoral de Corrado Böhm
  4. ^ Fuegi, J.; Francis, J. (octubre-diciembre de 2003), "Lovelace & Babbage y la creación de las 'notas' de 1843", Anales de la historia de la informática , 25 (4): 16–26, doi :10.1109/MAHC.2003.1253887
  5. ^ Bales, Rebecca (24 de julio de 2023). "Explicación de la máquina analítica de Charles Babbage". history-computer.com .
  6. ^ Swade, Doron. "The Engines". computerhistory.org . Consultado el 23 de febrero de 2024 .
  7. ^ En 1998 y 2000 se crearon compiladores para el lenguaje como ejercicio histórico. Rojas, Raúl , et al. (2000). "Plankalkül: El primer lenguaje de programación de alto nivel y su implementación". Institut für Informatik, Freie Universität Berlin, Technical Report B-3/2000. (texto completo)
  8. ^ Sebesta, WS (2006). Conceptos de lenguajes de programación . p. 44. ISBN 978-0-321-33025-3.
  9. ^ "Muere John Backus, creador de Fortran – Tecnología y gadgets". NBC News. 20 de marzo de 2007. Consultado el 25 de abril de 2010 .
  10. ^ "CSC-302 99S: Clase 02: Una breve historia de los lenguajes de programación". Math.grin.edu. Archivado desde el original el 15 de julio de 2010. Consultado el 25 de abril de 2010 .
  11. ^ Padua, David (febrero de 2000). "El compilador FORTRAN I" (PDF) . Computing in Science and Engineering . 2 (1): 70–75. Bibcode :2000CSE.....2a..70P. doi :10.1109/5992.814661 . Consultado el 7 de noviembre de 2019 .
  12. ^ Eugene Loh (18 de junio de 2010). "El lenguaje de programación HPC ideal". Cola . 8 (6). Asociación de Máquinas de Computación.
  13. ^ "HPL: una implementación portátil del benchmark Linpack de alto rendimiento para computadoras con memoria distribuida" . Consultado el 21 de febrero de 2015 .
  14. ^ Hopper (1978) pág. 16.
  15. ^ Sammet (1969) pág. 316
  16. ^ Sammet (1978) pág. 204.
  17. ^ Gordon, Michael JC (1996). "From LCF to HOL: a short history" (PDF) . p. 3. Consultado el 4 de mayo de 2015. El LCF de Edimburgo, incluido el intérprete ML, se implementó en Lisp.
  18. ^ Manjoo, Farhad (29 de julio de 2020). "¿Cómo sabes que un humano escribió esto?". The New York Times . ISSN  0362-4331 . Consultado el 4 de agosto de 2020 .
  19. ^ Milmo, Dan (6 de diciembre de 2023). «Google afirma que el nuevo modelo de inteligencia artificial Gemini supera a ChatGPT en la mayoría de las pruebas». The Guardian . ISSN  0261-3077 . Consultado el 26 de febrero de 2024 .
  20. ^ "Índice TIOBE, Top 100 lenguajes de programación según el índice TIOBE". www.tiobe.com . Índice TIOBE . 22 de febrero de 2024.
  21. ^ "Octoverse 2018 de GitHub". Archivado desde el original el 22 de marzo de 2019.
  22. ^ Rojas, Raúl; Hashagen, Ulf (2002). Las primeras computadoras: historia y arquitecturas. MIT Press. p. 292. ISBN 978-0262681377. Recuperado el 25 de octubre de 2013 .

Lectura adicional

Enlaces externos