Type-Based Analysis and Applications
Artigo de Jens Palsberg
Um survey paper que apresenta uma visão geral da área de análises estáticas de programas baseadas em tipos. Após introduzir o assunto e definir análise baseada em tipos (uma análise baseada em tipos assume que o programa é aprovado pelo verificador de tipos, e a análise toma proveito deste fato), o artigo mostra um exemplo simples de análise para determinação do fluxo de controle, primeiro usando um sistema que não se baseia em tipos (0-CFA), depois três técnicas baseadas em tipos. Neste exemplo as análises baseadas em tipos são divididas em sistemas de tipos e efeitos e tipos-como-discriminadores.
A próxima seção discorre sobre as vantagens das análises baseadas em tipos, resumidas nos tópicos simplicidade, eficiência, corretude e competitividade (com outras formas de análise estática). Em seguida são dados exemplos de várias ferramentas e técnicas já desenvolvidas utilizando análise baseada em tipos, e uma breve seção sobre outros tipos de análises já experimentadas. Um comentário interessante é o que diz respeito às diferenças entre as ferramentas implementadas e as técnicas pesquisadas: a maioria das ferramentas usa a técnica tipos-como-discriminadores, que parece mais simples, enquanto a maior parte da pesquisa se concentra no uso de sistemas de tipos e efeitos. A sugestão é que mais sistemas práticos devem ser formalizados, e mais sistemas pesquisados devem ser implementados.
Das aplicações apresentadas duas bem interessantes e que eu já estava de olho são gerenciamento de memória e detecção de condições de corrida em sistemas concorrentes. Por que não pensar em gerenciamento de recursos baseados em tipos ? Análise de efeitos colaterais me parece interessante também, principalmente para o projeto de linguagens de programação. Nesse sentido, é uma boa ver o artigo de Wadler, "The Marriage of Effects and Monads".
Palsberg mantém um site sobre o assunto.
Um survey paper que apresenta uma visão geral da área de análises estáticas de programas baseadas em tipos. Após introduzir o assunto e definir análise baseada em tipos (uma análise baseada em tipos assume que o programa é aprovado pelo verificador de tipos, e a análise toma proveito deste fato), o artigo mostra um exemplo simples de análise para determinação do fluxo de controle, primeiro usando um sistema que não se baseia em tipos (0-CFA), depois três técnicas baseadas em tipos. Neste exemplo as análises baseadas em tipos são divididas em sistemas de tipos e efeitos e tipos-como-discriminadores.
A próxima seção discorre sobre as vantagens das análises baseadas em tipos, resumidas nos tópicos simplicidade, eficiência, corretude e competitividade (com outras formas de análise estática). Em seguida são dados exemplos de várias ferramentas e técnicas já desenvolvidas utilizando análise baseada em tipos, e uma breve seção sobre outros tipos de análises já experimentadas. Um comentário interessante é o que diz respeito às diferenças entre as ferramentas implementadas e as técnicas pesquisadas: a maioria das ferramentas usa a técnica tipos-como-discriminadores, que parece mais simples, enquanto a maior parte da pesquisa se concentra no uso de sistemas de tipos e efeitos. A sugestão é que mais sistemas práticos devem ser formalizados, e mais sistemas pesquisados devem ser implementados.
Das aplicações apresentadas duas bem interessantes e que eu já estava de olho são gerenciamento de memória e detecção de condições de corrida em sistemas concorrentes. Por que não pensar em gerenciamento de recursos baseados em tipos ? Análise de efeitos colaterais me parece interessante também, principalmente para o projeto de linguagens de programação. Nesse sentido, é uma boa ver o artigo de Wadler, "The Marriage of Effects and Monads".
Palsberg mantém um site sobre o assunto.