Objective-C
»
以前はC++を使用していましたが、やりたいことがある度に言語仕様にキーワードが追加される感じ(仕様の例外が増えていく)で、いい印象はありません。
ところが、最近、Objective-Cを勉強してびっくりしました。ひとつの言語仕様に、Cとオブジェクト指向言語の2種類の言語が同居しています。違和感というか、プログラムを読みにくいというか。まさにマクロ的に拡張した出自がわかります。これのオブジェクト指向部分のベースになったSmalltalkは、Smalltalk-80を昔に少しだけかじったことがありますが、C等の手続き型言語から見ると非常に変わっていて、本格的に使う機会がなかったこともあり、完全には習得しないままに終わりました。Objective-CはSmalltalkほど徹底したオブジェクト指向ではないので、とっつきは良いですね。
iOSがなければ、Objective-Cもここまで使われることはなかったでしょうし、僕も勉強することはなかったはずです。まさか再びSmalltalkの話題に出会うとは思ってもいませんでした。
今回、最初に読んだのはProgramming in Objective-C 2.0でしたが、入門書で言語仕様が体系的には説明されていなかったので、改めてThe Objective-C Programming Languageを読んでいます。
それにしても、クラス変数が無かったり、参照カウントに寄るオブジェクトの消滅メカニズムがある割にインスタンス初期化が言語仕様としては無かったり、言語仕様と実装のバランスが悪い感じで、違和感たっぷりのままです... 僕の勉強はどうなるでしょうか。
SpecialPR