0

編集者へのダイクストラの手紙については誰もが知っいます。他の言語拡張機能を追加するか、goto を許可する言語を開発することによって、goto の再利用可能で保守可能で無害なコードを作成する方法を見つけようとする人がいるのだろうかと思っていました。

私がこの質問をする理由は、アセンブリ言語で書かれたコードは goto 変数とグローバル変数を使用して、プログラムが限られたスペース内でうまく機能するようにすることがよくあると思ったからです。128 バイトの RAM とプログラムを搭載したAtari 2600は、ROM カートリッジからロードされました。この場合、非構造化プログラミングを使用し、これによってプログラムの非常に限られたスペースを最大限に活用できる自由を最大限に活用する方が適切でした。

これを goto を使用せずに現在プログラムされているゲームと比較すると、ゲームははるかに多くのスペースを占有します。

次に、これをサポートするためにいくつかのルールまたは他の言語の変更が行われた場合、おそらく goto を使用してプログラミングすることが可能であり、goto の悪影響を軽減または排除できると思います。goto が害を及ぼさないようにするための言語または従うべき規則を作成することによって、goto を有害と見なされないようにする方法を見つけようとした人はいますか?

害のない方法で goto を使用する方法を誰も探していなかったとしたら、この論文だけに基づいて不必要に構造化プログラミングを採用したのではないでしょうか? おそらく、マイナス面のない goto の使用を可能にする別の解決策があります。

4

2 に答える 2

2

gotoを構造化プログラミングと比較することは、プログラマーがコード内のすべてのラベルが実際に何を意味し、何をするかを覚えておく必要がある状況と、条件付き分岐が明示的に記述されている状況を比較することです。

プログラムの場所に関するgotoの利点として、statement今日のゲームは、グラフィックとサウンドのリソースを使用しているため、大きなものだと思います。つまり、1,000,000個のポリゴンを表示します。それに比べて後藤のコストは完全に無視できます。

さらに、構造ステートメントは、gotoアセンブリを出力するときに、コンパイラによって最終的に( "jmp")ステートメントにコンパイルされます。

質問に答えるために、命名規則と構文規則を作成することで、gotoの害を減らすことができるかもしれません。ただし、これらの規則をルールに適用することは、構造化プログラミングが行うこととほぼ同じです。

Linus Torvaldはかつて、gotoはソースコードをより明確にすることができると主張しましたが、gotoは非常に特殊な場合に役立つので、プログラマーとしてあえて使用することはありません。

于 2012-09-05T10:21:30.827 に答える
0

これは、aが必要とされる最も一般的な状況の1つだと思うので、この質問gotoはどういうわけかあなたの質問に関連しています。

于 2012-09-07T09:25:50.780 に答える