UNIVERSIDADE FEDERAL DE
CAMPINA GRANDE
CENTRO DE CIÊNCIAS E
TECNOLOGIA
DEPARTAMENTO DE SISTEMAS E
COMPUTAÇÃO
INTRODUÇÃO À CIÊNCIA DA
COMPUTAÇÃO
Alguns cientistas apresentam como alternativas para a programação de aplicações científicas, as linguagens C e C++. A principal razão para a comunidade científica voltar sua atenção para estas linguagens era a terrível desatualização da linguagem Fortran 77. Porém, sem considerar o legado de programação em aplicações científicas existentes em Fortran, veremos a seguir uma série de razões para a escolha de Fortran 90, como linguagem para utilização em computação científica.
Fortran 90 foi projetado para gerar códigos executáveis que são altamente otimizados e assim executam extremamente rápido.
Apontadores em Fortran 90 foram projetados para ter a funcionalidade dos apontadores das outras linguagens, porém com restrições que eliminam resultados indesejáveis tais como a definição de sinônimos (aliases - nomes diferentes para a mesma entidade).
Contudo, da perspectiva de programação, um ponto ainda mais importante é que Fortran 90 possui maneiras mais naturais de expressar funcionalidades que outras linguagens que requerem apontadores. Por isso, Fortran 90 é uma linguagem mais natural para programar e o tempo requerido para depurar códigos é uma fração do tempo requerido pelas outras linguagens.
O tempo requerido para aprender Fortran 90 é muito menor que o tempo requerido para as outras linguagens.
Fortran 90 tem outra maior vantagem, a computação científica moderna e a computação em geral, apontam para o uso de computadores paralelos. Fortran 90 é a única linguagem que não implementa o modelo de memória linear e apresenta suporte padronizado para processamento paralelo. Este suporte inclui a sintaxe para manipulação de vetor (array) e muitos outros recursos intrínsecos para redução de operações tais como soma de vetores em operação com matrizes. Com o uso de sobrecarga de operadores e polimorfismo do Fortran 90, pode-se significativamente estender o número de operações que evitam qualquer confiança no modelo linear de memória. O fato de Fortran 90 ter abandonado o modelo de memória linear é a maior razão para ter se tornado a base para outras linguagens paralelas tais como Vienna Fortran, Fortran D, CRAFT, e High Performance Fortran.
Os cientistas de hoje precisam aprender mais do que uma linguagem ou um modelo de computação. Muito embora, mais importante do que aprender outra linguagem é aprender como programar MATLAB e um sistema algébrico de computador como Maple ou Macsyma.
Fortran 90 é a melhor linguagem para programação científica e é mais fácil de usar que as outras linguagens alternativas. Fortran 90 é também muito mais provável de ser a linguagem que os estudantes usarão em seus trabalhos na graduação e é atualmente o caminho mais promissor para o desenvolvimento de programas para computadores paralelos.
Por todas estas razões acima colocadas, Fortran 90 foi a linguagem escolhida para ser ensinada na disciplina Introdução à Ciência da Computação do Centro de Ciências e Tecnologia da Universidade Federal de Campina Grande a partir do segundo semestre do ano de 2001.
Fortran, que foi inicialmente
denominado de IBM Mathematical FORmula TRANslation System mas foi em
seguida abreviado para FORmula TRANslation, é a mais antiga das
linguagens de “alto-nível”, tendo sido desenvolvida por um grupo na IBM durante
a década de
A definição do padrão de Fortran foi atualizada no final dos anos 70 e um novo padrão, ANSI X3.9-1978, foi publicado pela American National Standards Institute (ANSI). Este padrão foi posteriormente adotado (em 1980) pela International Standards Organisation (ISO) como um Padrão Internacional (IS 1539 : 1980). A linguagem ficou comumente conhecida como Fortran 77 (desde que o esboço final foi realmente completado em 1977) e então foi a versão da linguagem de uso mais difundido. Compiladores Fortran, que usualmente suportam um pequeno número de extensões, com o passar do tempo, tornaram-se muito eficientes. A tecnologia que foi desenvolvida durante a implementação destes compiladores não foi desperdiçada e pode ainda ser aplicada aos programas Fortran 90.
A reverenciada natureza do Fortran e o caráter bastante conservador da revisão do padrão de 1977 deixaram o Fortran 77 com um número de facilidades desatualizadas que vieram a ser deficiências ou mesmo infelicidades. Muitas características desejáveis não estavam disponíveis, por exemplo, em Fortran 77 é muito difícil representar estruturas de dados sucintamente e a falta de alocação dinâmica de memória significa que todos os vetores tinham de ter tamanho fixo que não podia ser excedido; estava claro desde os primeiros momentos que uma nova e mais moderna linguagem precisava ser desenvolvida. Nos anos 80, os trabalhos sobre uma nova linguagem conhecida como “Fortran 8x” foram iniciados (esperava-se que ‘x’ viesse a ser 8, para manter o padrão dos nomes anteriores do Fortran.). O trabalho levou 12 anos, parcialmente porque o desejo de manter o Fortran 77 como um subconjunto estrito e também para certificar-se de sua eficiência (uma das vantagens de uma linguagem simples) não tinha sido comprometida. Linguagens com Pascal, ADA e Algol são ótimas para usar, mas não se equiparam a Fortran em eficiência.
Fortran 90 foi o maior desenvolvimento da linguagem, mas apesar disso, incluiu todo o Fortran 77 como um subconjunto estrito e assim, qualquer programa padrão Fortran 77 continuava a ser um programa Fortran 90 válido. A principal razão para isso, resulta da vasta quantidade de programas Fortran 77 que populavam as instalações científicas em todo o mundo. Muitos homens-ano tinham sido empregados na escrita desses programas que depois de muitos anos de uso, e testes de campo, eram muito confiáveis. A maior parte do código das aplicações científicas existentes era escrito em Fortran 77, mas existia sem dúvida muitas linhas escritas também em Fortran 66.
Em acréscimo às construções do velho Fortran 77, Fortran 90 permite ao programador expressar-se de uma maneira que é mais de acordo com um ambiente de computação moderno e substituir muitos dos mecanismos obsoletos que eram apropriados em Fortran 77.
Como o padrão Fortran 90 é muito grande e complexo, existe inevitavelmente um pequeno número de ambigüidades, conflitos e áreas obscuras. Freqüentemente, estas anomalias só vêm à luz durante o desenvolvimento dos compiladores e nesta fase foram identificadas um bom número destas anomalias. Um novo padrão, o Fortran 95, veio preencher estas faltas e estender a linguagem em áreas apropriadas. Nos últimos anos, foram desenvolvidas linguagens baseadas no padrão Fortran 90 que são conhecidas como High Performance Fortran (HPF) – Fortran de Alta Performance. Estas linguagens contêm todo o Fortran 90 e também inclui outras extensões desejáveis. Fortran 95 inclui muitas dessas novas características dos HPFs. HPF é dirigida para programação de máquinas de memória distribuída e introduz “diretivas” (comentários estruturados Fortran 90) para dar sugestões de como os dados distribuídos (vetores) dentro de processadores heterogêneos (grids). Fortran 95 também adotou um pequeno número de comandos introduzidos pelos HPFs (atribuições paralelas e procedimentos livres de efeitos colaterais).
A linguagem Fortran 90
subconjunto K (F90/K) é uma seqüência de subconjuntos da linguagem
Fortran 90 (Formula Translation 90) chamados F90/l, F90/2, ...
F90/n, projetados para facilitar o ensino de programação com Fortran 90. Cada
subconjunto acrescenta mais características da linguagem possibilitando ao
estudante um aprendizado progressivo. Estudaremos a linguagem Fortran segundo o
esquema da figura abaixo. Já no capítulo
1, veremos o primeiro destes subconjuntos, o F90/l, que nos dará condições de
escrevermos um pequeno programa Fortran. Esta proposta de abordagem não é nossa
nem é nova foi feita a primeira vez por Holt e Hume para o ensino de
programação estruturada utilizando SP/K - um subconjunto da linguagem PL/1 da
IBM.
Não tentaremos aqui ensinar todos os recursos da linguagem Fortran 90,
este texto visa dá suporte a uma disciplina introdutória de programação de
computadores com a linguagem Fortran 90. O F90/K está dividido em sete módulos,
onde cada módulo engloba novos conhecimentos mais os conhecimentos vistos nos
módulos anteriores. Os títulos dos sete módulos são listados abaixo.
F90/l - Programas que calculam e imprimem
F90/2 - Variáveis e atribuições
F90/3 - Fluxo de controle
F90/4 - Variáveis indexadas
F90/5 - Subprogramas
F90/6 - Formatação e controle de entrada e saída
F90/7 - Utilização de informações alfabéticas