J'ai lu Nielson & Nielson " Semantics with Applications ", et j'aime vraiment le sujet. J'aimerais avoir un livre de plus sur la sémantique du langage de programmation - mais je ne peux vraiment en obtenir qu'un.
J'ai jeté un œil au livre Turbak / Gifford , mais il est trop long; Je pensais que Winskel irait bien, mais je n'y ai pas accès (ce n'est pas dans notre bibliothèque universitaire, et je manque d'argent), et je ne suis même pas sûr si ce n'est pas daté. Slonneger semble OK, mais la partie pratique le rend un peu trop long, et je ne suis pas très à l'aise avec son style.
Ma question est donc - Winskel est- il un bon livre? Et est-il daté?
Existe-t-il également d'autres livres concis sur le sujet?
Réponses:
Tout dépend de la profondeur à laquelle vous voulez aller et de ce que vous savez déjà. Pour un débutant, le livre de Winksel est vraiment sympa, mais oui, il ne vous présente pas l'état de l'art en sémantique tel qu'il a été écrit il y a environ 20 ans. Néanmoins, c'est toujours une bonne première introduction au sujet. Il pourrait également être utile de souligner que T. Nipkow a officialisé une partie substantielle du livre de Winskel dans Isabelle / HOL, voir ici . Donc, si vous voulez apprendre à utiliser des assistants de preuve interactifs avec la compréhension de la sémantique des langages de programmation, vous avez beaucoup de matériel cohérent à utiliser.
D'autres livres plus avancés sont:
Gunter, Semantics of Programming Languages , un livre plus avancé axé sur la sémantique dénotationnelle, une approche de la sémantique, qui n'a pas répondu aux attentes. Se concentre sur des langues purement fonctionnelles et ignore la concurrence. C'est le livre à partir duquel j'ai appris la sémantique en tant que premier cycle, et rétrospectivement, j'aurais préféré utiliser le livre de Winksel à la place. Gunter n'est pas une lecture facile pour un débutant.
Domaines et lambda-calculi par Amadio et Curien. Un autre livre à venir écrit plus dans la tradition de la théorie des domaines, bien qu'il discute des calculs de processus.
Les livres de John Mitchell qui ont déjà été mentionnés ci-dessus. Ils concernent également principalement le calcul séquentiel.
Des livres comme TAPL de Pierce sont très agréables, mais se concentrent étroitement sur un aspect des langages de programmation, à savoir les types, aussi importants soient-ils. Je ne le recommanderais pas comme une première introduction au domaine général des langages de programmation, mais il est obligatoire de le lire pour quiconque souhaite en savoir plus sur les types.
À vrai dire, je pense qu'il n'y a actuellement aucun livre d'introduction à jour sur la sémantique des langues qui reflète les progrès substantiels de la dernière décennie, avec son passage décisif des méthodes de dénotation et du calcul séquentiel à la concurrence (calculs de processus et sémantique des jeux) , la sémantique axiomatique et l'utilisation d'assistants de preuve interactifs dans la vérification.
Mise à jour 22. Avril 2014: Tobias Nipkow et Gerwin Klein ont publié un nouveau livre
qui peut être vu comme «Winskel in Isabelle / HOL». C'est une introduction à la sémantique des langages de programmation (principalement opérationnels et axiomatiques) mais contrairement aux précédentes approches sur papier et stylo, ce livre exprime toutes ses mathématiques en Isabelle / HOL. En d'autres termes, c'est en même temps un livre sur la démonstration des théorèmes.
Le livre est tout neuf, donc je ne l'ai pas utilisé pour l'enseignement, mais il semble vraiment convenir comme une introduction qui est présentée à un niveau inférieur à Software Foundations par Pierce et al.
la source
Voici un échantillon aléatoire de documents disponibles gratuitement en ligne:
la source
Je diviserais les livres sur la sémantique du langage de programmation en deux classes: ceux qui se concentrent sur la modélisation des concepts du langage de programmation et ceux qui se concentrent sur les aspects fondamentaux de la sémantique. Il n'y a aucune raison qu'un livre ne puisse pas faire les deux. Mais, généralement, il n'y a que peu de choses que vous pouvez mettre dans un livre, et les auteurs ont également leurs propres prédispositions sur ce qui est important.
Le livre de Winskel, déjà mentionné, traite un peu des deux aspects. Et, c'est un bon livre pour débutant. Un livre tout aussi bon, peut-être même meilleur, est celui avec lequel j'ai commencé: la description dénotative de Gordon des langages de programmation . Ce fut mon premier livre sur la sémantique, que j'ai lu peu de temps après avoir terminé mes études de premier cycle. Je dois dire que cela m'a donné une base solide en sémantique et je n'ai jamais eu à me demander en quoi la sémantique dénotationnelle diffère de la sémantique opérationnelle ou de la sémantique axiomatique, etc. Ce livre restera mon préféré de tous les temps sur la sémantique dénotationnelle.
D'autres livres qui se concentrent sur les aspects de modélisation plutôt que sur les aspects fondamentaux sont les suivants:
La sémantique des langages de programmation de Tennent , qui est un livre plus ou moins à jour sur la sémantique des langages de programmation impératifs. Ç'est facile a lire. Cependant, il a tendance à être abstrait dans les parties ultérieures du livre et vous pourriez avoir du mal à voir pourquoi les choses sont faites d'une manière particulière.
Théories de Reynolds sur les langages de programmation . Toute personne spécialisée en sémantique doit absolument lire ce livre. C'est après tout de Reynolds. (David Schmidt m'a dit un jour: "même si Reynolds vous lit le journal du matin, vous voulez écouter attentivement, car vous pourriez apprendre quelque chose d'important"!). Il a une bonne couverture à la fois des aspects de la modélisation et des aspects fondamentaux.
Les meilleurs livres sur les aspects fondamentaux sont ceux de Gunter (que je considère comme un livre de doctorat) et Mitchell (qui est un bon livre de référence à avoir sur votre étagère car il est assez complet).
la source
J'ai vraiment apprécié lire Winskel lorsque je suivais le cours de premier cycle sur la sémantique. Je ne peux pas dire si c'est daté, car je ne fais pas de recherche dans ce domaine. Un avantage de Winskel est que vous pouvez le trouver traduit dans d'autres langues que l'anglais.
Pour une lecture plus approfondie, plus à un niveau supérieur, je suggère les livres de John Mitchell, Foundations for Programming Languages and Concepts in Programming Languages . Si vous ne lisez que les premiers chapitres, je suppose qu'ils répondent également à votre exigence de concision.
Vous ne trouverez pas de brouillons gratuits de ces livres, donc si vous avez un budget limité, optez pour le «pourrait» dans la réponse de Radu.
la source
Eh bien, je ne suis pas un expert en la matière, mais je peux donner quelques conseils généraux.
Tout d'abord, il y a des gens qui ont déjà lu le livre et fourni des critiques à ce sujet. Par exemple, pour le livre Winskel The Formal Semantics of Programming Languages (voir [1] et [2] ), j'ai trouvé des critiques sur Amazon.
Une partie d'une critique se lit comme suit:
18/20 personnes ont trouvé cet avis utile. Vous pouvez rechercher Amazon (ou d'autres sources) pour voir plus d'avis.
Deuxièmement, Amazon propose des types et des langages de programmation et une théorie des catégories de base pour les informaticiens avec ce livre. Sur un autre sujet, Dave Clarke propose ces livres comme d'excellents sur les «systèmes de types et la sémantique du langage de programmation». Encore une fois, je ne suis pas un expert, mais ceux-ci pourraient vous être utiles.
la source
Je voudrais ajouter deux livres introuvables sur les réponses données jusqu'à présent:
Le livre de Stump est concis mais très clair.
la source
Pour un débutant complet étudiant la sémantique opérationnelle, je suggère les langages de programmation et la sémantique opérationnelle de Maribel Fernández . Tout est expliqué de manière très simple et facile à comprendre. http://www.springer.com/computer/swe/book/978-1-4471-6367-1
la source