トップ «前の日記(2007-10-08) 最新 次の日記(2007-10-11)» 編集

じじぃの日記、ツッコミ可

Twitter: @jijixi_org
Xbox Live: jijixi

初心者が書いた OCaml 入門
Spotlight tips サイト内リンク集
1970|01|02|
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|11|
2011|05|
2012|01|

2007-10-10 [長年日記]

% [Ruby][Python][雑談] Ruby に比べて Python の面倒なところ

日記の CGI を止められたり、それに関係してリファラの表示をやめたりとかしたせいで気付いてなかったんだけど、なんか言及されてたようなので、今さらだけど書いてみる。

といっても、当時の自分が何を考えていたか、はっきりとは思い出せないんだけども。 まあ、文脈から考えるに、「Python は Ruby に比べると面倒なこと多すぎる。」という言質は「ちょっとした日々のツールをでっちあげたりする」というシチュエーションにおいての話であるのは間違いない。 で、わしにとってのそういう「ちょっとしたツール」というのは要するにテキストの処理とか、そういうものなわけだ。 そんな感じで考えると、この場合の「面倒なこと」とはおそらく以下のようなものだろうと思われる。

  • self 地獄
    • メソッドの引数にいちいち self を書くのがめんどい……というか書き忘れてエラーになるのがうざい
    • インスタンス変数を触るときに、いちいち self が必要なのがめんどい
  • return 地獄
    • 関数から値を返すときに常に return が必要なのがめんどい
  • 式地獄
    • 代入が値を返さない、制御構造が値を返さない、などが影響して余計な変数が必要になったり
    • print が文なくせに、lambda に文が使えなかったり、微妙にかゆいところに手が届かない
  • import 地獄
    • コマンドライン引数に触るだけなのに、いちいち import sys とか、どんだけ?
    • exit するだけなのに、いちいち以下略
  • 正規表現地獄
    • 正規表現リテラルが無いなんてめんどい
    • いちいち import re とか以下略
  • インデックス地獄
    • IndexError とか KeyError とかうざい
  • 文字列地獄
    • 変数展開が使えないなんてめんどい
    • とはいえ Perl のは、やりすぎだと思うんで Ruby くらいのをくれ

念の為エチケットペーパーを敷いとくと、上記はあくまでも「ちょっとしたものをさっと書き上げる」場合の話であって、全てのシチュエーションにおいてこれらが問題になると思っているわけではない。 大きめのものをきっちり作るなら、逆に有利に働くものも多い。

あとまあ、小さいものを書くシチュエーションであっても、Python の方が好みの部分とかもそれなりにある。 optparse モジュールなんかは、Ruby のものより Python のものの方が作りが好みだし。 引数を解析した結果を辞書として取れるのとか良いよね。 Ruby だと解析結果のハッシュが欲しいときは、あらかじめ用意したハッシュをコールバックで破壊的に変更したりとかしなきゃないから、なんか美しくない。

他にはキーワード引数なんかは、どんなシチュエーションでも嬉しい要素じゃないかと思う。 Rails ではハッシュをキーワード引数代わりに使ってたりするけど、あれって使う方は良いけど、同じようなメソッド書こうとすると面倒なんだよな。 Ruby にも是非キーワード引数を。

本日のツッコミ(全6件) [ツッコミを入れる]
% hoge (2007-10-13 15:00)

Pythonの文字列の変数展開なのですが<br>print "Count %(one)s %(two)s %(three)s." % {"three":3,"two":2,"one":1}<br>これではまずいですかね。<br>勘違いしているようでしたらすみません。

% jijixi (2007-10-13 16:21)

その書き方は知ってますけど、このネタは「てっとり早く書く」シチュエーションの話なので、<br>Ruby で "Count #{one} #{two} #{three}." って書けるのに比べると、やっぱりめんどうですよね。

% shinh (2007-10-13 16:41)

ご存知かと思いますが<br><br>"Count %(one)s %(two)s %(three)s." % locals() という手も…

% jijixi (2007-10-13 16:49)

あー、それはご存知じゃなかったっす。<br>って言うか、locals は知ってましたけど、その組み合わせは思いつかんかった。<br>脳の柔らかさの問題ですかね(苦笑

% opapi (2007-10-13 23:59)

>print が式文なくせに、<br>これはpython側でもおかしく思ってる人も多いみたいで、<br>3.0で修正されるらしいですね

% shinh (2007-10-16 17:30)

ちなみに私も最近どっかで見て知ったんで自分で考えたわけではないです。

お名前:
E-mail:
コメント:

トップ «前の日記(2007-10-08) 最新 次の日記(2007-10-11)» 編集

日記ってのは本来、自分で読み返すためにあるもんだよなあ……
もしくは有名人になったら死後に本になったりとかか?

RSS はこちら

jijixi at azito.com