Objective-Cとは、C言語をベースにSmalltalk言語のオブジェクト指向を取り入れた言語である。
概要
開発者はBrad CoxとTom Love。C言語の上にSmalltalk風インタプリタを乗っけただけという、非常に直球な設計をしている。C同様気をつけないと危ない言語なのだが、変に煩雑な安全装置を付けるよりは、これぐらい割りきった作りの方がいいのかもしれない。分かって使う分にはとても便利なので、ハック魂のある人には割と好かれている。
二人はこれで言語ベンチャーを立ち上げるも、大ヒットしたという話は特にないよう。そのまま行けば埋もれた言語で終ったのだろうが、新興企業のNeXTがライセンスを取った事で、潜在能力の高さだけは世に普く知られるようになった。
NeXTがAppleに買収された後は、Carbonに代わってMacintosh(Mac OS X)のCocoa、iPhone OS(現:iOS)のCocoa Touchのフレームワークの主力言語として使われている。なんというか、20年遅れて春が来た感じである。
C言語の完全上位互換なのでC言語的な記述も許されている。オブジェクトシステムが動的であることが特徴。「Objective」な部分は向き不向きがかなりハッキリしており、大まかな内容をざっくり書くには非常に便利な反面、細かいチューニングを行うにはパフォーマンス的にも記法的にも全く向かない。そういう部分はCかC++で書いて「Objectiveなグルー」を書くのが粋なスタイルである。ヘンテコな最適化技法も多く、ハマると結構奥が深かったりする。プログラマに出来ることは制限しない!
最近Objective-C2.0として近代化し、ガベージコレクションが付いたりC#風のプロパティが付いたりした。
でもiPhone OSではリソース制限が厳しいのでAutoreleaseで解放をする。
最新版ではAutomatic Reference Countingという怪しさ満点の拡張が施され、参照カウントなんだけどGCチック(でも命名規約は守ってね!)な変態言語に。それどころか10.8でガベージコレクションが廃止されるという斜め上の展開である(そんな言語Objective-Cだけだろう)。Appleがコンパイラに投資した結果がこれだよ!
CocoaとInterface Builderを使ったHello world
Interface BuilderではNSButtonをAppControllerのアクションに接続、NSTextFieldをAppControllerのtextFieldアウトレットに接続
関連項目
- 3
- 0pt