Perlのインクリメント/デクリメントの動作はC言語と同じ
C言語のインクリメント/デクリメントの動作は、C言語と同じです。Perlの文法は、C言語を多く参考にしており、インクメント/デクリメントは、C言語と同じ文法で使用することができます。
PerlのインクリメントとC言語のインクリメントの比較
Perlのインクリメント
Perlのインクリメントです。Perlのインクリメントは、変数に保存されている数値を1増やします。インクリメントが前置された場合は、評価後の値が返されます。インクリメントが後置された場合は、評価前の値が返されます。
この動作は、C言語と全く同じです。
# Perlのインクリメント $num++; ++$num;
C言語のインクリメント
C言語のインクリメントです。C言語のインクリメントです。C言語のインクリメントは、変数に保存されている数値を1増やします。インクリメントが前置された場合は、評価後の値が返されます。インクリメントが後置された場合は、評価前の値が返されます。
# C言語のインクリメント num++; ++num;
PerlのデクリメントとC言語のデクリメントの比較
Perlデクリメント
Perlのデクリメントです。Perlのデクリメントは、変数に保存されている数値を1減らします。デクリメントが前置された場合は、評価後の値が返されます。デクリメントが後置された場合は、評価前の値が返されます。
この動作は、C言語と全く同じです。
# Perlのデクリメント $num--; --$num;
C言語のデクリメント
C言語のデクリメントです。C言語のデクリメントです。C言語のデクリメントは、変数に保存されている数値を1減らします。デクリメントが前置された場合は、評価後の値が返されます。デクリメントが後置された場合は、評価前の値が返されます。
# C言語のデクリメント num--; --num;
C言語で覚えたインクリメント/デクリメントの文法をPerlでそのまま使える
C言語で覚えたインクリメント/デクリメントの文法をPerlでそのまま使えます。
これは、Perlが、ユーザーが慣れ親しんだC言語の文法をそのまま採用したということです。
Perlは、C言語と親和性の高いプログラミング言語です。
インクリメント/デクリメントに関するC言語への批判はささいなものだと思う
ある人たちは、C言語の、インクリメント/デクリメントの仕様を、非常に批判的に語ります。
- 前置と後置で意味が変わるので、理解しづらく、バグを生みやすい
- 後置のインクリメントは、構文解析が複雑
- 値がイミュータブルではなくなる
でも、これって、ささいなことだと思いませんか。重箱の隅をつつくような議論に感じませんか。
なにかこう、自分のことは棚に上げて、人の小さな悪いところを、過大に批判するみたいな。
こういう議論に巻き込まれたら、素早くその場所を去った方がよいかもしれませんね。
それよりもむしろ、広く利用されているC言語の文法を、そのまま採用したPerlを再評価してみるのはいかがでしょう。
PerlとC言語の他の類似点
この記事では、Perlのインクリメント/デクリメントがC言語と似ているということを書きましたが、Perlのfor文,if文、while文、演算子の種類と優先順位、スコープ、参照概念も、C言語と似ています。