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… [Leia mais…]
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… [Leia mais…]
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… [Leia mais…]
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… [Leia mais…]
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).… [Leia mais…]
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… [Leia mais…]
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… [Leia mais…]
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… [Leia mais…]
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… [Leia mais…]
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… [Leia mais…]
Olá pessoal, como estamos? Há alguns dias mostrei alguns conceitos relacionados à utilização de DLR Expressions. Na ocasião, apresentei técnicas relacionadas à criação dessas expressions e alternativas para “compilação e execução”. Naquele mesmo post, destaquei que DLR Expression é uma estrutura de dados capaz de representar um programa inteiro. Como disse, trata-se de uma linguagem… [Leia mais…]
Olá pessoal, como estamos? Esse é o terceiro dia consecutivo que escrevo nessa série. Estou muito contente com os avanços obtidos até aqui nessa DSL. No post de hoje, escrevo outro código trivial em C# e, partindo do IL gerado pelo compilador, faço adaptações na DSL para melhorar a fluência. Nesse processo, identifico uma oportunidade… [Leia mais…]
Olá pessoal, como estamos? Se há algo que eu aprendi nesses anos desenvolvendo soluções é: “seja o seu primeiro cliente”. Se está escrevendo uma API, consuma essa API. Somente dessa forma poderá ter clareza do quanto fez um bom trabalho, ou quanto precisa melhorar. No post de hoje, aplico esse princípio a FluentIL. Na prática,… [Leia mais…]
Olá pessoal, como estamos? Já tem algum tempo que não escrevia nada nessa série. Então, hoje voltamos a ativa. No post de hoje apresento as alterações que realizei em nosso projeto para suportar a criação de tipos dinamicamente. Por favor, busque o código fonte atualizado em https://github.com/elemarjr/FluentIL. Suportando a criação de tipos (sem qualquer implementação)… [Leia mais…]
Olá pessoal, como estamos? Há alguns dias, apresentei alguns conceitos fundamentais para DLR. Hoje, pretendo abordar aquilo que considero ser a “espinha dorsal” dessa tecnologia: DLR Expression. Já falei sobre Expressions aqui no Blog. Entretanto, hoje, falo isso pensando em DLR (ênfase diferente). DLR Expression como uma linguagem Acredito que fica mais fácil entender o… [Leia mais…]
Olá pessoal, como estamos? O que acharam de Boo até aqui? Bacana, não!? Boo é expressiva e elegante. Além disso, possui um compilador flexível que permite a adição de características a linguagem. No post de hoje, mostro um pouco de sua sintaxe. No futuro, abordarei a modificação do processo de compilação (cada coisa em seu… [Leia mais…]
maio 30, 2011
1