-4

次の 2 つの問題が原因でプログラムがクラッシュすることに不満を感じています。

  • 無限ループ (例: C# または Javascript)
  • 結合句を追加するのを忘れた SQL 結合

コンパイラが十分な能力を持っていれば、これらの問題は回避できるようです。これらの問題をプログラムでどのように防ぐことができますか?

4

1 に答える 1

1

最新のコンパイラは、最適化のためにループをアンロールできますが、前もってデータの一部を知らなければ、ループが終了するかどうかのヒューリスティックを作成することさえできません (参照:データフロー プログラミング)。実際、プログラム自体が終了するかどうかを判断することは、停止問題と呼ばれます。

それ以外の場合は、無限ループが必要です。たとえば、グラフィック エンジンは通常、次のようなことを行います。

while(true)
   render

SQL 結合に関しては... 1 つを逃すと、かなり明白になるはずです。場合によっては、INNER JOIN を指定しないと INNER JOIN が暗示されるため、その意味で、コンパイラはこの正確な問題を修正しています。

于 2013-10-29T04:12:11.567 に答える