As linguagens de programação em alto nível fizeram o computador pessoal chegar ao que é hoje. Foi a vez de quem não era especialista na área de “processamento de dados”, como se dizia antigamente.
Eu pertenço a uma época em que computadores eram “coisa para gênios”. Na realidade, os primeiros computadores se destinavam a eliminar erros de cálculos feitos pelo dito ser humano. Historicamente, teria sido o matemático da era vitoriana Charles Babbage quem primeiro percebeu isso e se determinou a criar uma máquina para fazer cálculos sem errar o resultado.
A partir daí a palavra “computador” se refere então a uma máquina para fazer cálculos. O uso de computadores ficou por décadas a fio no domínio dos matemáticos, alguns dos quais se diziam preguiçosos para ficarem horas fazendo cálculo, podendo errar a qualquer momento.
A solução para “facilitar” o uso dessas máquinas foi a programação. Uma vez um programa armazenado em algum dispositivo, ele poderia ser usado toda vez que se deseja rodar as rotinas contidas nele.
Mas o empecilho a ser vencido sempre foi o uso da máquina para programar. A linguagem de máquina original é a programação de zeros e uns, que correspondem aos estados elétricos de “desligado” e “ligado”, respectivamente, na forma de instruções aos processadores. E ficou assim por um longo período de tempo, o que excluiria naturalmente todos aqueles que não foram alvo da formação nesta área de conhecimento.
Esta exclusão poderia trazer, no correr do tempo, a possibilidade da ausência de aplicações mais abrangentes derivadas do computador, ficando provavelmente restrito a uma parcela do meio acadêmico. E a única solução para resolver isso foi a modificação dos métodos de programação, saindo da linguagem de máquina e indo para instruções em palavras comumente usadas pelo programador.
Esta preocupação de disseminação das linguagens de programação começou cedo, com Konrad Zuze, inventor do computador moderno. Ele concebeu uma linguagem, chamada de Plankalkül, destinada aos engenheiros.
Nas décadas seguintes a concepção de linguagem de alto nível, isto é, aquela com comandos próximos ao nível do programador, se tornou uma obsessão de pessoas que queriam ver o aumento da aplicabilidade dos computadores e/ou o aumento do acesso ao uso da máquina por parte de terceiros.
O que possibilita usar uma linguagem com termos usados pelo usuário e não com códigos da máquina é a construção de um programa compilador. O compilador é um interpretador dos códigos contidos na linguagem de alto nível, que transforma estes códigos em linguagem de máquina. A sequência de operação é a seguinte:
Código fonte →→→→ | Compilador →→→→ | Linguagem de Máquina |
O programador, apesar de ter facilitado o acesso às instruções que ele precisa, é obrigado a usar os códigos fonte sem erro. Uma vez o código fonte escrito, dois erros são passíveis de acontecer:
1 – Erro de sintaxe: o programador digita errado o comando (por exemplo, Pront em vez de Print). Quando este erro ocorre o interpretador aponta a linha onde o erro ocorreu, que pode então ser corrigida.
2 – Erro de lógica: o algoritmo que permite a execução de uma tarefa não funciona da maneira como devia. Este tipo de erro pode às vezes tirar o sono do programador, ao tentar achar onde está o erro. Este tipo de erro é chamado vulgarmente de “bug” (no sentido de “chato”), e o processo de procura do erro de “debug”.
Quando tudo termina e o programa roda o código fonte corretamente, o compilador poderá transformar o arquivo fonte em outro executável, contendo as instruções em linguagem de máquina necessárias para fazer o programa rodar sem precisar do interpretador.
Dentre essas linguagens de alto nível, o Basic (Beginner’s All-Purpose Symbolic Instruction Code) foi quem garantiu grande receptividade entre usuários novatos, e por este motivo incluído nos primeiros microcomputadores colocados à venda, inclusive instalado em ROM, para uso imediato.
A introdução ao CP/M e ao Basic gravado em ROM
No início da explosão da microinformática, o Basic e o CP/M caminharam juntos, e aqui no Brasil foi não exceção, particularmente no ambiente acadêmico.
Eu já relatei em parte a minha própria experiência de vida com computadores de 8 bits e como ela foi importante para mim ao longo do meu trabalho de pesquisa.
Mas, a minha inicialização neste campo do conhecimento foi duríssima, bem como a de outros colegas da universidade. O Núcleo de Computação Eletrônica da UFRJ (NCE) lançou um curso de introdução à programação em Basic para os docentes, mas todos nós fomos obrigados a assimilar um sistema operacional de discos chamado de CP/M.
Nas primeiras aulas práticas era quase impossível a gente se lembrar dos comandos que se precisava saber para escrever uma só linha de programa. Eis aí alguns exemplos de comandos, com o uso da tecla <CONTROL>, contida nos teclados da época:
Comando | Efeito |
Control + E | Força o cursor para a próxima linha |
Control + H | Move o cursor para trás apagando o caractere da linha editada |
Control + P | Liga/desliga a saída para a impressora |
Control + X | Apaga a linha de comando e volta o cursor para o início da linha |
Muita gente não sabe, mas vários desses comandos da linha de edição do CP/M migraram para todos os sistemas operacionais modernos, com modificações intencionais. Abaixo, mostro alguns comandos comumente usados em ambiente Windows:
Comando | Efeito |
Control + A | Selecionar tudo |
Control + C | Copiar |
Control + V | Colar |
Control + X | Apagar |
Vencendo as barreiras da incipiência
Aquele primeiro curso do NCE assustou muitos professores. Logo na primeira aula teórica, junto com o anúncio de que haveria uma prova, várias colegas do Instituto de Nutrição, todas sentadas na minha frente, estavam estáticas. Uma delas me disse que não ia aprender aquilo nunca! E abandonaram o curso, junto com cerca de 30 outros professores de outras unidades, com idêntico sentimento.
Comigo a situação era a oposta, porque eu queria de fato tentar dominar aquele campo de conhecimento que se mostrava praticamente inexpugnável. No final da década anterior eu estava às voltas com o desenvolvimento da minha tese de mestrado, e inconformado com a prática de usar calculadoras científicas dentro do laboratório, para realizar testes complexos.
Todas aquelas calculadoras, com uma ou outra exceção, não permitiam conferir os dados digitados durante o processo de cálculo, o que tornava o processamento de dados inconfiável. Além disso, as calculadoras eram alimentadas a pilha. Se a carga acabasse durante a digitação, lá se ia pelo ralo abaixo todo o esforço ao fazer cálculos trabalhosos ou complexos.
A única solução seria a programação de um algoritmo que permitisse conferir os dados inseridos, calcular e imprimir o resultado. Foi assim que eu comecei, ainda super ignorante, a construir o meu primeiro programa, usando para tal uma máquina de mesa HP modelo 9810A, com cartucho de estatística. O programa, laboriosamente digitado em uma linguagem primitiva, era armazenado em um cartão magnético. E com o auxílio desta máquina eu analisei e imprimi todos os dados dos ensaios feitos no laboratório com total confiança.
Naquele ponto do tempo, a noção de computação de dados ainda era bastante desconhecida da comunidade acadêmica. Durante a minha defesa de tese, um dos examinadores, pesquisador com grande status na comunidade científica (foi depois diretor do Instituto Oswaldo Cruz), cujo nome eu por educação não vou declinar, me fez uma crítica pelo uso da calculadora de mesa programável da HP. Disse ele que aqueles cálculos poderiam ter sido feitos com uma simples calculadora de bolso. O meu chefe e orientador da tese havia me pedido para não contestar as críticas, inclusive porque ele me viu dando os primeiros passos em programação e gostou da iniciativa. Por causa disso, eu agradeci a crítica, como recomendado, e disse ao examinador que iria “revisar” os meus cálculos.
Este foi, aliás, o primeiro de vários maus exemplos que eu testemunhei no seio da comunidade acadêmica. E dá, em paralelo, uma visão do pavor tecnofóbico da academia em não conseguir assimilar conceitos de fora das respectivas áreas de atuação.
O curso que eu fiz no NCE me mostrou também este pavor, exceto que quem estava lá e se amedrontou foi porque viu aquele mundo de informações novas, que de amigáveis não tinham nada. Bastou ir ao laboratório e dar de cara com um teclado estranho, com teclas com siglas completamente desconhecidas como Control, Escape, etc. Aliás, a tecla Escape virou anedota na informática moderna, quando alguém se enrolava com alguma coisa e outra pessoa ao lado dizia “tecla Escape”…
A programação em Basic cristalizou a possibilidade de nós ignorantes aprendermos lógica e construção das rotinas e sub-rotinas que fazem parte de um programa. Abaixo, eu mostro dois pequenos trechos dos códigos de um programa extenso de estatística, que comecei a escrever por volta de 1989, e foi aperfeiçoado e traduzido algum tempo depois, doado aos colegas de laboratório em Cardiff:
N.B.: os códigos acima foram abertos com Notepad (Bloco de Notas) do Windows e não mostram a estrutura real da programação.
Se alguém me pedir para repetir isso, eu declinaria o pedido, porque o tempo apaga todo esse conhecimento e a maneira de fazer. Já na década de 1990 apareceram programas super poderosos em ambiente Windows, para fazer a mesma coisa, como, por exemplo, Sigma Stat ou Graphpad Prism, e muitos outros, dezena de vezes mais tranquilos de usar do que as ferramentas similares, como o infame pacote de estatística do SPSS, que atormentou a vida de quem usava DOS.
Ainda assim, e apesar de obsoleto, o meu pacote de estatística escrito em Basic ainda foi parar em disquete, no bolso de estudantes de mestrado no laboratório onde eu trabalhei durante a década de 1990 e início do século, por conta da análise das rotinas de curvas de calibração que eu havia incluído para o controle dos meus resultados obtidos nos equipamentos de medida espectrofotométrica. Alunos e alunas rodavam o programa no computador local, analisavam a curva de calibração e só então realizam os testes das amostras, evitando assim perdas e prejuízo de trabalho.
O Basic incluso na ROM dos computadores MSX era muito limitado, mas foi com ele que eu dei os primeiros passos para aprender certas rotinas. A Microsoft fez uma versão com muito mais recurso, chamada de GW-Basic, depois substituída pelo QBasic (ou Quick Basic) e pelo Visual Basic, que durou bastante tempo, destinado ao ambiente Windows.
O Basic foi, no devido tempo, ultrapassado por outras linguagens com mais recursos, como C, C++, e depois Java, etc. Mas, de qualquer forma, demonstrou por muito tempo, como usuários não formados na ciência da computação puderam alcançar o uso do computador, no trabalho ou em casa.
O computador pessoal
Dentre as grandes companhias desenvolvedoras de computadores de grande porte, a IBM, subsequente ao lançamento do Apple II, foi talvez quem melhor percebeu o potencial do computador como máquina universal para uso próprio, e batizou o seu computador de “Personal Computer” ou “PC”, daí a sigla de “IBM-PC”. A sua plataforma aberta atraiu um número maior de usuários do que os computadores Apple destinados, desde o início, a este segmento de mercado.
Os ingleses batizaram o espaço de trabalho com o computador dentro de casa como SOHO (Small Office Home Office), que eu uso até hoje.
Não há dúvida de que a evolução do uso do computador pessoal passou pela formulação de linguagens de alto nível. Se não fosse por elas, os programadores ainda estariam usando Assembly ou algo parecido.
Infelizmente, este progresso teve um preço alto: de tempos para cá a maioria dos usuários passou a confiar em programas prontos e não mais em programação, até chegar ao ponto em que a programação passou a ser trabalho de desenvolvedores exclusivamente. Eu noto que usuários de Linux insistem em programar comandos, mas em ambiente Windows ou Mac, o recurso de comandos existentes é usado somente nas horas de aperto, e ninguém que os usa precisa necessariamente ser um programador, mas sim um seguidor atento de uma receita de bolo.
Os sistemas operacionais com interface gráfica também ajudaram o usuário final a abandonar a tarefa de programar, o que é compreensível. Afinal, o computador é uma ferramenta das mais úteis e facilita as tarefas que dão liberdade ao usuário de fazer melhor aquilo que gostam mais, ao invés de precisar programar extensamente para realizar a mesma coisa.
A vida on-line tornou este processo muito mais eclético, por causa do tráfego intenso de dados. Bem verdade que existe um perigo em potencial da perda ou roubo de dados por este tráfego, mas não se concebe mais a vida apressada de todos nós sem este tipo de recurso. Outrolado_
. . . .
Ryzen: CPUs a caminho da computação de alta performance otimizada
Paulo Roberto Elias
Paulo Roberto Elias é professor e pesquisador em ciências da saúde, Mestre em Ciência (M.Sc.) pelo Departamento de Bioquímica, do Instituto de Química da UFRJ, e Ph.D. em Bioquímica, pela Cardiff University, no Reino Unido.