- Livro que ensina na prática design e implementação de linguagens de programação, abordando o processo de criar uma linguagem de script completa
- Explica passo a passo desde conceitos de alto nível, como parsing, semântica, bytecode e coleta de lixo, até implementações de baixo nível
- Começando pela função
main(), o leitor escreve a própria linguagem com tipagem dinâmica, escopo léxico, funções de primeira classe, classes e herança
- Disponível em 4 formatos — impresso, eBook, PDF e web — e, na web, todo o conteúdo pode ser lido gratuitamente
- Escrito por Robert Nystrom, desenvolvedor da linguagem Dart no Google, é um material de aprendizado prático importante para desenvolvedores interessados em criação de linguagens
Visão geral do livro
- Crafting Interpreters é um livro sobre como implementar, com as próprias mãos, uma linguagem de script eficiente e completa
- Inclui tanto conceitos de alto nível como parsing e semântica quanto detalhes de implementação de baixo nível, como representação em bytecode e coleta de lixo
- Foi estruturado para que o leitor escreva o código diretamente e compreenda por completo a estrutura da linguagem
- A linguagem construída ao final oferece suporte a gramática rica, tipagem dinâmica, coleta de lixo, escopo léxico, funções de primeira classe, closures, classes e herança
- É composta por milhares de linhas de código conciso e rápido, e todo o código é escrito pelo próprio leitor
Formatos disponíveis
- O livro é oferecido em quatro formatos: Print, eBook, PDF e Web
- Print: 640 páginas, com ilustrações desenhadas à mão em alta resolução e tipografia refinada
- eBook: o CSS se ajusta ao tamanho da tela do dispositivo, com realce de sintaxe em cores e hiperlinks
- PDF: reproduz a diagramação e as ilustrações da edição impressa, com mais portabilidade
- Web: inclui todos os capítulos e ilustrações em design responsivo, com acesso gratuito ao conteúdo completo
Sobre o autor
- O autor Robert Nystrom participa do desenvolvimento da linguagem Dart no Google
- Anteriormente, trabalhou por 8 anos no desenvolvimento de jogos na Electronic Arts
- É autor do best-seller Game Programming Patterns, que também está disponível gratuitamente
- Fascinado por criação de linguagens, desenvolveu vários projetos pessoais de linguagens (Wren, Magpie, Finch, Vigil)
- Também atua em seu blog pessoal e no Twitter (
@munificentbob), além de manter uma mailing list relacionada ao livro
Acesso e compra
- A edição impressa pode ser comprada em grandes livrarias como Amazon, Barnes & Noble e Book Depository
- O eBook está disponível em Kindle, Apple Books, Google Play Books e Smashwords
- A versão em PDF pode ser comprada no Payhip, com opção de baixar uma amostra gratuita em PDF
- A versão web pode ser lida gratuitamente na íntegra no site oficial
1 comentários
Comentários no Hacker News
Graças a isso, também compreendi completamente o conceito de herança de hierarquia de classes (Class Hierarchy Inheritance), que dispensa visitor
Na linguagem Newspeak, é possível ter classes aninhadas dentro de uma classe, e essas classes aninhadas também são herdadas junto no processo de herança
Este post de blog aborda como esse recurso viabiliza Free Object Algebras: este post de blog
Referência: artigo sobre Expression Problem, site oficial do Newspeak
Em 2020, teve 777 pontos, e em 2024 registrou 607 pontos
Isso porque você aprende implementando por conta própria vários recursos e padrões de linguagem
Em linguagens com recursos que não existem em Java, é difícil aplicar padrões parecidos, mas o próprio desafio era divertido
Gostei muito do estilo casual de escrita do autor e do humor espalhado ao longo do texto
Espero que saia uma continuação como “Adicionar um verificador de tipos ao Lox”
No começo comprei a edição física, mas ela era grande e pesada demais, então acabei comprando de novo em ebook
Fazer anotações e pesquisar ficou muito mais prático
Ainda assim, às vezes parece que você está perdido na montanha enquanto lê :)
Também recomendo outro livro do autor, Game Programming Patterns
Qualquer gráfica faz isso facilmente, e fica muito mais prático de manusear na mesa
Mas Crafting Interpreters é um livro que eu simplesmente não consigo jogar fora, então deixei como está
É esse o nível de qualidade do livro
Além disso, o fato de a versão web ser gratuita é algo realmente generoso
Só acho uma pena que a versão em Java esteja desatualizada
Queria que houvesse uma edição revisada refletindo recursos adicionados recentemente, como sealed classes e exhaustive switch
Fazendo isso, você deixa de precisar da ferramenta temporária de geração de código criada pelo autor
typedefem C++Existe uma abordagem mais hacky de adicionar uma context stack em um parser baseado em PEG, mas o problema de trocar a interpretação da sintaxe continua difícil
persistent data structure ou transactional data structure parecem que poderiam ajudar, mas ainda não encontrei uma formalização clara
A ideia é fazer o parser passar estado para o lexer, para que o lexer saiba o conjunto de nomes de tipos
Por exemplo, em bibliotecas como Parsec, dá para usar a notação
dopara que o resultado de cada etapa seja compartilhado com os parsers seguintesFelizmente, Rust e Go evitaram isso, e com um projeto cuidadoso dá para prevenir bem esse tipo de situação
Vale a pena conferir o projeto shi e, se você tiver interesse em C, também o hacktical-c