¿Cuáles son algunos de los documentos fundamentales en el diseño del lenguaje de programación?

Bueno, otras personas van a enumerar los papeles clásicos.

Así que voy a hacer una sugerencia de campo izquierdo:

Mira las presentaciones de Bret Victor: Deja de dibujar peces muertos e inventa en principio. Y lea los ensayos sobre la Escalera de abstracción y programación aprendible. (Y tal vez vea el futuro de la programación también)

Estos son excelentes pensamientos sobre lo que casi seguro sucederá con la programación de “lenguajes” a continuación .

Me encanta el texto Y no creo que vaya a ninguna parte.

Pero está bastante claro que la “programación” continuará siendo complementada con herramientas visuales y manipulación directa y un “diálogo con la computadora” al estilo REPL. (Particularmente en tabletas y dispositivos táctiles)

Obviamente, esto ha sucedido en casos como la definición de interfaces de usuario y modelos 3D en herramientas especializadas, pero creo que entendemos lo importante que es el flujo de datos en todo, desde las interfaces de usuario reactivas hasta la automatización de la construcción y la declaración de arquitecturas complejas de microservicios unidos por colas. , comenzaremos a usar más herramientas de diagramación de flujo de datos para administrarlas.

Me encanta el texto y mi editor de texto, y he pasado mucho tiempo pensando en cómo representar las redes de flujo textualmente, en lenguajes específicos de dominio, etc. Me fascinan los lenguajes como el lenguaje de programación Faust que tiene el enrutamiento de red como sintaxis básica Pero … voy a aceptar la derrota … los diagramas probablemente solo serán mejores que las DSL de texto para representar redes de flujo la mayor parte del tiempo. (Una IU hecha de una jerarquía de componentes se puede representar como una especie de esquema anidado en el texto, pero un diagrama de flujo que es una red / red completa simplemente no tiene una representación fácil).

El dibujo recursivo tiene un ejemplo sorprendente del uso de la manipulación directa para representar un tipo de recursión. Combina dibujos recursivos con combinadores como LinRec y BinRec definidos en el lenguaje Joy (http: //www.complang.tuwien.ac.at…) o The Theory of Concatenative Combinators y creo que casi tenemos lo que necesitaríamos para construir algoritmos extremadamente potentes a través de la manipulación visual directa. (Algo de lo que antes era bastante escéptico).

Eso no es exactamente de lo que Victor está hablando. Pero creo que ha lanzado una nueva ola de pensamiento sobre la programación visual que puede ser muy influyente.

Creo que la Lista de publicaciones importantes en informática en Wikipedia es una fuente realmente valiosa de tales (y otras) publicaciones.

Readscheme.org es también un repositorio que contiene muchos artículos interesantes. Tal vez mi percepción es parcial, pero creo que cuando se trata de diseño de lenguaje de programación, las funciones recursivas de McCarthy de las expresiones de símbolos y su computación por máquina, los siguientes 700 lenguajes de programación de Landin (y otros trabajos en ISWIM) y la programación de Backus pueden liberarse del estilo von Neumann se encuentran entre los mejores, y todavía tienen mucho valor incluso hoy en día.

También los Fundamentos de los lenguajes de programación de Daniel Friedman y Mitchell Wand (y otros documentos de esos autores) son un recurso importante.

Quizás Shriram Krishnamurthi podría señalar una lista más completa, ya que va a lugares y conoce a la gente.

También recomiendo los artículos mencionados en la publicación del blog 10 documentos técnicos que todo programador debe leer (al menos dos veces) por Michael Fogus y la lista rabbitonweb / papers_i_love mantenida por Paweł Szulc.

(Realmente espero que algún día se mencione una referencia a esta publicación en una respuesta a una pregunta “¿podría señalar algunas publicaciones de Quora que contengan referencias a algunas listas de documentos técnicos que vale la pena leer?”)

Ir a la declaración Considerado perjudicial fue un pequeño fragmento de trolling que ayudó a cambiar la historia. Mucha más gente lo ha escuchado (y lo ha leído) que el teorema del programa estructurado (que en realidad es un documento bastante dudoso y ciertamente no presenta bien su argumento).

El ensayo no solo aborda conceptos técnicos sino también psicología humana. Reconoce que muchos desarrolladores desconfían de la abstracción y piensan que la verdadera habilidad es codificar cada ruta de código posible. Ganó la discusión sobre bucles y procedimientos, pero la actitud persiste. Lamentablemente, la mayoría de las personas no se dan cuenta de que él señala que los bucles imperativos son lógicamente superfluos dada la recursividad (solo un compromiso aceptable dada la tecnología disponible en ese momento). Ciertamente no se dan cuenta de su punto de que los bucles imperativos requieren un esfuerzo adicional para razonar.

Conozco la pregunta como, por ejemplo, documentos, pero el teorema del programa estructurado no es una buena lectura (y fue mucho más mal entendido).

Probablemente esto esté patinando al borde de lo que califica como una respuesta aceptable porque es un libro, en lugar de un papel.

Sin embargo, está disponible gratuitamente en línea, así que voy con él.

The Art of Unix Programming, de Eric S. Raymond, definitivamente califica como seminal y tuvo un gran impacto en mi desarrollo como ingeniero de software.

Léalo con una pizca de sal, ya que algunos de los ejemplos están desactualizados (OOP en Perl no era una cosa cuando fue escrito). Dicho esto, es un intento ambicioso de codificar la sabiduría colectiva de la filosofía de programación que sustenta a Unix y, por extensión, a gran parte de la comunidad de código abierto.

En general, lo he encontrado bastante útil y lo suficientemente relevante como para recomendarlo.

Gracias por el A2A.

A2A.

Todavía estoy pensando por qué Quora me sugiere que responda esta pregunta.

Si bien creo que es un tema muy interesante, no tengo ni idea.

🙂

More Interesting

¿Los algoritmos tienen aplicaciones fuera de la informática?

¿Quiénes son los mejores académicos y practicantes del aprendizaje automático?

¿Cómo compararías Google Research con Microsoft Research?

¿Cuáles son los problemas en la visión por computadora en imágenes médicas?

¿Cuáles son algunas buenas áreas de investigación en informática en IIT Kanpur?

¿Está bien enviar un correo a un autor pidiéndole que me proporcione el código fuente de su trabajo?

¿Por qué el parámetro predeterminado en csrankings.org es "EE. UU. Solamente" aunque el sitio web se llame "Clasificación de informática"?

Cómo publicar una investigación de inteligencia artificial si actualmente no estoy en la academia o en un entorno de investigación de la industria

¿Cuál es el alcance de la investigación en aprendizaje automático?

¿Qué tipo de técnicas de visión por computadora que aún no se exploran para la conducción autónoma?

¿Qué pasa si Google toma el trabajo de investigación que estoy haciendo? ¿Qué tengo que hacer?

¿Cuál tiene un futuro más prometedor: desarrollo web o de software?

¿Cómo calificaría el Instituto Nacional de Investigación en Informática y Control en términos de calidad de la investigación y otros parámetros importantes en comparación con otros institutos mundiales como el MIT, Stanford, etc.?

¿Cuál es el software más útil para un estudiante de informática?

¿Cuál es el equivalente moderno de lo que era Xerox PARC hace décadas?