Realidades Paralelas

Tuesday, January 25, 2005

Novas arquiteturas

Eu comecei lendo comentários no LtU sobre a nova "arquitetura celular" que o trio Toshiba/IBM/Sony está desenvolvendo para uso no Playstation 3. Daí segui para a análise desta proposta (mas lendo as observações no ars technica). Então surgiu um link para um artigo sobre o conceito da ISA (Instruction Set Architecture) e suas tendências atuais.

Tudo muito interessante; e juntando com o advento dos processadores de múltiplos núcleos (multicore), há muito o que se pensar sobre as arquiteturas do futuro, e como isso deverá afetar o lado do software.

Sunday, January 09, 2005

Sofrendo com o ML-Lex

Ok, como eu disse, estou brincando um pouco com compiladores; fazendo um compilador para uma linguagem pequena com sintaxe parecida com ML em duas versões: uma imperativa e a outra funcional. O compilador está sendo escrito em SML, um tipo de tarefa bastante adequado para a linguagem.

O problema começa nas ferramentas do front-end: o gerador de analisadores léxicos ML-Lex e o gerador de analisadores sintáticos MLYacc. O que atrapalha é que eles seguem muito de perto as ferramentas tradicionais lex e yacc do Unix, que foram feitas em C para gerar código C. Com isso, é impossível fugir de um estilo muito imperativo na criação dos analisadores. A situação não parece ser muito melhor em OCaml, o que é uma pena, já que compiladores e outros processadores de linguagens ficam condenados a esse estilo imperativo nessas linguagens que, a princípio, promovem um estilo de programação mais funcional. Um projeto interessante, mas para o qual eu não tenho tempo, seria pesquisar maneiras de fazer geradores de analisadores de maneira mais funcional, sem perdas significativas de eficiência. Uma idéia possível é usar monadic parser combinators ao estilo do parsec (feito em Haskell). Apesar das linguagens ML não suportarem mônadas nativamente, é possível criar construções baseadas em mônadas do mesmo jeito; talvez a falta de suporte sintático deixe uma ferramenta dessas bem menos prática de usar do que no caso do Haskell, mas só investigando.

Enfim, o lexer está pronto, incluindo seqüências de escape em strings, comentários aninhados e outros detalhes que dão um pouco mais de trabalho. Agora, de volta ao trabalho no parser...

Monday, January 03, 2005

Férias e tal

Tirei uma semana de férias completas, passadas numa praia paradisíaca daqui do nordeste.

Mas antes eu estudei um pouco de teoria das categorias, e agora estou de volta à carga. O interesse no momento é estudar formalismos para modelar concorrência. Encontrei a lógica dinâmica de David Harel, pena que eu não tenha como comprar o livro; mas a tese de doutorado dele (na versão editada pela Springer) está disponível na biblioteca da UPFE. Tem lógica linear também, outro assunto com pouquíssimos livros disponíveis. Teoria de jogos está no bolo; alguns formalismos usando jogos e categorias existem por aí.

Enquanto isso, meus dedos coçam por um pouco de ação prática. Escrevendo código, quero dizer. Acho que vou mexer um pouco com compiladores.

E assim caminha a minha busca... In the land of Mordor where Shadows Lie.