Pergunta

Eu estou começando um novo projeto em uma língua que eu sou menos familiarizados com (FORTRAN) e estou em 'descoberta' de fase.Normalmente, ler e descobrir o código é uma tarefa bastante simples, no entanto, este código é bastante grande e não tão estruturados.Existem métodos/dicas/truques/ferramentas para mapeamento de 50 mil linhas de bastante densa código?

Foi útil?

Solução

É fortran IV (improvável), 77 ou 90/95? O idioma mudou muito com essas revisões. Alguns dos gotos de que a marca de alto desempenho listados eram comuns no Fortran IV, mas incomum em 77, enquanto outros ainda eram comuns em 77. A sugestão de verificar o código com avisos máximos do compilador é excelente-até usam dois compiladores.

Comeceria diagramando a estrutura da sub-rotina e obteve uma visão de alto nível do que eles fazem. Em seguida, obtenha uma compreensão mais profunda das áreas que precisam ser alteradas.

Existem ferramentas para analisar e até melhorar o código fortran, por exemplo, http://www.polyhedron.com/pf-plusfort0html ou http://www.crescentbaysoftware.com/vast_77to90.html.

Outras dicas

Quando codifiquei fortran (f77) trinta (caramba!) anos atrás, tínhamos instalações limitadas para fluir automaticamente uma base de código desconhecida. Era feia e limitada ao imóvel que um leito da plotter poderia fornecer. Como @simon menciona, você pode (e poderia Naquela época, com algumas versões) também usam um depurador.

Agora, a exploração interativa é mais fácil. Além disso, você pode experimentar o IDES. Eu não tentei pessoalmente, pois fortran não é mais minha linguagem de desenvolvimento principal, mas Photran é um plug-in eclipse para o Fortran e parece estar em desenvolvimento ativo (o último lançamento foi este mês).

O depurador é seu amigo - se você tiver um para Fortran.

Antes de ir muito mais gostaria de se familiarizar com a sintaxe básica da linguagem, além de qualquer manias como pressupostos sobre tipos de variáveis a partir de seus nomes e posições de declarações, etc.Caso você não receba o material em seguida, é provável que você a ficar muito perdido, mesmo com um depurador.

Lembre-se também que a estrutura é, às vezes, dependentes do idioma.O código que você está olhando podem ser mal estruturado para os idiomas que estão acostumados, mas pode ser muito bem estruturado para Fortran, que tem seu próprio conjunto de peculiaridades.Eu acho que estou apenas dizendo ter uma mente aberta para começar, caso contrário você vai estar carregando todo o desnecessários predisposição que o código que você está olhando é ruim.Pode ser, mas isso pode ser apenas algo que você não está acostumado.

Melhor da sorte.Eu gostava Fortran quando eu programado para viver cerca de 20 anos atrás, e ele ainda é o idioma de escolha para alguns aplicativos, pois de cálculo de velocidades em algumas plataformas.Ainda muito disso na academia.

Eu sempre acho o ponto de partida da execução ou onde outro código (em que não estou trabalhando) chama o código que estou examinando. Então eu apenas começo a lê -lo a partir daí, seguindo as chamadas de método conforme necessário para descobrir o que está acontecendo.

Ter coração.Um dos Fortran virtudes é que é muito simples.A menos que você encontrar um código que foi programado para tirar proveito de 'inteligente' truques.Eu sugiro que a primeira coisa a fazer é executar o programa através de um compilador com sintaxe de verificação e conformidade com os padrões, virou-se para o max.De idade (pré-Fortran 90) FORTRAN é notório para os truques inteligentes que as pessoas usavam para dar a volta a linguagem limitações.Algumas dicas para programadores mais familiarizado com as línguas modernas:

-- blocos comuns;e outros mecanismos para o estado global;especialmente ruim são blocos comuns que são usados para mudar o nome e a redefinição de variáveis;

-- equivalências (horrível, mas você pode tropeçar neles);

-- formato fixo de origem formulário;

- o uso de CONTINUAR a instrução, e a prática de ter múltiplos loops, terminando no mesmo CONTINUAR instrução;

-- declaração implícita de variáveis (para classificar estes para fora, insira a linha IMPLÍCITO NENHUM imediatamente após o PROGRAMA, MÓDULO, sub-ROTINA ou FUNÇÃO de instrução em todos os lugares que eles ocorrem);

-- vários pontos de entrada para sub-programas;

-- e alguns outros que eu sou tão familiarizado com o eu não pode recuperá-los.

Se estes não significam nada para você, eles logo vão.E finalmente, você pode querer olhar para Entender para Fortran.Custa, mas é muito útil.

Matéria

Marca

Você está executando no Linux ou OpenSolaris? Nesse caso, o Sun Studio Fortran Compiler é um dos melhores. E o Sun Studio IDE entende Fortran e vem com um depurador. http://developers.sun.com/sunstudio

Estou com sono, então vou ficar curto :)

Comece com as instruções do programa Grepping Out (ou qualquer ferramenta que você usar), declarações de sub -rotina, instruções de função e similares. Talvez módulos e tal se F90 for usado. Desenhe um tipo de diagrama com base naquilo, no qual você verá o que chama (o que usa o que sub -rotinas, funções e similares).

Depois de ter uma visão geral da situação, acesse dados. O Fortran exige que tudo seja declarado no início do programa/sub -rotina ... para que as primeiras linhas devem lhe dar declarações. Depois de colocar aqueles no diagrama que acabou de fazer, você deve ter uma situação muito clara até aquele momento.

Agora, o próximo passo depende realmente do que você deseja fazer com ele.

@ldigas:"Fortran exige tudo para ser declaradas no início do programa/sub-rotina ..."

Não, a menos que IMPLICIT NONE aparece no início de uma rotina Fortran usa digitação implícita.Assim, nomes de variáveis que começam com Um-H e O-Z são digitados REAL, e em são números INTEIROS.(O que faz de DEUS uma variável REAL, e INT, felizmente, um número INTEIRO, implicitamente). Lembre-se, Fortran (na verdade, de volta, em seguida, foi FORTRAN) foi projetado por cientistas e matemáticos, para os quais i, j, k, l, m e n, foram SEMPRE números inteiros.

Com IMPLICIT NONE, você é forçado a escreva explicitamente todas as variáveis, como você faria em C, C++ ou Java.Então, você poderia ter um número INTEIRO de DEUS, e REAL INT.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top