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