seven things I hate about my favorite language Python

5個じゃ足りなかったので7個。

参考:

  1. ブロックがファーストクラスオブジェクトではない
  2. 静的型付けがない
  3. 関数とメソッドの関係
  4. 無限の扱いが弱い
  5. 文字列フォーマットが見づらい
  6. importが面倒
  7. メタの扱いが整備されていない

理由:

  1. lambda式や関数をわざわざ作成しないといけない。
  2. 関数の引数で型チェックしたい。Cythonのように静的言語に変換する際に型が分からない。
  3. Python3からoperator.methodcallerが入ったから少しは違うが、関数でなくメソッドのため高階処理できなかったり(lambdaか関数を使う)、メソッドチェインができなかったり。但しこれに関して構成をどうするかは、好みもあるので微妙。Rubyのクラス構成は個人的には複雑すぎに感じる。
  4. itertoolsが遅く(chain、teeなど)、扱いづらい。基本的に範囲オブジェクトが(range|xrange)しかなく不便。シーケンスとイテレータの抽象化がやりにくい。遅延評価や末尾再帰も絡んでくるが、そこまでは不要。
  5. Python3でだいぶマシにはなったが、依然として冗長性がある。RubyやGroovyのやり方がベスト。
  6. 正規表現の扱いが面倒だったり、itertoolsやoperatorやfunctoolsをimportする必要があったり。ライブラリの構成を根本から再構築してほしい(但し非互換性が強すぎて現実的ではない気がする)。
  7. メタクラスの扱いが難しく実用性あまりないように感じる。GroovyのMOPはビルダーのような応用ができているので、そこまでの実用性がほしい。

も参考になる。