On 7/31/09, Nathan Campos <eeep...@gmail.com> wrote:
>
> Olá Thiago,
> Estava escrevendo a mensagem anterior e não deu para saber que você
> tinha mandado um email, mas como já disse na mensagem anterior: Não
> quero gastar dinheiro logo no começo.
>
Alguns itens neste link sao de graca:
http://www.ventonegro.org/2008/07/bibliography-of-programming-languages-implementation/
Codigo fonte do meu compilador (em construcao):
https://github.com/asandroq/sly/tree
--
-alex
http://www.ventonegro.org/
Antes de tudo, eu gostaria de aproveitar esse e-mail para tornar
pública a minha sincera admiração aos moderadores desta lista por seu
admirável exemplo de paciência e tolerância. Eu em seu lugar não
saberia me comportar dessa maneira.
On 8/3/09, Blabos de Blebe <bla...@gmail.com> wrote:
>
> Nathan,
>
> Na boa, cara
>
> Alguém algum dia deve ter te dito que programação era algo simples,
> lindo e que era possível de ser dominada com pouco esforço.
>
> Tenho uma má notícia pra você:
>
> Mentiram. Enganaram e te iludiram.
>
http://norvig.com/21-days.html
--
-alex
http://www.ventonegro.org/
On 8/3/09, Emerson de Freitas Barcelos <emerson...@yahoo.com.br> wrote:
>
> Engraçado que me disseram a mesma coisa quando "resolvi" aprender
> assembly x86 antes de saber "C".
Assembly so' e' mais dificil do que C no quesito "ser mais
trabalhoso". E' necessario um monte de bookkeeping e de conhecimento
da arquitetura, mas e' algo que se consulta em um guia de referencia.
Ja' um escrever um compilador requer um monte de teoria de
verdade. As chances de uma pessoa desistir porque nao esta' fazendo
progressos e' muito grande. Existe uma razao para em qualquer area
sempre se aprender pelo mais facil e aumentar a dificuldade
gradualmente.
--
-alex
http://www.ventonegro.org/
On 8/3/09, Emerson de Freitas Barcelos <emerson...@yahoo.com.br> wrote:
>
> Foi só uma comparação.
> Ao invés de mandar o cara fazer corte e costura, por que não pediu que
> antes da implementação, fosse liberada uma descrição formal da
> linguagem que se deseja implementar o referido compilador ?
> Já aí ele teria uma visão de quão trabalhoso é a tarefa.
> Falaram para ele brincar com o yacc antes ?
> Acho que o caminho é por aí...
>
A sintaxe e' a parte mais facil. Quem deseja escrever um
compilador (ai' eu incluo o suporte de tempo de execucao tambem) tem
muitas outras questoes para decidir e implementar:
- Tipos fracos ou fortes
- Tipos estaticos ou dinamicos
- Coleta de lixo ou controle manual
- Funcoes basicas (C, Pascal, C++) ou closures (Scheme, Haskell, C#)
- Tipos de dados suportados (records, listas, conjuntos, tipos
enumerados, classes)
- Polimorfismo? (Haskell, ML, OCaml, Clean etc.)
- Corotinas? Threads?
- Etc.
A lista e' imensa.
--
-alex
http://www.ventonegro.org/
2009/8/3 Rodrigo Kumpera <kum...@gmail.com>:
>
> Se a gramática da tua linguagem for regular e admitir 1 parser LA(1), ou
> recursivo-descendente,
> é razoavelmente fácil implementá-la sem mesmo saber do que se trata LA(1).
>
Mas quando não se sabe o que é LL(1), basta por uma recursão à
esquerda para por tudo a perder. Claro que escolher uma linguagem
simples e pré-existente, como o Pascal, simplifica enormemente as
coisas.
--
-alex
http://www.ventonegro.org/
2009/8/3 Rodrigo Kumpera <kum...@gmail.com>:
>
>
> Bom, ai a questão toda é qual o objetivo do garoto. Ele só quer construir um
> compilador e interpretador
> ou o se trata do próximo Haskell?
>
Se não me engano o objetivo era criar a própria linguagem de
programação. Por isso que estou dando tanta ênfase à teoria.
Repetindo, se for um compilador Pascal, isso facilita enormemente as
coisas. Eu estou fazendo um para uma linguagem pré-existente, e mesmo
assim tenho que pensar bastante para avançar.
> Para o primeiro, provavelmente a gramática será um efeito colateral do
> compilador então saber a teoria
> continua não sendo tão importante. Assim como usar ferramentas anacrônicas
> como yacc.
>
> Para o segundo, provavelmente o protótipo seria construído usando S-exp ou
> M-exp e somente quando
> o modelo fosse adequado iria se preocupar com a surface sintax. Ou seja,
> ironicamente, também pode
> ser considerado irrelevante. :P
>
Exatamente o que eu já disse em um email anterior: A sintaxe é o
que menos importa.
--
-alex
http://www.ventonegro.org/
On 8/4/09, Alex Sandro Garzao <alexg...@gmail.com> wrote:
>
> Oi,
>
Putz, existem mais "Alex Sandro"s por ai' :)
--
-alex
http://www.ventonegro.org/
Besteira, escrever um compilador de pascal é razoavelmente, precisa saber muito pouca teoria.
Escrever um interpretador bobo de scheme é bem fácil, rola fazer em uma tarde se vc não ligar
para gerenciamento de memória.
Posso estar enganado, mas a Boo é feita por um brasileiro tmb?
2009/8/4 Rodrigo Kumpera <kum...@gmail.com>:
> Um compilador de scheme escrito em C++. Dada a facilidade com
> que é escrever um que não suporte let-rec, é uma boa pedida.
> Porém é bom saber scheme primeiro.
>
A semântica do LET-REC pode ser implementada com SET! e LET[1].
Claro que não vai ser nada eficiente, mas funciona.
[1] - http://www.cs.indiana.edu/~dyb/pubs/fixing-letrec.pdf
--
-alex
http://www.ventonegro.org/