キメラで開発すると言うこと

Cは、使います。仕方ないので。組み込みでは相変わらずC専用でクラスとか使わせてもらえなかったりするので。ポインタを使うときには、それがどの実体の参照なのか(text,data,stack,heap)を考えながら組みます。
C++も使います。コンシューマで開発するのなら今はこれですね。スマートポインタ使えるかどうかは賭みたいなもんだけど、STLが使えるだけでもだいぶ楽ですね。昔の日立のコンパイラはテンプレート自体が使えなかったような気もするけど、いまさらですよね(同時期のMetroworksのは対応してた)。
JavaC#を使っていると、「そもそも全部参照」として考えてさほど問題ないので(オートボクシングのおかげだけど)、ポインタがどうのとか、実体がどこにあるかとか考えなくても困りません。


でも、Objective-Cは相変わらず違和感があります。次のソースはコンパイルできません。で、エラーで止められるたびに「ああもう!」と慌てて治すのです。

for(NSObject anObject in anArray)
{
   [anObject method];
}

判ります? anObjectをポインタ型にしなくちゃならないんですよ。\[\]意外は基本的にC言語なので、オブジェクトは当然参照じゃないとまずいわけで、実体を列挙することが出来るわけはないのです。もちろん\[\]のレシーバも参照である必要があるのですが、\[\]がついていると参照だったかどうかなんてことを意識しないので、たまに*に引っかかるのです。
うぉぉ、キメラ。
素直なJavaC#に慣れるとメッセージ式以外の部分が引っかかります。いっそ全部メッセージ式で……と思ってはいるのですが、CoreGraphicsとかってメッセージ式とCの関数が混在してるんですよね。描画コンテキストという考え方もないし(正確には、描画コンテキストがthiscontextに隠れているので、明示しなくてもいい)。


と、おもったら、案の定描画コンテキストを作っている人がいました。UEIの布留川さん。やっぱりいろんな環境をとっかえひっかえしている(雑食的にはFlorianといい勝負)人にはあの統一性のなさは我慢ならなかったか。