色々なプログラミング言語の無限ループをまとめてみた

プログラミング
スポンサーリンク

ちょっと話題になっている兵〇県警の女子中学生補導ニュース。

どうやらJavascriptで無限ループを作って、一昔前のいわゆる「ブラクラ」っぽいものを表示させるURLを掲示板に張ったようです。

エラー|NHKオンライン

補導の是非については問いませんが、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はこれに負けずにぜひプログラミングを続けてほしいですね。

プログラマー女子とか流行れ

 

基礎からしっかり学ぶC#の教科書 C# 7対応 [ WINGSプロジェクト 高江 賢 ]
created by Rinker

入門JavaScriptプログラミング [ JD Isaacks ]
created by Rinker

 

 

コメント

タイトルとURLをコピーしました