Realidades Paralelas

Wednesday, September 08, 2004

Outras relações

Ainda sobre o artigo de Reynolds, algumas observações adicionais.

O método de usar interpretadores meta-circulares na definição de linguagens de programação começa, como é conhecido, com John McCarthy e o artigo original sobre a linguagem Lisp. A mesma abordagem é utilizada em um dos capítulos do influente livro "Structure and Interpretation of Computer Programs" de Abelson e Sussman; o uso de interpretadores para explicar características de linguagens de programação também é a idéia central no livro Essentials of Programming Languages de Friedman, Wand e Haynes.

Steele e Sussman definem, em Scheme, um conceito similar ao escape de Reynolds no artigo Lambda, the Ultimate Imperative. Ambos são muito parecidos ao operador J de Peter Landin. A mesma idéia aparece no operador call-with-current-continuation, ou call/cc, das versões recentes da linguagem Scheme.

A notação utilizada, sendo influenciada pelos trabalhos de Landin, lembra uma forma primitiva da linguagem ML. O uso de referências como entidades explicitamente separadas dos outros tipos de variáveis também apareceu em ML.

A adaptação do interpretador para incluir atribuições de variáveis, com o estado sendo propagado por todas as funções, lembra o uso de mônadas na linguagem Haskell.


O artigo de follow-up "Definitional Interpreters Revisited" fala sobre essas relações também (ainda não tinha lido quando escrevi isso aqui).

Enfim, é fácil de ver o quanto esse artigo foi bem sucedido em reunir uma série de idéias fundamentais da área; e a abordagem de mostrar as idéias construtivamente, a partir de interpretadores para elas, foi a maior inovação dele.

0 Comments:

Post a Comment

<< Home