Mac app,iPhone appのスタンダード言語 Objective-C
このページでは『Objective-Cって何?Cと何が違うの?またC++とは?』など、
Objective-Cに関心はあるが、疑問をお持ちのみなさんのために簡単にObjective-Cについて解説しておきます。
Objective-CはiOS,MacOSでのみ動作するC言語を拡張したAppleオリジナルの言語です。
特徴としてはC言語はもとよりC++もコンパイルできます。
もともとMacOSはUNIX(主にワークステーションで使われるネットワークに特化したOS)から派生して開発されたものです。
かれこれ二十数年前はフォルダを移動するのにもコマンドによる命令が必要でした。
ですがUNIXが「Open Window」というGUI(グラフィカル ユーザー インターフェイス)を開発、
搭載したことにより、今日のウィンドウによるコントロールが可能になりました。
それを真っ先に真似(といったら失礼かもしれませんがかもしれませんが)してパーソナル・コンピューター用に取り入れたのがMacOS(現在のバージョンはOS-X。オーエス テン、と読みます。)です。
Windowsも同様です。これを読んでくださっているみなさんはジョブズ氏とゲイツ氏がその開発・発表に当たって一悶着あったのはご存じかと思います。
話をObjective-C戻します。プログラムを多少なりかじった方の中には「Objective-CはJavaに似ている」
と思われているかもしれませんが、歴史的にはJavaがObjective-Cの影響を受けています。
決定的な違いはObjective-Cはコンパイルが必要な言語、
Javaはコンパイルを必要としないインタプリタであると言うこと。
しかしながらObjective-CはC言語を拡張したものですので、Cを知らなければ 本当の Objective-Cを書くことはできません。
Objective-Cのオブジェクトを用いた実装のランタイム性能は確かに純粋なC言語に比べれば低速ですが、
よほど大規模なコーディンをする以外は致命的な問題にはなりません。
プロトコル 、 デリゲート 、 カテゴリ など、Objective-Cや動的オブジェクト指向プログラミング言語に備わった機能は読みやすく、
拡張性に優れています。
またObjective-Cのオブジェクトは、実行時にはすべてidとして評価されることを覚えておくと、
コードを書いたりデバッグをする際のヒントになります。
ですので、Objective-Cのコーディングを始める前に、一度はObjective-C Runtime Programming Guideをよくお読みになり、理解しておくことをお勧めします。
ここまでは良いことばかり書いてしまいましたが、デメリットもあります。
それはAppleの環境では、あらゆるプログラマが書くコードは5年以内( Objective-Cに限ればほぼ2、3年以内 )に動作が不安定になります。
これはObjective-Cに限りません。AppleではCやC++のAPIもどんどん削除され、追加され、ときにはフレームワークごと削除されます。
あきらめるしかありません。
事実Appleはさらに進化させたSwift言語を開発しました。正直プログラマ泣かせ、といってもいいでしょう。
それを承知の上、iOSのコーディングに望んでください。