1

私はあまりなじみのない言語 (FORTRAN) で新しいプロジェクトを開始しており、「発見」段階にあります。通常、コードを読んで理解するのはかなり簡単な作業ですが、このコードはかなり大きく、構造化されていません。かなり密度の高いコードの 50,000 行をマッピングするための方法/ヒント/トリック/ツールはありますか?

4

8 に答える 8

3

それはFortranIV(ありそうもない)、77、または90/95ですか?これらの改訂により、言語は大きく変化しました。High-PerformanceMarkがリストした落とし穴のいくつかはFortranIVで一般的でしたが、77では一般的ではありませんでしたが、77ではまだ一般的でした。最大のコンパイラ警告でコードをチェックする提案は優れています。2つのコンパイラを使用することもできます。

まず、サブルーチンの構造を図解し、それらが何をするのかを高レベルで把握することから始めます。次に、変更が必要な領域をより深く理解します。

http://www.polyhedron.com/pf-plusfort0htmlhttp://www.crescentbaysoftware.com/vast_77to90.htmlなど、Fortranコードを分析し、さらには改善するためのツールがあります。

于 2009-12-21T16:32:04.883 に答える
2

デバッガーはあなたの友達です-Fortran用のデバッガーがあれば。

先に進む前に、言語の基本的な構文に加えて、名前や宣言の位置などからの変数型に関する仮定などのいくつかの可能性について理解しておきます。そのようなものを取得しないと、非常に迷子になる可能性があります。便利なデバッガーでも。

また、構造は言語に依存する場合があることも忘れないでください。あなたが見ているコードは、あなたが慣れ親しんでいる言語に対してはひどく構造化されているかもしれませんが、独自の特性のセットを持っているFortranに対しては非常によく構造化されているかもしれません。私が言っているのは、最初はオープンマインドであると言っていると思います。そうしないと、見ているコードが悪いという不必要な素因を持ち歩くことになります。それはそうかもしれませんが、それはあなたが慣れていないものかもしれません。

幸運を祈ります。約20年前にFortranをプログラミングしたときは、Fortranが好きでした。一部のプラットフォームでは計算速度が速いため、Fortranは依然として一部のアプリケーションで選択されている言語です。まだ学界ではかなりの数です。

于 2009-12-21T14:57:13.730 に答える
2

私が 30年前にFortran (F77) をコーディングしたとき、未知のコードベースを自動的にフローチャート化する機能は限られていました。それは醜く、プロッターベッドが提供できる不動産に制限されていました。@Simonが言及しているように、デバッガーも使用できます(一部のバージョンでは当時も可能でした)。

これで、インタラクティブな探索がより簡単になりました。さらに、IDE を試すこともできます。Fortran はもはや私の主要な開発言語ではなくなったため、個人的には試していませんが、Photranは Fortran 用の Eclipse プラグインであり、活発に開発されているようです (最後のリリースは今月でした)。

于 2009-12-21T15:10:50.327 に答える
1

@ldigas: 「Fortran では、プログラム/サブルーチンの開始時にすべてを宣言する必要があります ...」

いいえ、ルーチンの開始時に IMPLICIT NONE が表示されない限り、Fortran は暗黙の型付けを使用します。したがって、AH と OZ で始まる変数名は REAL と入力され、IN は INTEGER と入力されます。(これにより、GOD は REAL 変数になり、INT は暗黙のうちに INTEGER になります。) 覚えておいてください。Fortran (実際には当時は FORTRAN でした) は、i、j、k、l、m、およびn は常に整数でした。

IMPLICIT NONE を使用すると、C、C++、または Java の場合と同様に、すべての変数を明示的に入力する必要があります。したがって、INTEGER GOD と REAL INT を持つことができます。

于 2010-01-20T08:39:27.907 に答える
1

Linux または OpenSolaris で実行していますか? そうであれば、Sun Studio Fortran コンパイラは最高のコンパイラの 1 つです。また、Sun Studio IDE は Fortran を理解し、デバッガーが付属しています。http://developers.sun.com/sunstudio

于 2010-01-06T04:17:05.560 に答える
1

眠いので手短に。:)

まず、プログラム ステートメント、サブルーチン ステートメント、関数ステートメントなどを検索 (または使用するツール) します。f90が使用されている場合は、おそらくモジュールなど。それに基づいて一種の図を描くと、何が何を呼び出すか (何がどのサブルーチンや関数を使用するかなど) がわかります。

状況の全体像を把握したら、データに取り掛かります。Fortran では、プログラム/サブルーチンの開始時にすべてを宣言する必要があるため、最初の行で宣言を行う必要があります。作成したばかりの図にそれらを入れた後、その時までに非常に明確な状況が得られるはずです.

さて、次のステップは、それで何をしたいかによって大きく異なります。

于 2010-01-06T04:31:40.707 に答える
1

私は常に、実行の開始点、または他のコード (私が取り組んでいないコード) が調査中のコードを呼び出す場所を見つけます。次に、何が起こっているのかを理解するために、必要に応じてメソッド呼び出しに従って、そこから読み始めます。

于 2009-12-21T14:45:40.867 に答える
1

心を取ります。Fortran の長所の 1 つは、非常に単純であることです。「賢い」トリックを利用するようにプログラムされたコードを見つけない限り。最初に行うことは、構文チェックと標準準拠を最大限に高めたコンパイラーでプログラムを実行することです。古い (Fortran 90 より前の) FORTRAN は、人々が言語の制限を回避するために使用した巧妙なトリックで有名です。現代の言語に精通しているプログラマー向けの落とし穴のいくつか:

-- 共通ブロック; グローバル状態のその他のメカニズム。特に悪いのは、変数の名前変更と再定義に使用される一般的なブロックです。

-- 等価性 (恐ろしいですが、それらにつまずく可能性があります);

-- 固定形式のソース フォーム。

-- CONTINUE ステートメントの使用、および複数のループを同じ CONTINUE ステートメントで終了させる慣行。

-- 変数の暗黙の宣言 (これらを整理するには、PROGRAM、MODULE、SUBROUTINE、または FUNCTION ステートメントの直後に行 IMPLICIT NONE を挿入します);

-- サブプログラムへの複数のエントリ ポイント。

-- そして、私があまりにもよく知っているので思い出せない人もいます。

これらがあなたにとって何の意味もない場合でも、すぐにそうなるでしょう。そして最後に、Understand for Fortran を見たいと思うかもしれません。お金はかかりますが、とても重宝します。

よろしく

マーク

于 2009-12-21T15:21:59.273 に答える