英語とドイツ語で微妙にスペルが違うときの歯がゆさに似た何か

こんにちは。暑さ寒さがまだ不安定な感じですが、体調崩さず過ごしていますでしょうか。
家の近所に公園があるのですが、そこに咲く桜がなかなか見ごたえあるので少し前に撮ってきました。
人間たちのいざこざに関係なく花は咲きますからね、今年もきれいなものです。

さて、今回は過去に自分が些細なことで無駄に時間を費やしたのでその反省の意味も込めて書き残しておきます。
拡張for文についてです。(拡張よりはfor-eachのほうが耳馴染みはよいかもしれません)

プログラミングに初めて触れる際、それがどのような言語であっても必ず学ぶものの一つに「繰り返し処理」がありますよね。
条件に設定した回数だけ同じ処理を行うことを指し、ひどく大雑把に表現すると
for(繰り返す回数・条件を書く) { 繰り返す処理の内容を書く }
このようなものです。
その中でも「配列のすべての要素をループで取得する」場合の書き方って、ちょっとクセがあるじゃないですか。冒頭で述べた拡張for文のことですが。

唐突にたとえ話になりますが、カゴに果物が入っている図を想像してください。
配列がカゴで、その中の要素が「りんご、バナナ、ぶどう」です。
もっとソースコードっぽく書くならば
String fruit_box[] = {“りんご”, “バナナ”, “ぶどう”};
こんなもんでしょうか。
以下、言語により多少書き方は異なるのですが今回主張したい内容ではないため
配列=fruit_box、配列から取り出した要素を格納する変数=fruitとして統一した記述とします。
要するにそのまんまコードに組み込むのダメ、絶対。です。

自分はちょびっとだけjavaを齧っておりましたので、
「配列でループか……ふむ、こんなところだろう」下記のようになります。
for(String fruit: fruit_box){
System.out.println(fruit); //コンソール上に文字列を表示させます
}
カゴから取り出した要素=果物をfruitという変数に格納しています。
一回目のfruitには”りんご”が入り、二回目は”バナナ”、最後に”ぶどう”となりますね。

これと同様の条件をphpで書くと
foreach($fruit_box as $fruit){
Console.WriteLine($fruit); //コンソール上に文字列を表示させます
}

そうなんです。繰り返しの条件を書くところが、配列と要素を書く順番が逆なんですね。
思い込みとは恐ろしいもので、そのことに気づくのにかなり時間を食ってしまいました。
悔しかったので他の言語だとどんなもんなのか覗き見してみました。少しだけですが。

pythonの場合
for fruit in fruit_box:
print(fruit)
要素を先に、配列を後に書く形はjavaに近いですね。
しかし{}や()なんかで囲むことに慣れていると、これ読みにくくないかい?って感じです。

objective-Cの場合
for (NSString *fruit in fruit_box)
{
NSLog(fruit)
}
※fruit_boxはNSArray型、要素はNSString型とする
要素の型名を指定する書き方はjavaとの親和性が高いですね。
ただデータの参照型が見慣れなかったり、ポインタ変数が出てきたりと初見でのとっつきにくさはありますね。

C#の場合
foreach(string fruit in fruit_box)
{
Console.WriteLine(s);
}
C言語まわりは遠い親戚ぐらいには似通っていますね。

javascriptの場合
fruit_box.forEach(function(fruit){
console.log(fruit);
});
javaとjavascriptは同姓同名の他人くらい他人ですが、

(Java8以降)forEachメソッド
fruit_box.forEach(fruit -> System.out.println(fruit));
こうしてみると似ていますね。ややこしいわい。

プログラミング言語はこれ以外にもたくさんありますが、探す余裕がなかったのでここいらでおしまいとします。
ブログの書き方も調べられなかったので次はソースコードをそれっぽい表示にできる装飾を見つけてもうちょっと頭がよさそうなブログを書けるようになりたいです。おわり