years through the programming machine low languages language examples evolution code chart language-agnostic programming-languages language-features history

language agnostic - through - Historia de construcciones de programación



programming languages through the years (2)

Permítanos investigar y rastrear los orígenes de los constructos del lenguaje.

Por ejemplo:

Construcciones introducidas de LISP

  • If-Else Block : "La omnipresente estructura if-then-else, que ahora se da por sentada como un elemento esencial de cualquier lenguaje de programación, fue inventada por McCarthy para su uso en Lisp, donde vio su primera aparición en una forma más general (el cond estructura). Fue heredado por Algol, que lo popularizó. "- WikiPedia

  • Tipo de función : Funciones como ciudadanos de primera clase.

  • Recolección de basura


Declaración SWITCH - 1965 - ALGOL W

De acuerdo con: http://ojs.pythonpapers.org/index.php/tpp/article/viewFile/49/45

ALGOL, el padre de todos los lenguajes de procedimiento, no tenía una declaración de caso ya que el concepto de caso no se había inventado aún en los lenguajes de alto nivel. Luego, en 1965, se lanzó un lenguaje ALGOL W, que rara vez se usaba, que contenía un cambio ... declaración de caso inventada por CAR Hoare que permitía valores y rangos no ordenados que no se superponían.

C y Pascal derivaron de este lenguaje padre, y ambos tenían una forma de caso: C el caso de cambio familiar (variable) ... y Pascal usando la variable de caso begin value1: .... sintaxis de C ++, PHP, C # y Java se derivan de la versión C


Aquí hay una historia completa de los principales constructos del lenguaje de programación que he podido identificar hasta ahora. Sin duda, me he perdido algo, pero estoy seguro de que la comunidad SO ayudará a identificar estas omisiones.

Plankalkül (1943-45) - Desarrollado por Konrad Zuse, este fue el primer lenguaje de programación no von Neumann de alto nivel, según Wikipedia y Comunicaciones del documento de ACM "The" Plankalkül "de Konrad Zuse: un precursor de la programación de hoy Languages ​​" por FL Bauer y H. Wossner. El lenguaje fue desarrollado originalmente para la computadora Zuse Z1 mecánica, pero la implementación de un compilador por un equipo de la Universidad Libre de Berlín no se desarrolló hasta el año 2000. El lenguaje introdujo lo siguiente:

  • "Declaraciones de asignación, subrutinas, declaraciones condicionales, iteración, aritmética de coma flotante, matrices, estructuras de registros jerárquicos, aserciones y manejo de excepciones" ( Wikipedia: Plankalkül ).

Fortran :

IPL (lenguaje de procesamiento de información): recursión (más tarde incluida en LISP) - (Newell y Simon)

LISP - recolección de basura, expresiones lambda y tipado dinámico - ( McCarthy, 1960 ), ( McCarthy, 1978 ), ( Wikipedia: recolección de basura ) y ( Wikipedia: LISP )

ALGOL 58 - bloques de código introducidos (pero solo para flujo de control, no alcance variable) ( Backus, 1959 )

ALGOL 60 : ámbito léxico añadido a los bloques de código, definiciones de funciones anidadas con alcance léxico ( Backus et al. 1963 )

ALGOL 68 - Sobrecarga del operador ( A. van Wijngaarden et al )

Simula - objetos, clases, subclases, métodos virtuales, coroutines ( Dahl et al )

ML - polimorfismo paramétrico ( Cardelli y Wegner )

ISBL (Lenguaje Base de Sistemas de Información) - álgebra relacional (se introdujo anteriormente aquí que en SQL) - ( Hall et al ), ( Wikipedia: álgebra relacional )

Esquema : primeros cierres totalmente respaldados ( Sussman y Steele, 1975 ), ( Sussman y Steele, 1998 )

