quarta-feira, 14 de abril de 2004

Papinho nerd

Por que linguagens script são lentas? Porque são interpretadas. Mas elas não precisam ser interpretadas, podem ser compiladas e, mesmo assim, interativas. Presumamos uma interface por linha de caracteres (CLI). O compilador lê a linha de entrada até um ENTER. Procura por comandos na linha (tokens). Acha o ponto de entrada do código de máquina de cada token, numa lista de tokens+rotinas de máquina, e monta uma lista de CALLs. Quando chega no final da linha de entrada, monta um RETURN e dá um JUMP para o início da lista de CALLS (na verdade, verdadeiro código de máquina):

INICIO: CALL comando_1 CALL comando_2 CALL comando_3 RET

A linha de entrada compilada então roda em velocidade de máquina, e quando encontra o RET volta para a linha de entrada para ler mais comandos. Pronto. Assim eram o GraForth e o TransForth do Apple ][, as mais bonitas peças de software que eu já vi, criação da cabeça genial do matemático Paul Lutus. Mas o modelo lógico é Forth, criação da cabeça genial de Chuck Moore.

Nenhum comentário: