try catch -> setjmp longjmp

http://homepage.mac.com/mkino2/spec/objectiveC++/objectiveC++.html

http://mput.dip.jp/essay/log2002-12

これだけ。 longjmp は呼ばれた瞬間に問答無用で関数スタックを巻き戻して setjmp の場所まで移動させてくれます。後処理いっさいなし。メモリリーク発生しまくり。 Objective-C なら NSAutoreleasePool を外側で保持して [anInstance autorelease] しまくればいいだけの話ですが。

ガーベジコレクタのある処理系なら、C言語系で(簡易)例外機構が使える。たしかrubyがsetjmp実装してたはず。
ないなら普通に作ったらメモリリークするだろう。


Objective-COOP言語としては結構読みやすい部類なんじゃないだろうか。[self message]だかんね。
self.method()も読みやすい。しかしselfを省略可能な言語が多いので、大抵省略されてしまう。そうすっと短いコード上ではOOPじゃない記述でも違和感がないんだよね。Cで書くのと意識が変わらん。
メソッド、という言葉とメッセージという言葉も結構クセモノだと思う。

self.method()だと「メッッセージ受ける人 メッセージ」なので
人間の思考と馴染む…可読性が高いと思うのだけれどもなぁ。
perlのデフォルトの動作(なんの記述もないのに勝手に$_にXXを代入する)が便利だけど可読性を低くする、という意見には賛成してくれる人は多いと思うけど、上記は「アホか」と思う人が多いでしょうな。
あ、スクリプト言語の場合はデフォルト動作万歳です。スクリプトなんだもの。