半分手続き型、半分オブジェクト指向の Python と Java
文字列操作の比較表: Ruby, Python, JavaScript, Perl, C++
これを見ると Python は残念な感じで、Ruby は美しいと感じさせられる。Perl はぐちゃぐちゃだ。
Ruby なら
s = "abc" size = s.length
で長さが求められるのに対し、Python は
s = "abc" size = len(s)
という風に組込み関数を使わなければならない。
len が py3k でも 関数のままである理由に書かれている
1. len()の様にいろいろな型が使う一般的な概念の操作は、オブジェクト指向的なメソッドよりも数学的な演算子・関数の方が判りやすい。
2. いろいろな型が使う一般的な操作が、通常の名前を使ってしまうと、その名前を知らないユーザーがその名前を使ってしまう。
というのは、僕はどちらもそうは思わないんだけど、創始者がそう言ってるんだからそうなんだろうと思う。
Java もプリミティブ型があって、オブジェクト指向ではない、と叩かれたものだが、創始者がプリミティブ型があったほうがわかりやすい、と思ってあえてそうしたんだからそうなっている。僕としては
int i = 10; String s = i.toString();
と書きたいところだけど、これが許されないから Java は好きになれない、という人もいるかも知れない。僕は気にならなかった、というより、初めてのオブジェクト指向言語だったので、気がつけなかっただけなんだけど。