2008-09-20
■[ruby][perl][信者] いい加減Ruby信者がうざい件
Ruby信者の特徴
- Matzは神であり神による実装であるRubyこそが唯一絶対の言語である
- 他の言語(特にPerl)は存在自体が悪である
- 他の言語を使っているのはRubyを知らないからである
- Rubyを布教することでそのような不幸な子羊たちを救済することこそが正義である
どこかの世界宗教のようですね。
「Perlベストプラクティス」まとめ を読んでふと「Ruby使えばいいのに」と思った - World Wide Walker
PBPより先に、Perlを選択する時点で、RubyよりもPerlを使いたいという前提があることを考えて欲しい。
その上でPerlをよりよく(という言い方もあまり好きじゃないけど、ほかにいい言い方が思い浮かばない)運用する方法がPBPなんだろ。
それに対して「それRuby(略」っていう発言は場違いであると思わない?
Perl の There are many ways to do it. と言う考え方は好きだけど、実際には too many ways だったり、後から小声で But, the best way is only one. だなんて言われそうな気がするのがなぁ、と思ってしまう。
当然 too many ways だろ。
その too many ways の中から more better なものを選ぶのがエンジニアとしての技量なんじゃねーの?
あと the best way なんてものは存在しないよ。
is_validやhas_foundなど真偽値にちなんだ名前にする。
foo.valid? や bar.found? と書ければ一目瞭然。
そうでもない。関数名に?が来るという時点でまずruby使わない人間から見ると異常。
あとこの例だとfound?はhas_foundという意味よりis_foundという意味に俺は取ってしまったんだが。
省略するのはいいけど、省略しすぎて情報が落ちてないか?
どうしても必要なとき以外はmyによるレキシカル変数だけを使う。
なぜ標準が lexical にならないんですかね(もちろん過去互換性のためだろうけど)。
変数宣言が暗黙だと変数名をtypoしたときにコンパイル時点でエラーにならないからだろJK。
ループで配列やハッシュのインデックスを使わない。配列を直接ループさせる。
こんなのや、 keys %hash は遅いから values %hash を使う なんてのは Bad Know-how 以外の何者でもないな。Ruby なら hash.each do |key, value| .... end と明瞭にかける。
インデックス回して書いた方が人間が見てわかりやすいならそう書くべき。
その上で必要ならチューニングする。
PBPもこれ書いてる人が考えるBestなだけで、実際にこれがBestだと決まってるわけじゃない。
[Ruby] Ruby >>>(越えられない壁)>>> perl (第一種臨界不測日記)
このような開けた場所で不等号を並べて越えられない壁とか臆面もなく書けるあたり尊敬します。
しかし、Webの記事とか、googleで上の方に出てくるのとか、
その辺、全然考慮してなかったりするんだよヽ(`Д´)ノ ウワァァン!!
PerlのコードはGoogleなどで検索するとレガシーなコードの方が多くHITしてしまいます。
これはPerlはRubyに比べると歴史が長いため、レガシーなコードほど多く蓄積されてしまっているからじゃないかと考えています。
良質なコードを摂取したいというのならば最近更新されていて、よく使われている評価の高いCPANモジュールのソースを読むことをオススメします。
使っている人もgeekな人が多いせいか、
Rubyを使っている人=geek=自分はgeekということですね。
自分で自分のことをgeekと言う人ほど信用できないものはないと思います。
最後に
自分の考えをまとめると、Perlが全てのエンジニアにとって使いやすい言語ではないのと同じように、Rubyも全てのエンジニアにとって使いやすい言語ではないということです。
別にRubyという言語やそのコミュニティが嫌いだというわけではなく、このことを忘れて(あるいは考えず)、他の言語をDISってRubyをプッシュしてくる信者が大変鬱陶しいということ。
この時代にあなたが生まれていたとしたら、Webの世界に入りましたか?
答えはNOですか?それは悲しいことじゃないですか?
色々な言語がサーバサイドの言語として使われることで、幅広い層のエンジニアがWebの世界に足を踏み入れるわけです。
それによってそれぞれの言語のコミュニティが活発化して、お互いに影響しあって成長していくんじゃないですか?
言語がどうこうなんて小さいことじゃなくて、もっと大きな視点を持つべきなんじゃないですか?