Curiosamente, para cuatro de los lenguajes de programación modernos más utilizados, C, C ++, Java y C #, no pude identificar construcciones de lenguaje de programación verificables y fundamentalmente nuevas. Las plantillas en C ++ son una versión adhoc del polimorfismo introducido en ML. Lo más parecido a una nueva característica de lenguaje en Java fue la inclusión de soporte para hilos. En su mayoría, los cuatro idiomas son una combinación de características deseables y conceptos inventados en otros lugares.

Otras notas: Aunque Prolog fue uno de los primeros lenguajes de programación lógica, no pude identificar ninguna característica significativa que no se haya introducido anteriormente en otros idiomas.

Aunque hay algunas referencias de Wikipedia, la mayoría de las características enumeradas anteriormente se han atribuido a fuentes sólidas que se mencionan a continuación. Donde profundicé para encontrar referencias autorizadas, los detalles basados ​​en Wikipedia se han mantenido bien.

El documento de ACM al que hice referencia para Plankalkül confirma la mayoría de sus características. Konrad Zuse era un genio clarividente.

REFERENCIAS

FL Bauer y H. Wössner (1972). El "Plankalkül" de Konrad Zuse: un precursor de los lenguajes de programación actuales . Comunicaciones del ACM, 15 (7): 678-685.

Raúl Rojas 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, Informe técnico B-3/2000.

JW Backus (1956). El sistema de codificación automático Fortran para IBM 704 EDPM . International Business Machines Corporation.

Allen Newell y Herbert A. Simon (1956). La máquina de la teoría lógica: un complejo sistema de procesamiento de información . IRE Transactions on Information Theory IT-2, no. 3: 61-79.

John McCarthy (1960). Funciones recursivas de expresiones simbólicas y su cálculo por máquina, Parte I , Comunicaciones del ACM, v.3 n.4, p.184-195, abril.

John McCarthy (1978). Historia de LISP . En Richard L. Wexelblat, editor, Historia de los lenguajes de programación: Actas de la Conferencia ACM SIGPLAN, páginas 173-197. Academic Press, del 1 al 3 de junio.

JW Backus (1959). "La sintaxis y la semántica del lenguaje algebraico internacional propuesto de Zürich ACM-GAMM Conferencia" . Actas de la Conferencia Internacional sobre Procesamiento de la Información. UNESCO. pp. 125-132.

JW Backus, FL Bauer, J. Green, C. Katz, J. McCarthy, P. Naur, A.J. Perlis, H. Rutishauser, K. Samelson, B. Vauquois, JH Wegstein, A. van Wijngaarden, M. Woodger; editado por Peter Naur (1963). Informe revisado sobre el lenguaje algorítmico ALGOL 60 . Comunicaciones del ACM, Volumen 6, Número 1 (enero), páginas 1-17.

A. van Wijngaarden, A. (Redactor), Mailloux, BJ, Peck, JEL, Koster, CHA (1969). "Informe sobre el lenguaje algorítmico ALGOL 68" , Sección 10.2.2. Numer. Mates. 14, 79--218.

Ole-Johan Dahl, Bjørm Myhrhaug y Kristen Nygaard (1970). SIMULA, lenguaje base común . (2ª Edición) Oslo, Centro de Computación de Noruega.

Luca Cardelli y Peter Wegner (1985). En Understanding Types, Data Abstraction y Polymorphism . Encuestas de Computación, Vol 17 n. 4, pp 471-522, diciembre.

Patrick AV Hall, Peter Hitchcock, Stephen Todd (1975). "Un álgebra de las relaciones para el cálculo de la máquina" . Registro de conferencia del segundo simposio de ACM sobre los principios de lenguajes de programación, Palo Alto, California: ACM, pp. 225-232, enero.

Gerald Jay Sussman y Guy L. Steele, Jr (1975). Esquema: un intérprete para el cálculo Lambda extendido . AI Memo 349, diciembre.

Gerald Jay Sussman y Guy L. Steele, Jr (1998). "Esquema: un intérprete para el cálculo Lambda extendido" . Orden superior y cómputo simbólico 11 (4): 399-404, diciembre, Kluwer Academic Publishers, Boston.