読者です 読者をやめる 読者になる 読者になる

methaneのブログ

このブログに乗せているサンプルコードはすべてNYSLです。

なんとなく擁護してみる

http://anond.hatelabo.jp/20080731154801

  • インデントうぜー。ブロックの終端がわからんしワンライナーかけないし。
    • だよね、2chにコード張るときに実態参照しないとインデント消えるし。
    • ちょっとした事を片付けるなら、ワンライナーよりも対話モード。
  • アンダーラインをつかいすぎて美しくない。クォート3文字とか変すぎる。
    • 二つ関係ないだろ、箇条書きの行分けろよ。
    • アンダーライン使いすぎって__len__ とか? あれのおかげで普段回避しなくても良いし、使い方判らないときに検索しやすいよ。大量の予約語覚えなくていいのは便利だよ。
    • クォート2文字だと、空白文字列と見分けつかないじゃん。
    • クォート3つだと、奇数だから、対応してないエディタでも色分けが動いたりして便利。
  • C言語族っぽい文法にしてよ。変える必要別にないじゃん。
    • 下手に一部だけ似せて一貫性無くなる方が嫌。
    • たとえば C の && と Python の and は別物。名前だけ同じにして動作違うとか逆に判りにくいじゃん。
  • タプルってほんとに使いこなしてる人いるの?
    • めっちゃ使ってる。リストと同じくらい使ってる。
    • むしろ、関数の結果を参照渡しされた引数に入れるとかキモイ
  • 内包表現わかりにくい。あれ英語圏の人にはわかりやすいらしいね、でも日本人だから。
    • JavaやCには無いから、そーゆー言語しか使った事無い人には慣れるまでは判りにくいかもね。
    • でも、リスト作って、forでまわして、リストに追加していくと、最低3行になるんだよね。超便利だから慣れろ。
  • len() が美しくない、ちょう嫌。どこのBASICだよ、lengthにしてくれよ。つか全部オブジェクトにして .length にしてくれ。
    • .length ってJavaの?配列は.lengthなのにArrayListは.size()とかキモイじゃん。
    • lengthのためだけに予約語作って特別ルール作る必要無いじゃん。addとか他の演算子も全部おなじルールで作ってるんだぜ?
  • selfうぜー、ちょううぜー。
    • 別にselfじゃなくてもいいぜ、self推奨だけど。
    • C/Javaは、変数名にオレオレルールでprefix/suffix付けたり、this->/this.付けたりする。
    • Rubyは、そのために特別な記号を決めてルールにした。
    • Pythonは、特別扱いするほどの事もないと判断し、 "this." の方式で統一した。"this"と"self"の違いなんて大した事無い。
    • Rubyのアレは正直うらやましかったりするが、実際に使って見ると、引数と戻り値で済むことが多くてselfあんまり使わない。
  • for in rangeとかさいあく、基本の文がこんな仕様なのはいや。この点rubyイテレータのほうがきれい。
    • イテレータ?意味不明
    • 3..5 みたいな記法のこと?なら、確かにうらやましい。
  • 微妙にクラス機構が後付けなのが汚い。selfいらない。
    • 後付というか、Rubyに比べるとクラスや関数を特別扱いしてない。多少面倒な事はあるかもしれないが、シンプルであって「汚い」というのは違うだろ?
    • オブジェクトの外から見たらメソッド、中から見たらタダの関数ってのは結構良いぜ。
  • ファイル=名前空間がなんか嫌。
    • 気分の問題
  • ボキャブラリが微妙にC言語Unix文化からずれてて使いにくい。あたまわるいから新しいの覚えられないよ、過去の遺産は活用しようよ。
    • C言語文化って、逆にPython文化の命名規則と混ぜたらどっちだったかわかんなくなるじゃん。
    • os機能だったら、ちゃんとそのままの名前使ってるよ。epoll/kqueueとか。
  • 言語組み込み機能が少なすぎる。ライブラリインポートが多くてめんどい。reとかめんどい。いまどき言語コア最小機能主義って。もうちょっと入れようよ。
    • インタラクティブモードなら、普段使うヤツを設定ファイルでimportしておけばいい。
    • 汎用言語だから、どんなジャンルでも汎用に使う機能以外特別扱いしない方が綺麗じゃん。正規表現なんて使わないプログラム大量にあるし、使うアプリでも使う部分はごく一部だろ。
  • ライブラリは結構充実してるけど Perl には劣る。
    • そだね。でも、最近はPythonモジュールだけ標準添付なCライブラリ多いぜ。libxml2とか。
  • 日本語のドキュメントがぜんぜんない。ちょっと深いことをやろうとすると全部英語。
    • 英語のドキュメントがしっかりしすぎてて、わざわざ日本語で劣化ドキュメント書く気になれない。
    • ソースコードが他の言語に比べて読みやすい。名前つき引数とかのおかげでコメントが一切無くても読みやすい。ドキュメントよりソースの方が信頼できる。

総評:とにかく微妙というか、中途半端につかいにくい。いまだにPerlが生きていたり、Rubyにキャッチアップされてるのも納得の出来。これがLL界を制覇したらPerlよりうっとうしい。

総評:他の言語の「常識」を刷り込まれた人には疑問に思うことが多いかもしれないけど、Pythonの開発者だってちゃんと他の言語を知った上で、常識にとらわれずメリットデメリット(書きやすさ vs 読みやすさとか)を比較して、ポリシーを持って設計してる。

でも、ごくまれに、Rubyが羨ましい時もある。Rubyに足りない部分のほうが多いから移行しないけど。