Publicado por Rafael Rosa em 22 de September de 2009

Como criar sua própria linguagem de programação usando Ruby e/ou Java

createyourown.pngO livro Create Your Own Programming Language (Traduzindo: crie sua própria linguagem de programação) é ao mesmo tempo um produto e uma comunidade interessante criados por Marc-André Cournoyer (famoso pelo Thin) que promete ensinar a criar uma linguagem de programação simples. Recomendo uma visita ao site oficial, mesmo se você não quiser comprar, é um ótimo exemplo de como divulgar um produto desse tipo. O livro, em PDF, custa US$ 39,99 e garante seu dinheiro de volta por dois meses se não funcionar.

O que você recebe - Duas abordagens diferentes

O pacote inclui um PDF de 53 páginas (eram apenas 44 pages na primeira versão que recebi), uma pilha de código-fonte (para dois tipos diferentes de bootstrap), um screencast e acesso a uma comunidade de desenvolvedores. Logo de cara você pode criar sua própria "linguagem de programação" com um único shell script.

São oferecidas duas abordagens. A primeira é usando lexer, parser e interpretador em Ruby puro que permite que você crie a maior parte da sua linguagem usando Ruby, e essa é a abordagem explicada no PDF. A segunda é um linguagem baseada na JVM (Java Virtual Machine) que oferece um bootstrap e ambiente de execução com os quais você pode construir uma linguagem com maior performance, que é explicada no screencast. Em ambos os casos, as linguagens são variações extremamente simplificadas do Ruby.

Resultados rápidos ao invés de detalhes

O PDF é curto mas bem produzido, guiando o leitor através de uma linguagem parecida com Ruby chamada "Awesome" usando o lexer, parser e o interpretador em Ruby que vem no pacote. Faltam detalhes, mas cobre decentemente os conceitos mais amplos, focando resultados rápidos em detrimento de detalhamento ou explicar ciência da computação de maneira rasa.

Da mesma forma, o screencast não é como os do Peepcode, cobrem o processo do começo ao fim. Ele tem apenas 11 minutos e avança de maneira absurdamente rápida, cobrindo a adição de uma operação "while", um método "substring" e "eval" à linguagem baseada na JVM. O vídeo é bom para se obter uma visão geral do processo, e talvez valha a pena assistí-lo antes de abrir o livro, só para se ter uma idéia do que se está falando, mas para aproveitá-lo ao máximo você precisa estar familiarizado com a terminologia e conceitos usados (que são parcialmente cobertos no PDF) ou estar disposto a pausar o vídeo o tempo todo.

Abre o apetite: Excelente para hobistas

O titulo do livro é correto, mas pode enganar algumas pessoas, uma vez que, embora ele realmente o ensine a criar sua "própria" linguagem, o resultado é apenas uma fração do que se considera uma linguagem de verdade. Ele não irá, sob hipótese alguma, atingir grandes expectativas técnicas, mas é uma excelente maneira de começar a entrar nesse mundo de criação de linguagens, eu não exitaria em recomendá-lo a quem quiser começar a brincar e aprender uma coisa ou outra.

Porém, se você se considera um programador animal e realmente quer se aprofundar na criação de compiladores e linguagens de programação, o conteúdo do livro não possui os detalhes e o assustador teor de conhecimento necessário para se criar uma linguagem de programação robusta. Se você está nessa categoria, compre o Compilers: Principles, Techniques and Tools do Aho, Lam, Sethi, Ullman e divirta-se - é um livro excelente e considerado obrigatório no ramo de construção de compiladores. Outra opção é ler o incrível tutorial online e gratuito Criando seu próprio compilador de brinquedo usando Flex, Bison e LLVM (em inglês) escrito pelo Loren Segal.

Disclaimer: Pedi e recebi uma cópia gratuita do livro para fazer a crítica, mas não tenho qualquer outro relacionamento comercial com o produto ou seu autor.

Nota do tradutor: Li o capítulo gratuito disponibilizado no site do produto, que falava sobre lexers, e sinceramente não achei nada demais, já li explicações melhores procurando na Wikipedia e no Google, e se esse for o nível do livro inteiro acho que será pouco útil, exceto pelo exercício prático. Para quem (como eu) estiver interessado em começar a estudar as várias técnicas e teorias que envolvem a criação de linguagens, recomendo dar uma olhada no Treetop e assistir a palestra de Nathan Sobo no RailsConf 2007, a demonstração ao vivo é muito legal. Também recomendo o livro Programming Languages Pragmatics, que é bem interessante e traz uma abordagem "pé no chão" para ensinar os conceitos necessários de maneira profunda, mas razoavelmente acessível. O assunto é extenso e complexo, mas com persistência e paciência acho que é possível chegar lá, ou pelo menos é o que espero :)

Deixe um Comentário