He estado leyendo " Semántica con aplicaciones " de Nielson & Nielson , y realmente me gusta el tema. Me gustaría tener un libro más sobre semántica del lenguaje de programación, pero realmente solo puedo obtener uno.
Eché un vistazo al libro de Turbak / Gifford , pero es demasiado largo; Pensé que Winskel estaría bien, pero no tengo acceso a él (no está en nuestra biblioteca de la Universidad, y tengo poco dinero), y ni siquiera estoy seguro de si no está fechado. Slonneger parece estar bien, pero la parte práctica lo hace demasiado largo, y no estoy muy cómodo con su estilo.
Entonces mi pregunta es: ¿es Winskel un buen libro? ¿Y está anticuado?
Además, ¿hay otros libros concisos sobre el tema?
Respuestas:
Todo depende de qué tan profundo quieras llegar y cuánto ya sabes. Para un principiante, el libro de Winksel es realmente agradable, pero sí, no te está presentando el estado de la semántica tal como se escribió hace unos 20 años. Sin embargo, sigue siendo una buena primera introducción al tema. También podría valer la pena señalar que T. Nipkow ha formalizado una parte sustancial del libro de Winskel en Isabelle / HOL, ver aquí . Entonces, si desea aprender utilizando asistentes de prueba interactivos junto con la comprensión de la semántica de los lenguajes de programación, tiene mucho material coherente para aprovechar.
Otros libros que son más avanzados son:
Gunter, Semántica de lenguajes de programación , un libro más avanzado que se centra en la semántica denotacional, un enfoque de la semántica, que no ha estado a la altura de las expectativas. Se centra en lanugages puramente funcionales e ignora la concurrencia. Este es el libro del que me enseñé semántica cuando era estudiante y, en retrospectiva, desearía haber usado el libro de Winksel. Gunter no es una lectura fácil para un principiante.
Dominios y cálculos lambda de Amadio y Curien. Otro libro que viene escrito más en la tradición teórica del dominio, aunque discute los cálculos del proceso.
Los libros de John Mitchell que ya se han mencionado anteriormente. También son principalmente sobre computación secuencial.
Los libros como TAPL de Pierce son muy agradables, pero se centran estrechamente en un aspecto de los lenguajes de programación, a saber, los tipos, tan importantes como eso. No lo recomendaría como una primera introducción al área general de lenguajes de programación, pero es obligatorio leer para cualquiera que quiera aprender sobre tipos.
A decir verdad, creo que actualmente no hay un libro introductorio actualizado sobre semántica del lenguaje que refleje el progreso sustancial que ha visto la última década, con su cambio decisivo de los métodos denotacionales y el cálculo secuencial a la concurrencia (cálculo de procesos y semántica de juegos) , semántica axiomática y el uso de asistentes de prueba interactivos en la verificación.
Actualización 22. Abril 2014: Tobias Nipkow y Gerwin Klein han publicado un nuevo libro
que se puede ver como 'Winskel en Isabelle / HOL'. Es una introducción a la semántica de los lenguajes de programación (principalmente operativos y axiomáticos), pero a diferencia de los enfoques anteriores basados en lápiz y papel, este libro expresa todas sus matemáticas en Isabelle / HOL. En otras palabras, es al mismo tiempo un libro sobre demostración de teoremas.
El libro es completamente nuevo, así que no lo he usado para enseñar, pero parece realmente adecuado como una introducción que se presenta en un nivel más bajo que Software Foundations de Pierce et al.
fuente
Aquí hay una muestra aleatoria de materiales disponibles gratis en línea:
fuente
Dividiría los libros sobre semántica del lenguaje de programación en dos clases: los que se centran en modelar conceptos de lenguaje de programación y los que se centran en los aspectos fundamentales de la semántica. No hay razón para que un libro no pueda hacer ambas cosas. Pero, por lo general, solo hay mucho que puedes poner en un libro, y los autores también tienen sus propias predisposiciones sobre lo que es importante.
El libro de Winskel, ya mencionado, hace un poco de ambos aspectos. Y, es un buen libro para principiantes. Un libro igualmente bueno, tal vez incluso mejor, es con el que comencé: la descripción denotacional de Gordon de los lenguajes de programación . Este fue mi primer libro sobre semántica, que leí poco después de terminar mi trabajo de pregrado. Tengo que decir que me dio una base sólida en semántica y nunca tuve que preguntarme cómo la semántica denotacional difiere de la semántica operativa o semántica axiomática, etc. Este libro seguirá siendo mi favorito de todos los tiempos en semántica denotacional.
Otros libros que se centran en aspectos de modelado en lugar de aspectos fundamentales son los siguientes:
La semántica de Tennent de los lenguajes de programación , que es un libro más o menos actualizado sobre la semántica de los lenguajes de programación imperativos. Es facil de leer. Sin embargo, tiende a ser abstracto en partes posteriores del libro y es posible que tenga que luchar para ver por qué las cosas se están haciendo de una manera particular.
Teorías de Reynolds sobre lenguajes de programación . Cualquiera que se especialice en semántica definitivamente debería leer este libro. Después de todo, es de Reynolds. (David Schmidt me comentó una vez, "incluso si Reynolds te está leyendo el periódico de la mañana, ¡quieres escuchar con atención, porque podrías aprender algo importante"!) Tiene una buena cobertura tanto de los aspectos de modelado como de los aspectos fundamentales.
Los mejores libros sobre aspectos fundamentales son el de Gunter (que considero un libro de texto de posgrado) y el de Mitchell (que es un buen libro de referencia para tener en su estantería porque es bastante completo).
fuente
Realmente disfruté leyendo Winskel cuando estaba tomando el curso de pregrado sobre semántica. Sin embargo, no puedo decir si está anticuado, ya que no investigo en este campo. Una ventaja de Winskel es que puedes encontrarlo traducido en otros idiomas además del inglés.
Para una lectura adicional, más a nivel de posgrado, sugeriría los libros de John Mitchell, Fundamentos para lenguajes de programación y Conceptos en lenguajes de programación . Si lees solo los primeros capítulos, supongo que también cumplen con tu requisito de concisión.
No encontrará borradores gratuitos de estos libros, así que si tiene un presupuesto restringido, busque el "poder" en la respuesta de Radu.
fuente
Bueno, no soy un experto en el tema, pero hay algunos consejos generales que puedo dar.
Primero, hay algunas personas que ya han leído el libro y han proporcionado reseñas sobre él. Por ejemplo, para el libro de Winskel La semántica formal de los lenguajes de programación (ver [1] y [2] ) encontré reseñas en Amazon.
Parte de una revisión dice:
A 18/20 personas les parece útil la reseña. Puede buscar Amazon (u otras fuentes) para ver más reseñas.
En segundo lugar, Amazon ofrece tipos y lenguajes de programación y teoría de categorías básicas para informáticos junto con este libro. En otro tema, Dave Clarke ofrece estos libros como excelentes sobre "Sistemas de tipos y semántica de lenguaje de programación". De nuevo, no soy un experto, pero podrían ser útiles para usted.
fuente
Me gustaría agregar dos libros que no se encuentran en las respuestas dadas hasta ahora:
El libro de Stump es conciso pero muy claro.
fuente
Para un principiante completo que estudia semántica operacional, sugeriría Lenguajes de programación y semántica operacional de Maribel Fernández . Todo se explica de una manera muy simple que es fácil de entender. http://www.springer.com/computer/swe/book/978-1-4471-6367-1
fuente