作者: 機械伯爵
日時: 2002/3/18(01:10)
 タイトルの後で「ロックンロールウィドウ・・・」と歌いだした
人は、私と同じ年代の人ですな・・・(山口百恵の歌です)

<カッコ論争継続>
> それも本当に良いのか悪いのか私には判断ついていないです。
> (悪いと完全には言えないと断言できないということは
> OK ってことなのかもしれません (^_^;
>
> 利点
> o タイプが少なくなる

 昔Macintoshを使ってた時に、「マウス・キーボード論争」なる水
掛け論があり、その中に「キータイプの手を休めてマウスを持ち替
えて・・・」というキー論者の言葉があったんですが・・・昔は
「何をバカなことを」と鼻で笑ってたのですが、今となると、マウ
スどころかシフトキーを押すのさえうざったく思うことがあります。

 人間、楽しだすと際限ないですわ、やっぱ。

> 欠点(?)
> o やっぱりブロックは記号で囲って欲しい

 昔はPascalを好んで打ってましたから、その気持ちはわかんない
でもないです。

 begin-endがあたりまえだった時には他の言語のコードは、結構見
難かったのを覚えています。

 まぁ、一回C系言語になれるとそうでもないんですが・・・

 現在では、Forthのように「カッコを使わない言語がいいかも」な
んて思ってますけどね(典型的な極論者です)

> o 空文 で pass とか書かなくてはいけないのは
>   ちょっとかっこ悪いかも?

 それは考えてなかったなぁ・・・

 カッコ悪いですか?

> 良く分かっていないのは Python で関数定義の () はなぜ
> 必要なのか?です。(引数列の終端として「:」がつくので
> 素人考えでは要らないのでは?と思ってしまったのですが…)

 呼び出しについては「P は〜」の第三回を見てもらうとして、関
数定義については、正確なところは分かりません。

 呼び出し方について統一したかったというのがたぶん正解なのだ
ろうと思いますが、それならスーパークラスの無いクラス定義も()
があってもよさそうなものだと思うのですけど、どうなんでしょう
ね。

 さらに、関数の引数やクラスのスーパークラスはタプル扱いらし
いのですが、タプルのカッコは省略できるわけで、ここらへん、統
一感はちょっと無いですね。

 結局のところ「それっぽくみえるから」という程度のことに落ち
着くような気がしないでもないです。

 感覚に反したコーディングスタイルというのは、ミスを誘発しや
すいと考えると、一応それが理由でもおかしくないと思われます。

 JavaScriptのように「コンストラクタを記述することによってオ
ブジェクトを定義する」というようなスタイルも存在しますが、私
はああいった書き方にはちと違和感を覚えますので、クラス定義を
区別したのも、そこらへんの感覚じゃないかな、と思います。

 ・・・と、説明してると、今度は「じゃぁ、スーパークラスをタ
プルで書くのは感覚的に許されるのか?」という話題になりますね
ぇ・・・(汗)

※個人的には、上のやり方はすっきりして気に入ってるのですが、
  なんか変だ、と思う人も多いでしょうね・・・

 さらに、クラス定義の外で(正確な意味での)メソッド定義が出
来ない、という、Javaのような記述方法も、C++になれた人には「な
んだかな」と思うかもしれませんね。

 Pythonの言語設計はかなり慎重に行われているのは確かですが、
最終的な判断基準として「わかりやすさ」という、どうとでもとれ
るものを選んだ時点で、結局は設計者以外にははかりしれない部分
も残っているようです(Pythonに熟練すれば、もしかしたらわかる
かもしれませんけどね)

 スーパークラスのメソッドを指定するときに、superキーワードも
thisキーワードもなく、ベタで主体を指定して引数として渡すよう
な、完全に手続き指向的な部分もありますが、これも「分かりやす
い」のか「分かりにくい」のかは、異論があるところでしょうねぇ。

 というわけで、私的には「なんとなくわかったところ」から、少
しづつ考えていこうかと思っております。


   機械伯爵