Pré-História das Linguagens de Programação
Por Gleyser Guimarães
(gleyser.bonfim.guimaraes@ccc.ufcg.edu.br)
Nas próximas edições, a coluna História da Computação abordará a história das linguagens de programação, que são métodos padronizados cuja finalidade é fornecer instruções ao computador. Apesar de terem surgido somente na década de 50, possuem gênese nos antigos algoritmos escritos que se conhece, que são os da antiga Mesopotâmia onde não havia abstração de procedimentos e os algoritmos podiam ser escritos na linguagem natural, poética e até musical.

Os primeiros algoritmos produzidos e encontrados, que se tem conhecimento, são os algoritmos da Babilônia que eram escritos na linguagem natural e descreviam procedimentos da vida cotidiana.No exemplo a seguir, podemos observar como eram os primeiros algoritmos: Para calcular o volume de uma cisterna, seu raio é 2,0 e sua altura é 7,0, então o volume é 3,1 vezes 2,0 vezes 2,0 vezes 7,0. Como podemos observar não há o uso de variáveis e os números servem como exemplos. O cálculo é correto, o volume de uma cisterna pode ser encontrado através da fórmula: Volume = Pi x Raio x Raio x Altura, todavia naquela época, em cada caso, havia um modo de calcular específico, já que não havia o uso de variáveis.

Na civilização grega, vários algoritmos não triviais foram estudados, como por exemplo ,o de Euclides, surgido por volta de 300 a.C, que calcula o máximo divisor comum (MDC) entre dois números inteiros diferentes de zero sem o uso de qualquer fatoração. O algoritmo de Euclides é baseado no princípio de que o MDC não muda se o menor número for subtraído do maior. Por exemplo, 21 é o MDC de 252 e 105 (252 = 21 × 12; 105 = 21 × 5), já que 252 - 105 = 147, o MDC de 147 e 105 é também 21.

Animação do algoritmo de Euclides para os inteiros 252 e 105. As barras representam múltiplos de 21, o máximo divisor comum (MDC). Em cada passo, o número menor é subtraído do maior, até um número ser reduzido a zero. O número restante é o MDC.

Ainda na gênese das linguagens de programação, temos a contribuição do professor e poeta francês Alexander de Villa Dei que, dentre os trabalhos desenvolvidos, lançou o Carmen de Algorismo — the Poem about Arithmetic, que são algoritmos em verso. Até então, não havia um método formal para descrever algoritmos.

A notação matemática começou a evoluir efetivamente a partir dos séculos XIII e XIV e notações para relações funcionais tiveram um bom desenvolvimento. Foi a partir de então que a linguagem começou a receber referências matemáticas, trazendo-a para mais perto da atualidade. Na Computação, Babbage e Lady Lovelace elaboraram, dentre outros, um programa para o cálculo dos números de Bernoulli. Era na verdade uma espécie de programa em linguagem de máquina, como nos primórdios dos computadores digitais da década de 1940.

A primeira linguagem primitiva para máquina foi desenvolvida por Alan M. Turing. Nessa linguagem, existiam comandos para ler, testar uma condição e escrever símbolos sobre uma fita.

Alan M. Turing.

Nos primórdios da computação propriamente dita, os programas eram escritos em código de máquina e colocados diretamente no computador por meio de cabos e fios. Percebeu-se claramente que os programas em código de máquina eram extremamente difíceis de editar e modificar, e quase impossíveis de se compreender. A comunidade computacional entendeu que era necessário criar uma notação simbólica para tornar os programas mais fáceis de escrever. Nesta evolução, os formatos utilizados eram: LOAD X, ADD R1 R2, JUMPZ H. Ambos eram notações simbólicas que facilitavam a escrita, leitura e edição de algortimos em linguagem de máquina.

Os programas em código de máquina eram difíceis de compreender.

Sendo assim, após feito o programa, o programador o prepararia para ser executado, escrevendo manualmente as instruções no código de máquina. Este processo foi chamado de assembling. O programador ainda trabalhava com o conjunto de instrução da máquina, isto é, os algoritmos eram expressos por meio de instruções muito primitivas. Daí a denominação linguagens de baixo nível. A busca por linguagens que pudessem permitir que os algoritmos fossem expressos de forma análoga à ideia elaborada na mente do programador fez com que aparecessem os primeiros compiladores e começaram a surgir as chamadas linguagens de alto nível. Em 1942, foi criada a 1ª linguagem de programação de alto nível, a Plankalkul, criada pelo alemão Konrad Zuse.

Equipe liderada por John Backus desenvolvendo um código que facilitava a programação.

Em 1952, a IBM construía o computador 701 e em 1953 foi montada uma equipe liderada por John Backus para desenvolver um código automático que facilitasse a programação. O resultado foi o Speedcoding. Backus tornou-se uma das principais figuras na história da evolução das linguagens de programação, tendo um papel fundamental no desenvolvimento dos grandes compiladores que viriam a partir do ano de 1955 como o FORTRAN e o ALGOL, além do estabelecimento da moderna notação formal para a descrição sintática de linguagens de programação, denominada BNF, Backus Normal Form.

As linguagens de programação vem ao longo dos anos aperfeiçoando-se e tornaram-se a principal ferramenta dos programadores no fornecimento de instruções aos computadores. Devido a essa importância, que faz-se necessário o conhecimento das fontes idealizadoras dessas ferramentas. Nas próximas edições, continuaremos abordando as linguagens de programação, mais especificamente as primeiras linguagens desenvolvidas após o surgimento dos compiladores

Jornal PETNews - Edição: Jessika Renally - Revisão: Tiaraju Smaneoto e Joseana Fechine
Grupo PET Computação UFCG, 2012. All rights reserved.