アプリ版:「スタンプのみでお礼する」機能のリリースについて

初学者向けに無限ループを検出するツールを作りたいと思っています
確かに制作したプログラムをコンパイルし、実行してしまったらいいのですが…
初学者には無限ループを発見するのが難しいと思います
そこで、初学者に対しどこが無限ループの可能性があるかを教えるツールの開発を目指しています

自分の中ではオーバーヘッドがない(少ない)静的解析を行いたいと思っています
構文解析を行い、ループ文を発見したあとの考え方が分からずに困っています

条件文に使う値の変化はデータフロー解析を用いればいいことはわかっていますが、その解析にもいろいろな種類があり、どれをどのように使えばいいかわかりません
また、ループ分中の条件文の変数の変化をどう考慮して無限ループを検出するかが思いつかず困っています

A 回答 (1件)

 難しいのでは? 昔プログラマでCOBOLを使って居ましたけど、流れが分からないと判断出来ない。

条件で分岐した先がどうなっているのかなどは全体を見ないと分かりません。スパゲッティプログラムと呼ばれる複雑怪奇な文章の時は非常に判断が困難でした。

 簡単な物は条件式の設定の確認。入力されたものがその条件に当てはまるのか。100までしか無いのに1000以上でループを抜け出すという条件では終わりませんから。

 どのような間違いが多いのかを見つけ出すことでしょうね。

 当時体験したのが、何も処理を行わないで条件をチェックし続けるループがあり、無限ループになるのを時刻表示させることで回避した経験が有ります。

 機械的な条件もありますから。

 チェックするには常にプログラムが擬似的に実行している状態にしないと難しいかな?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!