作者: 機械伯爵
日時: 2007/10/3(11:55)
 機械す。

 まぁ、あんまりPython特化の話なら移動しますが……

>   分からなかったのはまず「文字は不変オブジェクト」ですね。
>   不便すぎて理解できない。

 この点は、普通は「文字を変更するとわかりづらいから、新しく作って
つかうモノなんだよ」という話で終わるんですが、まぁ、裏を言えば、
Pythonのシンボルに当たる「名前」が全て、「文字型(クラス)」
でできているので、可変にするとメモリを食いすぎたり、辞書の
インデックスとして使えない(Pythonの名前空間は基本的に辞書で、
辞書のインデックスは不変オブジェクトのみ)とか、いろいろ不都合が
あるようです。

 まぁ、可変文字型は文字型を拡張してすぐ作れるので、頻繁に使うなら、
クラス定義してしまいますが、確かにばりばりに文字列を変化させて使ってる
他言語のプログラマからみれば『奇怪』ですよね。
 
>   もしや class xList(list): は list を継承しているのかもしれないけど、

 はい、そのとおりです(クラスは括弧の中でタプルとして書きます)

> () の中に収まってるとなかなかそう見えない…。

 慣れですが……慣れないかもなぁ(笑)

> join は文字のメソッド?そ
> れ以降の分はライブラリの中に押し込めるのでなければこの書き方はきらい、
> という感じです。

 joinの書き方は、確かに変ですよね(素直にjoin(sep,str_listでいいと思う)
 
>   ぼかぁ () なし記法は好きじゃないので積極的には使いませんね。ただメソッ
> ドなのかプロパティなのか、みたいな区別をしっかりつけるのも面倒くさい
> (ひどい)ので、「付け忘れても動く」という Ruby のスタイルは大好きです。

 Pythonでは、プロパティは代入子=を使いますし、メソッドは()で渡します
ので、完全に異なっています。

 RubyはSmalltalkと同じく外部からのスロットへの代入はできなかったと思うの
ですが、Pythonはそれが本来の使い方で、プロパティは後の追加機能です(いわ
ゆる「内臓が外からいじれる状態」(笑))

 ここらへん、キモチ悪い、というのはあるかもしれませんね。

※ことオブジェクト指向プログラミングの扱いに関しては、RubyとPythonでは
 かなり思想が違います。

 ……が、
 
> # メソッドはたまたま function オブジェクトを持ったプロパティ、という
> # JavaScript も今は大好きです。

 ……JavaScriptのオブジェクトに対するアプローチは、癖や慣れで済まされる
問題を超えていると思う……

 完全な関数ベース言語にオブジェクトの書式を放り込んだ、なんだかわけ
わかんないモノですから、JavaScriptでオブジェクト指向プログラミングを
教えるのだけはやめたほうがいいでしょう。

 同系統のECMAScriptでも、クラス定義できる拡張があるほうが、私は好き
です(ActionScriptとか、TJSとか……)

 ……というか、ECMAScriptの仕様書を見たら、classというキーワードは
予約されてるので、とっととちゃんとした書式を作ればいいのに……

 /機械伯爵/