A única revista feita por pessoas capazes de Integrar os Derivados do leite, desde que contínuos por partes   
Nerdando onde
ninguém nunca
nerdou antes...
Compilando Linguagens de Alto Nível no Uzix
Texto por Felipe Bergo

Expediente

Editor-chefe
GNU Emacs 20.3.1

Editor-assistente
vim 5.1

Homem-cadeira (chairman)
Felipe Bergo
[bergo at seul.org]

Lord Atari:
Cesar Cardoso

Fudebalização de pixels e pixelização de fudebas
Giovanni dos Reis Nunes

Consultoria sobre pinguins azuis
Ricardo Bittencourt

Patrono
Marco Antônio Simón Dal Poz


O uso de linguagens de alto nível para a autoria de programas de computador tornou-se uma prática comum e arraigada no maravilhoso mundo novo dos computadores digitais. O Uzix, na vanguarda dos sistemas operacionais para computadores digitais, não poderia ignorar esta tendência mundial.

No entanto, apenas copiar as soluções existentes, além de feio e bobo, daria a impressão que os os desenvolvedores Uzix não conseguem melhorar o procedimento de compilação já existente que os programadores se acostumaram a usar. Sem falar que rodar flex e bison em 30 KB de memória não é viável.

Os desenvolvedores do Uzix contrataram uma equipe de experientes consultores para delinear uma solução para a questão. NERD Magazine apresenta agora com exclusividade o resultado do empreendimento.

Análise dos Outros Sistemas
Após muitos estudos a consultoria conseguiu resumir o processo de compilação de programas em linguagens de alto nível, isto é, a tradução de código-fonte de alto-nível para código legível por máquina:

  1. O programador introduz código-fonte de alto nível na memória do computador utilizando um dispositivo de entrada como um teclado, leitor de cartões perfurados ou leitor de fita magnética.
  2. O programador solicita, através de comandos introduzidos no mesmo computador, que o código seja compilado.
  3. Sem que o programador precise se preocupar com os detalhes do processo de tradução, após um período finito de tempo (de comprimento proporcional à velocidade de processamento do computador), um arquivo com código de máquina pronto para execução é gerado, ou, no caso de erros, o computador fornece ao programador, por meio de um dispositivo de saída, mensagens com pistas sobre a localiza¸ão provável dos erros. Os consultores detectaram que alguns programas com CENTENAS de linhas de código já foram escritos, e achar o erro sem uma pista seria chato e desinteressante.

Dificuldades Inerentes ao Uzix
Os consultores notaram que os processos no Uzix podem ocupar no máximo 30 KB de RAM, e que compiladores automatizados precisam armazenar na memória tanto o código de máquina sendo gerado quanto tabelas referentes ao código de alto nível sendo compilado, simultaneamente. Portanto mesmo que seja possível gerar código de máquina dentro do limite 30 KB, o compilador automático falhará pois a soma do resultado da compilação com as tabelas excederão a quantidade de memória disponível.

A Solução
Como quem não tem cão caça com gato, o último a chegar é mulher do padre e o trabalho que mais demora para terminar é aquele que nunca começa, foi projetado um método de compilação de linguagens de alto nível para sistemas MSX/Uzix. O sistema CMULAN, Compilação Multi-Usuário de Linguagens de Alto Nível, se baseia em aplicativos Uzix já existentes para atingir um processo de compilação que atende às necessidades identificadas alguns parágrafos acima.

Notou-se que: com um mínimo de treinamento, documentação de referência e uma alimentação saudável e balanceada (100% cafeína), qualquer Ser Humano é capaz de converter código de alto nível em código de máquina. Note-se também que Uzix tem suporte a TCP/IP, PPP, um programa leitor de e-mail que permite que usuários Uzix (todos humanos) leiam e enviem e-mail para outros usuários através da Internet (após delicada investigação, os consultores conseguiram determinar que a Internet realmente existe, com confiança de 99.97%).

O CMULAN requer pelo menos dois programadores para funcionar. Primeiro, em uma URL fixa é armazenada uma lista de todos os programadores Uzix do mundo. Vamos supor que esta URL seja http://users.cmulan.org para efeito de exemplo.

O principal software do sistema CMULAN é um script que executa o seguinte algoritmo:

  • Obtenha lista de http://users.cmulan.org usando HTTP
  • Selecione um nome da lista aleatoriamente (exceto o nome do próprio programador).
  • Envie código fonte por email.

O procedimento de compilação torna-se extremamente simples e produtivo:

  1. Programador insere código-fonte no computador.
  2. Programador executa script CMULAN
  3. O programa biff anuncia que há e-mail na caixa de entrada do programador destino.
  4. Programador-destino compila o programa manualmente. Note que o autor do programa não precisa se preocupar com o processo de tradução, podendo continuar concentrado na abstração de alto nível do seu programa.
  5. Programador-destino envia programa compilado ou mensagem de erro, dependendo dos resultados.
  6. O programa biff anuncia quando a resposta chega, o programador obtém uma resposta da mesma forma que obteria de um compilador automático convencional.

Note que CMULAN tem várias vantagens sobre a compilação automática:

  • Em vez de interromper a compilação por um erro bobo de digitação (esqueceu um ponto-e-vírigula, por exemplo), o compilador sensciente remoto consertará tais pormenores, impedindo que estes atrasem o processo de compilação.
  • Mensagens de erro personalizadas. Em vez de receber a mesma mensagem Undefined variable 'foo' in bar.c:7. Every undefined symbol is reported only once toda vez, o que torna a relação programador-compilador fria e distante, o programador receberá mensagens mais humanas, como
    • Este programa é patético.
    • Continue tentanto, um dia você chega lá
    • 47 variáveis ? Fala sério!
    • Você chama isso de código ?!?
    • etc.
  • A necessidade de conexão à Internet gerará milhares de empregos em provedores de acesso. Vagabundos até então inúteis para a sociedade poderão ter um vida digna e honrada como atendentes de suporte da AOL.
  • É possível escrever código em qualquer linguagem que os outros programadores conheçam, e até mesmo misturar duas linguagens em um mesmo programa.
  • O maior tempo de espera entre o pedido de compilação e a resposta do sistema concederá ao programador preciosos momentos para filosofar sobre a vida, a sociedade e o Cosmos. Uma sociedade com programadores que compreendem a essência secreta do Universo é mais feliz e sorridente.
  • O código gerado é otimizado por uma rede neural.

O grupo de desenvolvimento do CMULAN deve ter o sistema pronto antes do Encontro de Usuários de MSX de Jaú, em Novembro de 2001.


Nerd Magazine On-Line não é séria. Não é para levar a sério.
Se você acreditar em algo então você é muito fudeba...

1