無限ループ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/06/26 10:31 UTC 版)
無限ループの検出
無限ループは、通常、プログラマが原因を突き止めることができると簡単に考える者もいる[要出典]ようだが、次のような例を考えればそうでないことがわかる(簡単のため、数値は無限に大きな値を扱えるものとする)。
- 入力として、正の整数であるnをとる。
- nが偶数の場合、nを2で割る。
- そうでなければ、nを3倍して、さらに1を加える。
- nが1なら終了する。
- ステップ2に戻る。
上記はごく簡単なプログラムであるが、たとえば最初のnを27とすると、途中でnは最大9232となる。そして、このプログラムがどんなnに対しても終了するか、あるいはあるnで始めると無限ループとなってしまうかという問題はコラッツの問題と呼ばれ、2014年時点で未解決の問題である。
理論上、プログラムが停止するのか動き続けるのかを「どんなプログラムに対しても」「有限の時間内で」「必ず決定できる」ことを全て満たす方法は無い。これは停止問題の決定不能性からの結論である。
日常会話での使用
「無限ループ」という言葉は他のプログラミング用語(例えばメモリリークやデッドロック等)と同様に非プログラマにも魅力的とされていて、プログラミングエラー以外の状況を表現するのにも使われている。例えば、コンピュータを使う上で一連の手順を求められ、最後には振り出しに戻ってしまうような状況である。特に、目的を達成するか回避するか、その手段がどちらも無いような場合[3]に使われることがある。自発的に何かを繰り返すようにすることを指して使われる[4]こともある。
その他の無限ループ
楽曲においても、無限ループは発生する。楽譜にてダル・セーニョやダ・カーポでジャンプする指示をしながら、曲の終わりを示すフィーネがないと、曲がいつまでたっても終わらなくなる。エリック・サティのピアノ小曲集『スポーツと気晴らし』の第16曲「タンゴ」のように、意図的にしている例も存在するが、これを意図せずやってしまうと無限ループとなる。
クラシック曲では普通は無いが、近年のポピュラー音楽等では、進行が終止せず、終止に向けた一定のフレーズを繰り返しながらフェードアウトして終わる、といった曲や、ゲームのBGMのように曲自体は何度でも繰返して終わりがないといった曲もある。
コンピュータゲームにおいて、特定のルートを通ると、再び同じルートが登場し、先に進めなくなる仕掛けのことを無限ループと呼ぶ場合がある。これは特定のルート以外を通れば脱出できるため、厳密な意味での無限ループではない。なお、脱出できる分岐がその先には存在しなくなる一種のトラップが仕掛けてあるゲームもあり、そういったものは本物の無限ループである。また、制限内で高得点等を狙うゲームの場合、無制限に点数稼ぎを繰り返すことができてしまうと、高得点ランキングが無意味になってしまうため回避されるのだが(さらにアーケードゲーム等では、オペレータ(店)や運営元のインカム(収入)に影響するため特に忌避される)、バグ、あるいはプレイヤーの超人的な腕によって可能になる場合があり「永久パターン」と特に呼ばれている。
住所
米国カリフォルニア州クパチーノには無限ループを表す Infinite Loop という住所が存在する。IT企業であるAppleの本社敷地Apple Campus内にある楕円形の道路に「Infinite Loop」の名前が付けられており、この道路を取り囲むように最大5条の同心円状の駐車場が設けられている。
Infinite Loopの内側にはアップルが保有する6つの建物があり、それぞれ公式に 1 Infinite Loop から 6 Infinite Loop までの住所が与えられている。アップル本社の公式住所は 1 Infinite Loop, Cupertino, California である。
ジョーク
無限ループをx秒で実行し終えることができる、というスーパーコンピュータの性能をネタにした定番ジョークがある(チャック・ノリス・ファクトのコンピュータ業界版のようなもの)。ジャーゴンファイルの "infinite loop" の項目にある例では[5]「Cray-3はとても速くて、無限ループを2秒で実行できるくらいだって!」("The Cray-3 is so fast it can execute an infinite loop in under 2 seconds!")。
- ^ Alderson Loop The Jargon File, Version 4.4.7. Accessed 5/21/2006. (Public Domain) (英語)
- ^ The Story of Mel "Perhaps my greatest shock came ~" から後のくだり
- ^ Caught in an infinite loop (無限ループにハマりました) 日常会話での使用例。 (英語)
- ^ Confession of an infinite looper (無限ルーパーの告白) ある曲だけを繰り返し聞いている人。 (英語)
- ^ infinite loop
- 1 無限ループとは
- 2 無限ループの概要
- 3 特異な例
- 4 無限ループの検出
- 5 関連項目
- 無限ループのページへのリンク