ずっと、Object-C なのか Objective-C なのか覚えられなかったんだが、最近ようやく間違えなくなってきた。Objective-C。
Objective-C はC++とちがっていい言語だという意見をときどき目にし、耳にしていたので、きっと良い言語なんだろうなとぼんやり思いつつ、その正体を知らないまま過ごしていた。
で。
先日、詳解 Objective-C 2.0をだいたい読んだ。
この本自体は大変良い本だと感じたんだが、問題はObjective-C。
たぶん、
[[[obj foo] bar] baz]
の括弧の具合が気持ち悪いとかいうのは趣味の問題なんだろうと思う。
つらいと思うのは、対になる処理を書く方法がないこと。
C++ならデストラクタ、C#なら using を使って書く、ファイルを閉じたりメモリを開放したりする処理が確実に行われるようにする仕組みが(たぶん)ない。
GCや参照カウントはあるが、前者はいつ開放されるのかよくわからないので困る上iOSでは利用できないし、後者は結局手動でC言語から進歩してない。
デストラクタや using のたぐいがないのに例外機構が言語仕様として入っているのもちぐはぐで、どうにも使いようがない。
クラス階層がどうかしているのは古い処理系の名残なので仕方が無いところだと思うが、それにしたって NSString が NSMutableString の親クラスなのはあんまりじゃないかと思う。
NULL がブラックホールなのも恐ろしい。
というわけで、仕事では使いたくないなぁと感じるものの、面白い言語だとは思う。拡張子mmにして、いろいろラッパ書いて頑張ろうと思う。