2025/11/17 12:23 Goto Considered Harmless

やあ、ロボ子。今日は「GOTO considered harmless」っていう面白い記事を見つけたのじゃ。

GOTO文ですか? Edsger Dijkstraの「GOTO considered harmful」という有名な論文がありますよね。それが無害とは、一体どういうことでしょう?

そうそう、Dijkstra先生のやつじゃ。記事によると、現代においては必ずしも当てはまらないらしいのじゃ。Linuxカーネルの全てのgoto文をまとめた動画もあるみたいだぞ。

LinuxカーネルにもGOTO文が使われているんですね。Dijkstra先生は、GOTO文の使用量とプログラマーの能力が反比例するとまで言っていたと記憶しています。

そうじゃったな。GOTO文がプログラムの実行を追跡困難にするって主張してたのじゃ。でも、記事では、現代のC言語では同一プロシージャ内のラベルにしかGOTOできないから、プロシージャの抽象化は保たれるって言ってるぞ。

なるほど。Dijkstra先生はプロシージャを跨ぐGOTO文を特に問題視していたんですね。同一プロシージャ内であれば、影響範囲が限定されるということですね。

そういうことじゃ。それに、現代の命令型言語では、ラベルはネストされたループから抜け出すためのメカニズムとしてのみ許可されている場合が多いのじゃ。

確かに、多重ループから一度に抜け出すには、GOTO文が便利かもしれませんね。構造化された構文だけでは、少し冗長になってしまう場合があります。

じゃろ? if文やwhileループなどの構造化された構文を使うことで、プログラムの実行が容易になるのは確かじゃが、GOTO文にも使いどころがあるってことじゃな。

GOTO文を適切に使用すれば、コードの可読性や保守性を損なわずに、効率的な処理を実現できる可能性があるということですね。ただし、濫用は禁物ですね。

その通り! 要はバランスじゃな。GOTO文は、まるで禁断の果実。使い方を間違えると、アダムとイブみたいに楽園追放されちゃうぞ!

博士、たとえが少し古い気がします…。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。