Eu tenho lido " Semantics with Applications ", de Nielson & Nielson , e gosto muito do assunto. Eu gostaria de ter mais um livro sobre semântica da linguagem de programação - mas eu realmente posso conseguir apenas um.
Dei uma olhada no livro de Turbak / Gifford , mas é muito longo; Eu pensei que Winskel ficaria bem, mas não tenho acesso a ele (não está na nossa biblioteca da Universidade e estou com pouco dinheiro), e nem tenho certeza se não está datado. Slonneger parece bom, mas a parte prática o torna um pouco longo demais, e eu não estou muito confortável com o estilo dele.
Então, minha pergunta é: Winskel é um bom livro? E é datado?
Além disso, existem outros livros concisos sobre o assunto?
Respostas:
Tudo depende da profundidade que você quer ir e do quanto você já sabe. Para um iniciante, o livro de Winksel é muito bom, mas sim, não está apresentando o estado da arte da semântica, como foi escrito há cerca de 20 anos. No entanto, ainda é uma boa primeira introdução ao assunto. Também vale a pena ressaltar que T. Nipkow formalizou uma parte substancial do livro de Winskel em Isabelle / HOL, veja aqui . Portanto, se você quiser aprender a usar assistentes interativos de prova, além de entender a semântica das linguagens de programação, terá muito material coerente para usar.
Outros livros mais avançados são:
Gunter, Semântica das Linguagens de Programação , um livro mais avançado, focado na semântica denotacional, uma abordagem da semântica, que não atendeu às expectativas. Concentra-se em linguagens puramente funcionais e ignora a simultaneidade. Este é o livro do qual eu me ensinei semântica na graduação e, em retrospecto, eu gostaria de ter usado o livro de Winksel. Gunter não é uma leitura fácil para iniciantes.
Domínios e lambda-calculi de Amadio e Curien. Outro livro escrito mais na tradição teórica do domínio, embora discuta o cálculo do processo.
Livros de John Mitchell que já foram mencionados acima. Eles também são principalmente sobre computação seqüencial.
Livros como o TAPL de Pierce são muito bons, mas se concentram estreitamente em um aspecto das linguagens de programação, a saber, tipos, por mais importantes que sejam. Eu não o recomendaria como uma primeira introdução à área geral de linguagens de programação, mas é obrigatório ler para quem quiser aprender sobre tipos.
Verdade seja dita, acho que atualmente não há um livro introdutório atualizado sobre semântica de idiomas que reflita o progresso substancial que a década passada viu, com sua mudança decisiva dos métodos denotacionais e da computação seqüencial para a simultaneidade (cálculo de processos e semântica de jogos) , semântica axiomática e o uso de assistentes de prova interativos na verificação.
Atualização 22. Abril 2014: Tobias Nipkow e Gerwin Klein publicaram um novo livro
que pode ser visto como 'Winskel em Isabelle / HOL'. É uma introdução à semântica das linguagens de programação (principalmente operacional e axiomática), mas, ao contrário das abordagens anteriores baseadas em caneta e papel, este livro expressa toda a sua matemática em Isabelle / HOL. Em outras palavras, é ao mesmo tempo um livro sobre prova de teoremas.
O livro é novo em folha, por isso não usei para ensinar, mas parece realmente adequado como uma introdução que é lançada em um nível mais baixo do que o Software Foundations de Pierce et al.
fonte
Aqui está uma amostra aleatória de materiais disponíveis gratuitamente on-line:
fonte
Eu dividiria os livros sobre semântica da linguagem de programação em duas classes: aquelas focadas na modelagem de conceitos da linguagem de programação e aquelas focadas nos aspectos fundamentais da semântica. Não há razão para que um livro não possa fazer as duas coisas. Mas, geralmente, há muito que você pode colocar em um livro, e os autores também têm suas próprias predisposições sobre o que é importante.
O livro de Winskel, já mencionado, aborda um pouco dos dois aspectos. E, é um bom livro para iniciantes. Um livro igualmente bom, talvez até melhor, é o que eu comecei: Descrição denotacional das linguagens de programação de Gordon . Este foi o meu primeiro livro sobre semântica, que li logo depois de terminar meu trabalho de graduação. Devo dizer que isso me deu uma base sólida na semântica e nunca tive que me perguntar como a semântica denotacional difere da semântica operacional ou semântica axiomática etc. Este livro continuará sendo meu favorito de todos os tempos na semântica denotacional.
Outros livros que se concentram nos aspectos de modelagem , e não nos aspectos fundamentais, são os seguintes:
Semântica das linguagens de programação da Tennent , que é um livro mais ou menos atualizado sobre a semântica das linguagens de programação imperativas. É fácil de ler. No entanto, tende a ser abstrato nas partes posteriores do livro e você pode ter que se esforçar para ver por que as coisas estão sendo feitas de uma maneira específica.
Teorias de Reynolds sobre linguagens de programação . Qualquer pessoa especializada em semântica deve definitivamente ler este livro. Afinal, é de Reynolds. (David Schmidt comentou uma vez para mim: "mesmo que Reynolds esteja lendo o jornal da manhã para você, você quer ouvir com atenção, porque pode aprender algo importante"!) Ele tem uma boa cobertura dos aspectos de modelagem e de fundamentos.
Os melhores livros sobre aspectos fundamentais são os de Gunter (que considero um livro de pós-graduação) e os de Mitchell (que é um bom livro de referência para se ter em sua estante, porque é bastante abrangente).
fonte
Eu realmente gostei de ler Winskel quando estava no curso de graduação em semântica. Não sei dizer se é datado, já que não faço pesquisa nesse campo. Uma vantagem do Winskel é que você pode encontrá-lo traduzido em outros idiomas que não o inglês.
Para uma leitura mais aprofundada, mais em nível de pós-graduação, sugiro os livros de John Mitchell, Fundamentos para linguagens de programação e conceitos em linguagens de programação . Se você ler apenas os primeiros capítulos, acho que eles também atendem às suas exigências de concisão.
Você não encontrará rascunhos gratuitos desses livros; portanto, se você tiver um orçamento restrito, procure o "poder" na resposta de Radu.
fonte
Bem, não sou especialista no assunto, mas há alguns conselhos gerais que posso dar.
Primeiro, há algumas pessoas que já leram o livro e forneceram críticas sobre ele. Por exemplo, para o livro de Winskel, The Semantics Formal of Programming Languages (veja [1] e [2] ), encontrei resenhas na Amazon.
Parte de uma revisão diz:
18/20 pessoas acham o comentário útil. Você pode procurar na Amazon (ou em outras fontes) para ver mais avaliações.
Segundo, a Amazon oferece tipos e linguagens de programação e teoria básica de categorias para cientistas da computação, juntamente com este livro. Em outro tópico, Dave Clarke oferece esses livros como excelentes em "Sistemas de tipos e semântica da linguagem de programação". Mais uma vez, não sou especialista, mas esses podem ser úteis para você.
fonte
Gostaria de adicionar dois livros não encontrados nas respostas até agora:
O livro de Stump é conciso, mas muito claro.
fonte
Para um iniciante completo que estuda semântica operacional, sugiro Linguagens de Programação e Semântica Operacional por Maribel Fernández . Tudo é explicado de uma maneira muito simples e fácil de entender. http://www.springer.com/computer/swe/book/978-1-4471-6367-1
fonte