¿Cómo puedo aprender la teoría del lenguaje de programación?

Mis sugerencias personales son las siguientes:

  • Teoría de tipos -> Teoría de tipos y pruebas formales: una introducción: Rob Nederpelt, Herman Geuvers: 9781107036505: Amazon.com: Libros
    • El libro mencionado anteriormente presenta varios tipos de Cálculos de Lambada sin tipo y tipificados antes de exponer finalmente el Cálculo de construcciones (Sin tipo -> Tipo de primer orden -> Tipo de segundo orden -> Tipo dependiente -> Cubo Lambda -> Calc. De construcciones). Una cosa buena es que este libro cubre los juicios. También me gustaría decir que los Ejercicios son realmente buenos. Por ejemplo, uno de los ejercicios del Capítulo 3 (para [math] \ lambda 2 [/ math]) le pide a uno que construya un Tipo de árbol y que demuestre cosas al respecto. Lo he usado como primer libro en Type Theory & Lambda Calculus, y es realmente bueno. Sin embargo, tenga en cuenta que es un libro teórico y supone madurez matemática y buena capacidad para usar la inducción y la abstracción.
  • Tipos y lenguajes de programación -> Tipos y lenguajes de programación (MIT Press): Benjamin C. Pierce: 9780262162098: Amazon.com: Libros
    • Este libro es el libro _classic_ y utiliza SML para la exposición de conceptos. Introduce semántica formal, tipos, tipos inductivos, tipos co-inductivos, inferencia de tipos, la cantidad requerida de cálculo Lambda. Es una buena combinación de teoría y práctica, y tiene una buena cantidad de pruebas. Sin embargo, hay una exposición de código en todo momento para complementar la Teoría. Yo diría que es uno de los mejores libros que he leído sobre TCS, junto con Automata, Idiomas y Computación y Algoritmos CLRS de Ullman.
  • De acuerdo, una vez que se hayan completado los 2 anteriores, estará en un lugar con una combinación suficientemente sólida de Fundamentos teóricos y exposiciones de Programación funcional de conceptos básicos. Entonces, esta sección está sesgada en función de los intereses, pero dado que tengo una mentalidad teórica, estos son los que he estado usando:
    • HoTT (Teoría del tipo de homotopía) -> Teoría del tipo de homotopía: Fundamentos univalentes de las matemáticas: Programa de fundamentos univalentes: Amazon.com: Libros
      • Este libro es básicamente un libro bastante accesible, pero riguroso y profundo (con Ejercicios) que introduce la extensión de la Teoría de tipo intuitiva usando la Teoría de la homotopía. Sorprendentemente, esta es una base alternativa de Matemáticas a la teoría de conjuntos ZFK. Es intelectualmente rico, estimulante e introduce también la teoría de la categoría y la teoría de la homotopía necesarias. Un buen libro de texto.
    • Teoría de la prueba -> Teoría de la prueba: Cálculos secuenciales y formalismos relacionados (Matemática discreta y sus aplicaciones): Katalin Bimbo: 9781466564664: Amazon.com: Libros
      • Un excelente libro, presenta los conceptos básicos de la teoría de la prueba y sus interacciones con la lógica combinatoria.
    • Temas avanzados en tipos y lenguajes de programación -> Temas avanzados en tipos y lenguajes de programación (MIT Press): 9780262162289: Computer Science Books @ Amazon.com
      • Como su nombre lo indica, este libro es una continuación del libro anterior de Pierce e introduce Conceptos avanzados en tipos y lenguajes de programación, incluidas las relaciones entre asignación de memoria y tipos dependientes de seguridad de tipo.
    • Estructuras de datos funcionales -> Estructuras de datos puramente funcionales: Chris Okasaki: 9780521663502: Amazon.com: Libros
      • Este libro presenta la implementación de estructuras de datos funcionales en SML / Haskell, y es un buen puente entre los algoritmos tradicionales y las estructuras de datos implementadas con respecto a los fundamentos teóricos de tipo, como la inmutabilidad y la apatridia.
  • Buena suerte en la búsqueda!

A2A. Esa es una gran pregunta y diferentes personas darán diferentes respuestas.

Justo ahora estoy asistiendo (como profesor) a la Midland Graduate School for Foundations of Computer Science, que es un lugar donde puedes aprender sobre la teoría más allá de los lenguajes de programación y más.

MGS 2017

Hay otros eventos con un alcance similar, por ejemplo, la Escuela de Verano de Oregon

Escuela de verano de lenguajes de programación de Oregon

Creo que, como en la mayoría de los campos, hay cosas que aprender que puedes aprender de manera más efectiva al poder hablar con la gente (maestros y otros estudiantes). Por lo tanto, recomendaría asistir a una de estas escuelas, si es posible.

Mira estos dos libros:

  • Estructura e interpretación de programas de computadora: http://mitpress.mit.edu/sicp/
  • Conceptos de lenguajes de programación (novena edición): Robert W. Sebesta

Estos dos le brindarán una sólida comprensión de la teoría de lenguajes de programación y prácticamente todo lo que se construya en torno a este tema.

Buenos libros ya recomendados …

Sin embargo, personalmente encontré que una comprensión sólida de lo que sucede ‘debajo’ era invaluable.

Nunca dudes en recomendar

Arquitectura de la computadora: un enfoque cuantitativo (serie Morgan Kaufmann en arquitectura y diseño de computadoras): Amazon.es: John L. Hennessy, David A. Patterson: 9780123838728: libros

Considere la versión en línea del nuevo libro de Bob Harper, o la versión del árbol muerto si está tan encerrado. ¡PFPL está fuera!

More Interesting

¿Cuáles son los trabajos de Google Research más interesantes?

¿Cuáles son los problemas no resueltos de la informática?

En la investigación cuantitativa, digamos informática, ¿cuál es la distinción entre un problema de investigación, una pregunta de investigación, objetivos de investigación y una hipótesis / ses de investigación? ¿Cuál es un ejemplo de cada uno?

¿Es el procesamiento en memoria (PiM) la próxima gran novedad en la arquitectura de computadoras?

Estoy terminando un master en econometría, pero también me gustaría trabajar en problemas de ciencia (biología como primera opción). ¿Qué debo hacer para tener una opción de cambio en el futuro?

¿Cuáles son algunos avances recientes en la teoría de juegos?

¿Cuáles son las buenas opciones de investigación en informática en India?

Como estudiante universitario sin un asesor, ¿cómo realizo una investigación en los campos de VLSI, arquitecturas informáticas y sistemas de baja potencia con el objetivo de publicar artículos en revistas / conferencias de renombre? ¿Cómo planeo publicar artículos?

¿Es importante tener experiencia en investigación específica de CS para admisiones a escuelas de posgrado de CS?

¿Qué es el algoritmo de relleno inferior izquierdo (BLF)?

Quiero construir un dron propio desde cero. Como experto en CS, sin conocimientos de mecánica / aeronáutica y electrónica avanzada, ¿cuál debería ser mi camino por delante?

¿Cuáles son los beneficios de aprender informática teórica?

¿Cuáles son algunas de las aplicaciones prácticas de las matemáticas discretas en el campo de la informática?

¿Quiénes son algunas personas interesantes a seguir en Quora para el campo de la informática?

¿Qué importancia tienen las becas para estudiantes graduados?