Programação Interna. O Começo da Moleza (Software)

Autor: Arno Rodrigo Muller - Analista de Informática da CELEPAR - DIATP
Dando continuidade às histórias antigas do processamento de dados, quero contar uma do tempo em que os programas de computador eram considerados hardware e não software.

Quando eu conheci o primeiro computador eletrônico em 1966 a engenhoca era movida a cartões perfurados. Chamava-se UNIVAC 1004. Não confundam com o ENIAC o qual era um pouco mais antigo e usava válvulas.

Tinham impressora, leitora de cartões, leitora de fita de papel perfurado, perfuradora de cartões e fita magnética. Naquela época não existiam discos magnéticos. A memória deste computador, ao qual me refiro, tinha 1024 bytes. Na linguagem atual dir-se-ia 1K.

Como todos sabem, nenhum computador é nada sem um bom programa.

O programa era montado em painéis com fios de ligação entre circuitos. Os painéis eram tabuleiros perfurados onde se plugavam os fios, especificando a operação e as coordenadas de memória de cada um dos operandos envolvidos no processo. Cada operação era construída com fios.

Toda a lógica do programa era colocada nestes painéis.

Como estes painéis eram muito caros e o número de painéis era sempre inferior às necessidades, não era raro um mesmo painel ter 8 a 10 programas montados uns sobre os outros.

A pilha de fios dava a impressão de um bandeijão de macarrão cheio acima da boca.

O lugar onde se inseria o painel tinha uma porta que muitas vezes não podia ser fechada.

Quando o programa estava fora da máquina trocava-se o painel.

Num painel com múltiplos programas a seleção de qual deveria ser executado era feita por 4 teclas que o operador acionava na frente da máquina.

Em geral os programas exigiam parâmetros para execução, escritos em cartões perfurados. Datas, período, intervalos de números, aquelas coisas que até hoje se usa. Os cartões de parâmetros tinham que ser identificados. Esta identificação, muitas vezes, era usada para selecionar programas ou opções dentro do programa. Um sistema de relés permitia fazer desvios elétricos estabelecendo programa ou opções de execução.

Com isso, os bytes na memória definiam o processo. Esta frase deu início ao que se convencionou, na época, chamar de programação interna.

Programação interna são pequenas palavras codificadas que permitem armar os circuitos eletrônicos estabelecendo a operação a ser executada e os operandos envolvidos no processo. Estas palavras constituem o vocabulário de uma linguagem a qual denominaram a "Linguagem de Máquina".

Hoje em dia não se fala mais em programação interna porque não existe programação externa. A programação compartilha a memória juntamente com os dados. Diz-se apenas "programação".

Para entrar na era da programação interna a UNIVAC alterou o computador UNIVAC 1004 e denominou esta nova máquina de UNIVAC 1005.

Foram acrescentados 3K de memória, totalizando 4K. Não confundir com megabytes. Eram K mesmo, ou seja 4096 bytes no total. Esta ampliação foi necessária porque os programas agora ficavam guardados na memória junto com os dados.

Foi feito um programa de painel capaz de analisar cada instrução, armar Flip-Flops (que substituiram os relés), executar a instrução, determinar o endereço da próxima instrução em função do tamanho da instrução executada e repetir este ciclo novamente.

Este era o único painel que a máquina possuía.

Os programas eram escritos em linguagem de máquina e perfurados em cartões. No início de cada tarefa o programa era lido, guardado na memória e era então, executado.

A linguagem de máquina era obtida por meio de um compilador que lia cartões em linguagem fonte e fazia esta tradução.

Este compilador eu nunca consegui usar.

Quando a primeira máquina chegou à Companhia de Energia Elétrica do Rio Grande do Sul, o compilador não tinha ficado pronto. Surgiu um impasse. Como construir um compilador sem ter um compilador. Isto é mais ou menos como a história do ovo e da galinha.

Portanto, a máquina ficou mofando meses à espera do compilador.

Durante este tempo eu aprendi a escrever o fonte do programa, a traduzí-lo para linguagem de máquina e perfurá-lo de tal modo que pudesse ser colocado na memória e executado.

Como a máquina estava jogada às traças, a chefia não de opôs a que eu a usasse. Comecei fazendo pequenos programas de listagem de contas de luz. Depois, fiz um pequeno programa de reajuste de salários. Depois, fiz utilitários para ajuste de leitora de cartões, impressora e perfuradora, os quais eram usados pelos técnicos da UNIVAC. E passei a fazer um programa após o outro, direto em linguagem de máquina sem passar pelo programa fonte.

Certa vez, a UNIVAC mandou seus representantes para negociar novos prazos para por a máquina em funcionamento. Sim, porque naquela época isto também acontecia.

Ficaram atônitos quando a viram funcionando. Examinaram-na para saber se não tinha alguma sacanagem e viram que, realmente, estava funcionando normalmente.

Não conseguiam compreender como fazíamos programas em linguagem de máquina, sem ter um compilador.

Comparando com as dificuldades para montar os programas de painel com fios, fazer programas em linguagem, de máquina perfurada em cartões, era uma grande satisfação e, sem dúvida, muito soft.

Meses depois de ter-me ido embora daquela empresa o compilador chegou. Diga-se de passagem a máquina estava obsoleta.

As máquinas evoluíram e hoje não é mais possível fazer o que se fazia no passado. Imagine programas com menos de 4096 bytes.

Não é hilário?