Python

PythonJavascriptの皮をかぶったLispである。
あるいは、Lispの関数をまとめてオブジェクト指向にしたらJavascriptができちゃいました、でもいい。

Pythonでは全ての中心にあるのは、first class objectである関数で、それを名前空間でくるんでやることでオブジェクト指向にしたてているようだ。Rubyでは「全ての中心はオブジェクトである!」という良くも悪くも強い一貫性を持っているが、Pythonではオブジェクトの向こうに露骨に関数が透けてみえる。関数が中心だけに関数の取り扱いは非常に楽で、何かの関数をひっつかんで、全然関係ないオブジェクトのスロットに動的に代入しちゃったりできる。そういう、プログラマしだいで無茶なことができちゃうとこが受けるところでもあるんだろうなあ。どっちがいいのかは正直良くわからない。
ただ、関数を束ねてオブジェクトにするところでもその他のところでも、一貫性があまり感じられないのも確かで、一言でいうとちょっと信用ならない。バージョンアップ時に、関数内の変数のスコープが、動的から静的に変更されているのには驚いた。言語デザインにかかわる重大な変更じゃないのかな、それ…