Cast a Spell

April 5th, 2011 § 0 comments

Meu último texto aqui no blog foi sobre como compilar o LLVM no Mac OS X. Para os curiosos que me perguntaram o motivo disso, a resposta está aqui: Spell.

Leitores antigos do blog sabem que linguagens de programação são um dos meus interesses primários dentro do campo da computação. Desde que eu comecei a programar, eu sempre brinquei com a construção de linguagens, embora até então não tivesse tomado tempo para realmente tentar fazer um esforço ponta a ponta usando tecnologia mais recente.

Com o desenvolvimento do LLVM, as coisas ficaram bem mais simples para alguém que queira construir uma linguagem e produzir algo que realmente tenha alguma utilidade prática–seja esta simplesmente para aprender alguma coisa nova ou seja para construir algo que seja realmente passível de uso em circunstâncias de produção.

Eu me interessei pelo LLVM assim que li sobre o projeto, mas até então não tivera oportunidade de usar. Spell é o meu primeiro esforço na direção, combinando o que eu aprendi sobre o assunto nos últimos tempos com a vontade de experimentar com algum um pouco mais consitente no campo que não a criação de simples VMs.

Spell não é, de forma alguma, uma linguagem para produção. Antes, é um projeto para o meu aprendizado e o de quaisquer outros interessados em ver com uma linguagem pode funcionar. Eu usei alguns atalhos–como o Treetop para fazer a análise léxica e parte da análise sintática–mas o que está no repositório deve servir com uma referência simples ao que pode ser feito em uma linguagem.

Por exemplo, Spell implementa closures e o código demonstra os trade-offs que foram feitos para fazer isso possível. Outros caminhos estão lá que eu pretendo explorar no futuro, como mecanismos similares à Spineless Tagless G-Machine (.ps) e a geração de código para garbage collection através do próprio LLVM.

De resto, construições são bem-vindas. Havendo interesse interesse em aprender também, basta fazer um fork do repositório e implementar o que quiser. Há bastante coisa com que se fuça lá–afinal de contas, lanças magias é sempre algo divertido. :)

Leave a Reply

Your email address will not be published. Required fields are marked *

What's this?

You are currently reading Cast a Spell at Superfície Reflexiva.

meta