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:
- 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.
- O programador solicita, através de comandos
introduzidos no mesmo computador, que o código
seja compilado.
- 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:
- Programador insere código-fonte no computador.
- Programador executa script CMULAN
- O programa biff anuncia que há e-mail na caixa de
entrada do programador destino.
- 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.
- Programador-destino envia programa compilado ou mensagem
de erro, dependendo dos resultados.
- 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...