Objective-C が成功した理由

iPhone/iPad のアプリを作るために Objective-C の勉強をしているのだけど、これまで C++JavaActionScript を使ってきた自分にとっては、十分に変態言語でした...

文法的な気持ち悪さというのは、もういろいろなところで触れられているけど、「慣れ」を別にしても、最新のトレンドに沿っていないという点で、他の言語とは異質な存在であるとは思う。

自分の考える最新の言語トレンドというのは次のようなもの。

  • 言語であればガベージコレクタのある仮想マシン上で動くこと
  • UIであればXMLやHTMLのように宣言的に記述できること

Adobe FlexMXML + ActionScript)や MicrosoftWPFSilverlightXAML + C#/VB)は、この2つの特徴を持っているし、それ以外のスクリプト言語も1つ目の特徴は持っている。

Objective-CCocoa の組み合わせはこのどちらの特徴も持っていない点で、最新のトレンドからは大きく外れている。

ところで、最新の言語トレンドがこうなった理由を考えてみると...

  • ガベージコレクタにメモリ管理を任せることで安全にプログラミングできるようになった
  • 仮想マシン上で動かすことで環境に依存しないプログラミングできるようになった
  • 宣言的にUIを定義することで画面を簡単に設計できるようになった

といったメリットがあったからで、どちらかというと、リソースに余裕がある環境で大量生産のできる大富豪プログラミング的な開発環境が整ってきたのだと思う。

Objective-CiPhone で成功したのであれば、その理由はスマートフォンタブレットのようにメモリもCPUも限られた環境で、開発生産性と性能を両立させるのに向いている開発環境」だったから。
スマートフォンのような環境ではオーバーヘッドのある仮想マシンは不利だし、CPUやメモリ実装量がわかっているのであれば開発者がメモリ管理を意識したコーディングをすることにも意味がある。だから、C と同じレベルでプログラミングができて、オブジェクト指向も使える Objective-C のメリットが活きてくる。

一時期勢いのあった WebObjects は、Java の開発環境が整っていく中で JavaEE に対してのアドバンテージを失って淘汰されてしまったわけで、Objective-C + Cocoaスマートフォンの開発環境として生き残ったのは Apple にとってはラッキーだったのかもね。

詳解 Objective-C 2.0 改訂版

詳解 Objective-C 2.0 改訂版