【この記事はジョーク記事です!】
【某ソフトハウスの営業マン】
— がたろう TTLでCPUを作る爺(コンパイラやOSも手作りです) (@duo6750) 2016年4月12日
「軌道上の静止衛星に積まれるソフトです。for文は宇宙放射線に弱いので全てwhile文で書く必要がありますが、御社は対応可能でしょうか?」
「大丈夫です。大丈夫です。弊社の開発部門にはその対応の経験がある者が大勢おります!」
\^o^;/
この件に関連して……。
あまり知られていないのだけど、初期の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文の例 int i; // for文 for (i = 0; i < 5; i++) { System.out.println(i); } // while文 while (i < 5) ;
まあ、いくら何でもそんな変な構文あるわけないですね!(信じてしまった方は、悪意の人間に騙されないよう気をつけて……。)