ちょっと話題になっている兵〇県警の女子中学生補導ニュース。
どうやらJavascriptで無限ループを作って、一昔前のいわゆる「ブラクラ」っぽいものを表示させるURLを掲示板に張ったようです。
補導の是非については問いませんが、JC1でも簡単に作れる無限ループ。
それをちょっと言語別にまとめてみました。
ネタ切れなので一発ネタですね。
というか、無限ループなんて意図しなくてもよく作ってしまいますが・・・
breakの記載忘れたりとか・・・不等号を逆に書いたりとか・・・
プログラミング言語別無限ループ
というわけで言語別にまとめていきましょう。
C / C++
プログラミング言語といえばこれ!という人も多いのではないでしょうか。
無限ループの作り方にも歴史があります。
// whileを使った無限ループ
while( 1 ){
処理;
}
// forを使った無限ループ
for( ; ; ){
処理;
}
基本的なものですね。
個人的にはforの方が無限ループを作ってしまった人の感情を表現しているようで好きです。
あとは、再帰関数を使って無限ループを作る方法も。
// 再帰関数を使う
int roop(){
処理;
roop();
return 0;
}
Cってreturn書かないとコンパイルエラーになったような気もそうでない気もしたので一応書いておきました。
ちなみにこれを書いてしまうとbreakでも抜けれないので本当の無限ループですね。
どっかでメモリ食いつぶしそうだけど。
C#
MS大好きC#。私も好き。
JavaとCのいいとこどりで開発されたようですが、まったくその通りです。
Cからポインタを排除してくれただけでも有能。
// whileを使った無限ループ
while(true){
処理;
}
// forを使った無限ループ
for( ; ; ){
処理;
}
とはいえ、無限ループの作り方はCと一緒です。
あとはdo-whileとか?
// doを使う
do {
処理;
}while(true);
do-whileの場合は条件が偽でも1回は実行されます。
Java
Cと並んで有名なプログラミング言語ですね。
オブジェクト指向プログラミングという概念を広く普及させた言語です。
学生当時はclassとかの考え方が全く分からなかったなあ・・・
全部構造体でいいじゃんって思ってたわー
// whileを使った無限ループ
while(true){
処理;
}
// forを使った無限ループ
for( ; ; ){
処理;
}
javaも全く同じで無限ループをかけます。
このあたりの言語は記述方法に互換性が強いため、まとめて勉強するのにもってこいですね。
JavaScript
JavaとJavaScriptって違う言語なんですよー
っていうネタは有名ですね。
そして今回の火種となった言語でもあります。
// whileを使った無限ループ
while(true){
処理;
}
// forを使った無限ループ
for( ; ; ){
処理;
}
まあ、無限ループの生成方法はJavaその他と一緒なんですけどね。
ちなみに、上記記事には「何回閉じても無駄ですよ〜」という文字を出していたようなので、ウィンドウを閉じるイベントに対して再度ウィンドウを上げる処理を書いたのですかね?
であれば無限ループではないですね。終了。
PHP
サーバサイドプログラムといえばこれ。
最近はPythonに押され気味ですが、まだまだシェアはNo1ではないでしょうか。
// whileを使った無限ループ
while(true){
処理;
}
// forを使った無限ループ
for( ; ; ){
処理;
}
無限ループの書き方も他の言語と一緒です。
Perl
言語処理とかで使われるって大学で習いました。
ちょっとしたログ解析とかするときに使いますね。
まあ、最近はBashで事足りるんですけど・・・
# whileを使った無限ループ
while(true){
処理;
}
# untilを使った無限ループ
until(false){
処理;
}
# forを使った無限ループ
for( ; ; ){
処理;
}
whileと対になるuntilというループがあります。
どっちを使っても良いですね。
というか、なんで同じようなものを2種類用意しているんでしょうか・・・?
ループ処理をネストしたときに便利だったりするんですかね?
Python
最近かなり熱いプログラミング言語。
AI開発なんかによく使われているようです。
pipがすごい便利。
あと2系と3系では違う言語か?って思うぐらい仕様が異なるので注意。
# whileを使った無限ループ
while true:
処理
# forを使った無限ループ
loop = [0]
for i in loop:
処理
loop.append(i+1)
Pythonのforは他の言語とちょっと違い、他の言語のいわゆるforeachっぽい動きをします。
ので、わざと無限ループを生成するのであれば基本的にはwhileでよいかと。
Ruby
WEBアプリケーションフレーム(RoR)で使われてますね。
日本産のプログラミング言語です。
私は使ったことないのですが・・・
# loopを使った無限ループ
loop do
処理
end
# whileを使った無限ループ
while true
処理
end
すいません、わからなかったのでこちらを参照しました。
Rubyの繰り返し構文は結構種類がありそうなのですが、timesっていうのが単純で使いやすそうだと思いました。
loopっていうのは無限ループ生成専用の悪魔のメソッドと書いてありました。
そんなの用意するんですね。いや、無限ループよく使ったりするけど・・・
Bash
われらがBashです。
多分入社してから一番使った言語。というか言語といっていいのか?
# whileを使った無限ループ
while :
do
処理
done
よくお世話になってます。 意図しないところでも
forでも処理内で要素数を増やしていくと多分無限ループできます。
まとめ
いかがだったでしょうか。
無限ループというのは完全悪ではなくて、必要に応じて付き合っていかないといけないテクニック。
マルチスレッド処理なんかするときに使ったりしますしね。
なので、皆さんもおそれずにどんどん無限ループを作っていきましょう。
Ctrl + cがあるから大丈夫大丈夫!!
ちなみに、他にもいろいろな言語はありますが、さすがに1ミリも触ったことがなかったのでかっとしました・・。
ScalaとかF#とか・・・
関数型言語大っ嫌いなんですよね・・・意味が分からん・・・
今回補導されてしまったJCはこれに負けずにぜひプログラミングを続けてほしいですね。
プログラマー女子とか流行れ
コメント