1

コードを論理グラフに変換することは可能ですか?


編集:

私が考えているのは、数学は絶対的なものだということです。確かに正しいか間違っているかを判断することができます。しかし、コードの場合、ロジック以外のものがあります。私がやりたいのは、その「何か」を削除して、ロジックをそこにのみ保持することです。

4

5 に答える 5

2

それが可能だ。フローチャートは論理グラフであり、コンピューターで簡単に生成できます。すべてのコード構造には、対応するフローチャート構造があります。

クイック Google が持ち上がった: Code Visual to Flowchart


逆に言えば、フローチャートは広すぎてコードに変換できません。ただし、グラフィカルプログラミング言語はあります。たとえば、NI の labView fpgaはすべてグラフィカル プログラミングであり、VHDL に変換できます。

于 2009-06-27T22:26:08.510 に答える
2

これが正確に何を意味するのかはわかりませんが、clang 解析コードのような静的アナライザーは、コードが取る可能性のあるすべての分岐を決定し、エラーをチェックします。たとえば、コードが与えられた..

1. if(somefunction()){
2.    this_will_break();
3. } else {
4.     if(anotherfunction()){
5.         printf("%i", str(something));
6.     }
7.     print("this is fine");
8. }

次のような出力が得られます。

Line 1. Taking true branch.
Line 1. Error: Function this_will_break is not defined
Line 4. Taking true branch.
Line 5. Warning: Function passed incompatible type

これらのパスをグラフ化できる可能性がありますが、なぜそうしたいのかわかりません (実際には何も表示されません)。

似ている可能性のあるもう 1 つのアイデアはGprof2Dot です。これはプロファイリング データを取得し、各関数の実行にかかる時間、どの関数がそれを呼び出したかなどを示す階層的な Graphviz チャートを描画します。

最後に思い浮かぶのは、ShakeQuartz Composerなどのノードベースのアプリケーションです。これは、「視覚的にプログラミング」する方法であり、次のようなコードを表しますAdd(Blur(MyImage), Blur(AlphaChannel))

[MyImage]--->[Blur]----\/
                      [Add]
                       /\
[AlphaChannel]----------

これらは論理グラフではありませんが、コードを視覚的に表現する方法であり、おそらくいくつかのアイデアを提供する可能性があります..多分..私が完全に誤解していない限り..

于 2009-06-27T22:38:21.263 に答える
0

少なくとも逆は可能です。シーメンスの PLC をプログラミングする場合、より一般的なプログラミング形式の 1 つは、グラフィカルにプログラミングする「ラダー ロジック」です。

http://en.wikipedia.org/wiki/Ladder_logic

于 2009-06-27T22:19:08.510 に答える
0

それとも、クラス図とシーケンス図を使用したリバース エンジニアリングされた UML のようなものですか?

コード自体ほど価値はありません、IMO。意味のある複雑度に達すると、図やグラフ全体を取り込むことは不可能です。そして、効果的にグラフ化できる問題は、努力する価値がありません。

あらゆる種類のグラフィカル表現のデバッガーや単体テストはありません。

写真とデザインの価値は、問題を十分に理解してコーディングできるようになることです。しかし、その点に到達すると、それらを工学図面と同等にすることの限界的な有用性は、努力する価値がないと私は主張します.

于 2009-06-27T22:23:14.337 に答える