アナウンス:スラドとOSDNは受け入れ先を募集中です。
pumipumiponのコメント: Re:Perlはもっと評価されていい (スコア 1) 115
> C言語みたいに明確なbooleanのない言語だと、真偽値と数値を比較したり、数値をif文の判定に流用したりできるんですよ。
すみません、最初にCって書いちゃったので誤解を与えてしまったようです。
正確にはC++ですね。
>単に字面で読み易いかどうかというだけなら、マクロで置き換えるだけでも
>そんなに問題にはなりません。
えっと、マクロで置き換えるってCでのコーディングのことですか?
pumipumiponのコメント: Re:Perlはもっと評価されていい (スコア 1) 115
はい。そのとおりです。
変数名の命名規則でほぼ判別できます。
ただ、true か false のほうが確実ですよね?
一番怖いのは、変数名をだけを見て、読む側が0か1だろうと判別してしまうことです。
書く側が未熟で、0か1ではないコードを書く可能性だってあります。その場合、原因に気づけず、多くの時間を費やすかもしれません。
これまでの経緯で分かると思いますが、Perlのbooleanの有無については、必ずこのような議論が発生してしまいます。
私はこのようなこと自体が無駄だと思うので、あまりPerlを使わなくなったのです。
pumipumiponのコメント: Re:Perlはもっと評価されていい (スコア 2, すばらしい洞察) 115
booleanがなくても構わないというのは、すごいですね。
そもそもbooleanって、0と1だとコードの可読性が低くなるから導入されたものですよね。
$is_valid = true;
$is_valid = false;
$is_valid = 1;
$is_valid = 0;
上記のコードでは、あきらかに前者の方が理解しやすいです。後者は1という数値が真を表しているのか分かりませんし、0と1だけではなく、ひょっとすると 2,3,4...という数値があるかもしれないという疑念にかられてしまいます。(実際に2以上の値がついたコードで嵌ったことがあります。)
> 人によってマチマチになる点はコーディング規約で縛ればいい。
コーディング規約を決めるコストが高つくので、あまり使わなくなったという経緯があります。
真偽値の扱いをどうするかとか、アクセサのモジュールはどれを使うのとか、そういったことを開発前に打ち合わせること自体、時間の無駄だと思います。
pumipumiponのコメント: Re:Perlはもっと評価されていい (スコア 1) 115
MooseやMouseモジュールの存在を知らなかったので、ざっと見てみました。
しかし、結論から言うと、まだ使う気になれないですね…。
MooseやMouseの記述方法が、モジュールではなくPerlの言語として正式に組み込まれるのであれば使う気がおこるのですが、今のところそうではなさそうなので…。
このような混乱が続く以上、積極的にPerlで開発するというメリットを感じません。
少なくともアクセサは言語の中に組み込まれるべきだと思います。(使う使わないは別にして)
# MooseやMouseについて、教えていただきありがとうございました。勉強になりました。
pumipumiponのコメント: Re:Perlはもっと評価されていい (スコア 3, 興味深い) 115
自分の組織内でPerlをほとんど使わなくなった主な理由は、次の4つ。
- true, false の boolean値を利用できない。
CやJavaを利用している人にとって、これが使えないのはかなり痛い(自分だけ?)。
Perlの場合、bool値を使う場合は、常にuse constant を使うか、
sub true() { return 1; }
sub false() { return 0; }
などの記述をする必要がある。非常に面倒。
- オブジェクトを呼び出す際に new 演算子が必ずしも必要でないため、開発者の嗜好や、開発環境の慣習によってコードがバラバラになっていることが多く、可読性が低いものが多い。
- モジュール(クラス)を作る際、いちいち bless をする必要がある
一度覚えれば分かりにくくは無いが、他の言語に比べて余計なコーディングしている感は否めない。また、人によって、$this だったり、$self だったりマチマチなのもいただけない。
- public, protected, private などの指定ができない。
よって、モジュール(クラス)のどのメソッドでも呼び出せる。危険なだけではなく、どれがインターフェースなのか分かりにくく可読性が悪い。
上記が満たされるようになれば、また使いたい言語です。