Olá pessoal, como estamos? Que tal um bate-papo bacana, sem compromissos, sobre tecnologia?! Uma conversa entre amigos em “clima de bar”?! Um HH on-line!? Pois bem, essa é a proposta do VoidPodcast. Nele, Quaiato (@vquaiato), Leandro Dainel (@leandronet) e eu (@elemarjr) falaremos sobre tudo um pouco. De arquitetura de software a futebol, de boas práticas… [Read more…]
Olá pessoal, como estamos? No último post mostrei uma alternativa bacana para converter uma sequência de caracteres em sequência de tokens. Hoje, vou mostrar como implementar um parser simples para validar um programa conforme uma gramática LL(1). A técnica utilizada é bastante simples e é chamada de “Recursive descendent parser”. Gramática para avaliação de expressões… [Read more…]
Table-driven Scanning
Olá pessoal, tudo certo? Escrever um compilador é uma tarefa muito bacana. Ela nos converte em melhores programadores. Para escrever um compilador precisamos ter “firmeza” em assuntos fundamentais das ciências da computação. Implementar as diversas etapas do processo de compilação demanda conhecimentos sólidos em estruturas de dados e técnicas avançadas. No post de hoje, uma… [Read more…]
Olá pessoal, como estamos? Depois de falar um bocado sobre Intermediate Language, resolvi iniciar uma série sobre Assembly. A proposta é nos aproximarmos mais da forma como a máquina funciona e interpreta nossos programas. No decorrer da série, indicarei como podemos verificar o código assembly gerado pelo JIT além de, claro, indicar como escrever programas… [Read more…]
Escrevendo um Engine para Xadrez – parte 13 – Refactoring e melhorias em Board
Olá pessoal, como estamos? No post anterior, começamos o desenvolvimento do modelo que representa uma posição de jogo: a classe Board. Mais que isso, indiquei um caminho claro de transição entre uma posição e outra através do método MakeMove. No post de hoje, mostro, passo-a-passo, como foi a conclusão desse método (incluindo todo refactoring realizado).… [Read more…]
Escrevendo um Engine para Xadrez – parte 12 – A classe Board
Olá pessoal, como estamos? Se você está chegando agora, estamos desenvolvendo um engine de Xadrez que será realmente forte. O código-fonte está disponível em https://github.com/elemarjr/StrongChess. Os posts anteriores estão disponíveis aqui. Depois de algum tempo sem encostar nesse projeto, resolvi dar sequência aos trabalhos. A pausa foi intencional. Queria um refactoring no código feito pelo… [Read more…]
Proxies dinâmicos usando Emitting (avançado) – Parte 3/3 [final]
Olá pessoal, como estamos? Este é o terceiro e último post de uma (mini) série mostrando como criar proxies dinâmicos com emitting. No primeiro post, mostrei como criar objetos dinamicamente que repassam chamadas de métodos para implementações concretas (proxies). No segundo post, mostrei como introduzir um “monitor” que seria “avisado” toda vez que um método… [Read more…]
Proxies dinâmicos usando Emitting (avançado) – Parte 2/3
Olá pessoal, como estamos?! No post anterior, iniciei a apresentar as etapas que percorri para construção de uma classe utilitária para geração, on-the-fly, de proxies. Trata-se de mais um exemplo prático (e útil) de emitting. No lugar de apresentar definições técnicas e explanações sobre tecnologia, apresento como a classe foi desenvolvida. Assim, compartilho, além da… [Read more…]
Proxies dinâmicos usando Emitting (avançado) – Parte 1/3
Olá pessoal, como estamos?! No post de hoje, começo a apresentar meu roteiro de desenvolvimento para uma classe utilitária para geração, on-the-fly, de proxies. Trata-se de mais um exemplo prático de emitting. Este é um post com conteúdo avançado. Por isso, não apresento fundamentação para o Proxy Pattern, Emitting ou Intermediate Language. Para facilitar minha… [Read more…]
FluentIL – Parte 7 – Expressions, atributos, Log, whatever!
Olá pessoal, como estamos? Há alguns dias não escrevia nada aqui no blog. Quero começar a falar sobre compiladores mas não estou conseguindo acertar o post inicial. Hoje vou relatar alguns avanços realizados na FluentIL. Se você não sabe do que se trata, consulte os posts anteriores dessa série. Lembre-se, todo código-fonte está disponível em… [Read more…]
maio 30, 2011
1