半分手続き型、半分オブジェクト指向の 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 は好きになれない、という人もいるかも知れない。僕は気にならなかった、というより、初めてのオブジェクト指向言語だったので、気がつけなかっただけなんだけど。