Perlの哲学 - Perlに対する誤解を解く

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言語と似ています。