ぎるばーとの日記

もっともっと遠くへ行きたい 空が広く見える場所まで

Javaの知られざる構文〜幻のfor-while文

【この記事はジョーク記事です!】

 この件に関連して……。

 あまり知られていないのだけど、初期のJavaに、for文とdo-while文を組み合わせたfor-while文というのがありました。いつ頃からか、言語規定に載らなくなりましたが、最新版でもコンパイル・実行が可能です。

// for-while文の例
int i;
for (i = 0; i < 5; i++) {
    System.out.println(i);
} while (i < 5);

 iはメモリに記憶されますが、ループ判定のタイミングでCPU内のレジスタに読み込まれます。

 宇宙空間や過酷な放射線環境下で使用する機器では、メモリは放射線対策していることが多いですが、CPUは特に何でもないものを使ったりするそうです。そこで、CPU内のビット反転に対する耐性を高めたい場合、「(二重にループ判定する)for-while文、君に決めた!」ということだったのですが……。
 うーん、可読性や保守性が悪すぎたのか……。幻の構文となってしまいました。





 ……信じましたか?(^^;

 「種明かし」しましょう。上のコードは、for文の後ろに「中身が空っぽ」のwhile文が続いているだけです。つまり、

// for-while文の例
int i;
// for文
for (i = 0; i < 5; i++) {
    System.out.println(i);
}
// while文
while (i < 5)
    ;

 まあ、いくら何でもそんな変な構文あるわけないですね!(信じてしまった方は、悪意の人間に騙されないよう気をつけて……。)