Python のだめなとこ
Pythonはダメなところは信者がアレすぎるところ - odz bufferさん経由Python の嫌いなところ - kなんとかの日記さん。
いちいちいろいろ同意なのですけれど、kwatchさんの上げた中では私は一番「list や dict や str が大文字で始まっていない。」にストレスを感じます。
オレは list や dict や tuple や str や set や file という変数名を使いたいんだよ!
うんうん、ですよねー。結局
これからは Samlltalk 風に aList や aDict を使おうか
な感じで落ち着いてしまったですが、これもちょっと気持ち悪いのです。
もうひとつ私がストレスを感じるのは 変数や関数の名前付けのルールが一本化されてないところかな。全部小文字だったり、小文字アンスコつなぎだったり、キャメルパターンだったり。
で、何となく Python の小さい名前に 小文字始まりのキャメルパターン を使うのは似合わない気がしていて、前述の aList とか aDict とかが 格好悪くみえてしまうのが悩みどころ。
* * *
よくやり玉にあがる print の驚き最大限の法則な挙動ですが、「print と println くらいあっても良いじゃん」には「そうだよねー」とは思うのですが、でも 私はあんまりストレスは感じていません。多分出力フォーマットにこだわりのない てけとー な文字出力にしか使ってないからだと思います。
それと「変数のスコープの仕様がわかりにくい」という話は、いままで私は感じたことが無くって、例を見るまで何がわかりにくいのかピンときませんでした。
わかりにくいというか、わかりやすい説明をみたことがない。たとえばこんなの。
def foo(self, x): print x deff bar(self, y): foo(self, y) # これは OK なのに class Test(object): def foo(self, x): print x def bar(self, y): foo(self, y) # これは NG というのがうまく説明できない
と言われて、「なるほどなー」と。
モジュールのスロットと、関数の実行時コンテキストのスロット(?)以外の名前は そのスロットの持ち主を指定しなくちゃいけない、でいいんでない?・・・なんていい加減なこと思ってたですよ。
定義とかじゃなくって、def も class も何もかもが実行される文だと言う視点さえあれば、後は自然に飲み込める構造に Python はなっていると思います。そう、心にオブジェクトの御姿を描けばいいのです。
・・・なんて宗教じみた説明をしちゃいたい私は、あぁ、確かにアレすぎるのかしらん、と思ったり。orz