No início da década de 1950, a maioria dos cientistas programava em linguagem de máquina ou assembly. Uma fórmula matemática tinha de ser decomposta em instruções específicas de um computador, com gestão explícita de registos e endereços. O cálculo era rápido depois de o programa estar pronto, mas a preparação podia demorar semanas.
A equipa da IBM liderada por John Backus propôs uma rutura: escrever as fórmulas numa notação mais próxima da matemática e deixar um programa traduzi-las. FORTRAN, abreviação de Formula Translation, só teve êxito porque o seu compilador produzia código suficientemente eficiente para competir com especialistas em assembly.
O custo escondido dos primeiros computadores
O tempo de máquina era caro, mas o tempo dos programadores também. À medida que os computadores aceleravam, a preparação dos programas representava uma parte crescente do custo de um cálculo.
Backus começou por trabalhar no Speedcoding para o IBM 701. O sistema oferecia operações práticas, incluindo aritmética de vírgula flutuante, mas interpretava as instruções e reduzia fortemente a velocidade de execução. Mostrou que uma notação mais acessível era útil, confirmando ao mesmo tempo que os cientistas não aceitariam uma perda importante de desempenho.
Em 1953, Backus propôs um sistema de tradução para o IBM 704. A máquina dispunha de aritmética de vírgula flutuante por hardware e registos de índice, mas explorá-los de forma eficiente exigia uma organização complexa do código.
Uma equipa, uma linguagem e um compilador
A IBM reuniu uma equipa com competências complementares. Harlan Herrick, Irving Ziller, Peter Sheridan, Roy Nutt, Robert Nelson, Lois Haibt e outros contribuíram para a sintaxe, análise, otimização e testes.
A linguagem oferecia expressões aritméticas, ciclos e desvios adequados ao cálculo numérico. A forma inicial ainda refletia o hardware e os cartões perfurados: colunas reservadas, etiquetas numéricas e a instrução GO TO.
A inovação decisiva estava no compilador. Este analisava dependências entre cálculos, organizava a utilização dos registos e procurava reduzir operações repetidas. O objetivo não era apenas produzir um programa correto, mas um programa cuja velocidade não desse vontade de regressar ao assembly.
Entregue em 1957, o compilador superou as expectativas de muitos utilizadores. O tempo de programação diminuiu drasticamente e FORTRAN difundiu-se juntamente com os computadores IBM.
Porque a otimização era uma condição de adoção
Uma linguagem de alto nível cria distância entre aquilo que o programador escreve e aquilo que o processador executa. Hoje essa tradução parece normal; em 1957, confiar decisões de otimização a um programa era uma aposta.
FORTRAN demonstrou que um compilador podia realizar parte do trabalho mecânico melhor e de forma mais regular do que uma pessoa, sobretudo em programas grandes. Este sucesso alterou a economia do software: o computador deixou de servir apenas para executar o cálculo final e passou também a ajudar a fabricar o programa.
A produtividade não eliminou a necessidade de compreender os métodos numéricos. Uma fórmula instável ou um modelo incorreto continuam errados, qualquer que seja a qualidade do compilador. FORTRAN separou melhor a expressão científica dos detalhes do processador; não substituiu o conhecimento do domínio.
Dos dialetos à normalização
O sucesso produziu rapidamente várias versões. FORTRAN II acrescentou, entre outras coisas, a compilação separada de subprogramas. FORTRAN IV clarificou a linguagem e difundiu-se amplamente, enquanto os fabricantes também propunham extensões próprias.
Esta fragmentação ameaçava a portabilidade. Uma norma norte-americana surgiu em 1966 e revisões posteriores estruturaram a evolução da linguagem. FORTRAN 77 generalizou várias práticas; Fortran 90 introduziu sintaxe livre, arrays mais expressivos, módulos e ferramentas de programação estruturada.
A grafia oficial passou de FORTRAN para Fortran durante esta modernização, sem criar uma nova linguagem. Versões posteriores acrescentaram programação orientada a objetos, concorrência e melhor interoperabilidade com C.
A compatibilidade continuou a ser um objetivo importante. Modelos científicos validados durante décadas representam conhecimento caro de reconstruir. Fazê-los evoluir progressivamente é muitas vezes mais seguro do que reescrevê-los por completo.
Uma linguagem concebida para arrays
A computação científica manipula frequentemente vetores, matrizes e grelhas. Fortran permite exprimir diretamente operações sobre arrays inteiros, fornecendo ao compilador informações úteis para vetorizar ou paralelizar o cálculo.
O seu modelo também facilita algumas análises de alias: o compilador consegue determinar com maior frequência se dois nomes designam a mesma zona de memória. Esse conhecimento permite reorganizar operações sem alterar o resultado.
Estas propriedades explicam que Fortran continue competitivo na simulação climática, dinâmica de fluidos, física e outras áreas da computação de alto desempenho. A sua longevidade não resulta apenas de código antigo, mas de uma especialização continuamente mantida.
FORTRAN, COBOL e o alargamento da programação
FORTRAN e o trabalho de Grace Hopper respondiam ao mesmo obstáculo: o código de máquina limitava o número de pessoas capazes de transformar um problema em software.
Os seus domínios iniciais eram diferentes. FORTRAN privilegiava fórmulas e desempenho numérico. FLOW-MATIC e depois COBOL privilegiavam ficheiros, registos e o vocabulário das organizações. Em conjunto, estes projetos mostraram que uma linguagem podia ser adaptada a uma categoria de problemas em vez de a uma máquina específica.
ALGOL, Lisp, Pascal e C continuaram esta separação entre intenção e hardware com outras prioridades: descrição de algoritmos, cálculo simbólico, ensino estruturado ou programação de sistemas.
Porque Fortran continua importante
Fortran mostra que uma linguagem não precisa de abandonar o seu passado para continuar moderna. Pode preservar programas comprovados enquanto acrescenta abstrações, normas e ferramentas adaptadas a novas máquinas.
A sua contribuição histórica mais ampla foi tornar credível a compilação com otimização. Hoje os programadores usam linguagens muito mais abstratas porque os compiladores aprenderam a transformar intenções em código eficiente. FORTRAN forneceu uma das primeiras demonstrações decisivas dessa possibilidade.
Cronologia
- 1953: John Backus propõe à IBM um sistema de tradução de fórmulas.
- 1954: é formada a equipa FORTRAN para o IBM 704.
- 1957: é entregue o primeiro compilador FORTRAN.
- 1958: FORTRAN II facilita o uso de subprogramas compilados separadamente.
- 1962: FORTRAN IV racionaliza a linguagem.
- 1966: é publicada a primeira norma norte-americana.
- 1978: FORTRAN 77 é normalizado.
- 1991: é publicado Fortran 90 e adotada a grafia modernizada.
- 2003: Fortran 2003 acrescenta, entre outros, mecanismos orientados a objetos.
- Hoje: Fortran continua a ser utilizado na computação científica e de alto desempenho.
Perguntas frequentes
John Backus criou FORTRAN sozinho?
Não. Propôs o projeto e liderou uma equipa da IBM composta por muitos especialistas. A linguagem e, sobretudo, o compilador foram realizações coletivas.
Porque era excecional o primeiro compilador?
Tinha de otimizar suficientemente bem para convencer cientistas habituados a controlar cada instrução. As suas técnicas estabeleceram a credibilidade das linguagens de alto nível para computação de alto desempenho.
FORTRAN e Fortran designam a mesma linguagem?
Sim. Fortran tornou-se a grafia oficial nas versões modernas. Assinala uma evolução importante sem romper a linhagem histórica.
Porque se conserva código Fortran antigo?
Contém frequentemente modelos numéricos testados e validados durante décadas. Uma reescrita pode introduzir erros científicos difíceis de detetar.
Fortran está limitado a computadores antigos?
Não. Compiladores modernos destinam-se a processadores atuais e supercomputadores, e a linguagem inclui módulos, arrays expressivos, objetos e ferramentas de concorrência.
Qual é a principal diferença entre FORTRAN e COBOL?
FORTRAN foi inicialmente concebido para cálculos científicos; COBOL para processamento de dados empresariais. Ambos procuraram libertar os programas do código de máquina.