Will Cocoa kill Carbon?

ADC のメーリングリスト、carbon-dev が熱く盛り上がりました。発端は、Apple のエンジニアです。

OK, but keep in mind that Objective C is probably the most common language being used today to provide new system services in Mac OS X. It will become more and more difficult to build a fully savvy Mac OS X application without using some Objective C-based APIs. It would behoove all Mac OS X developers to become familiar with Objective C.

意訳

いいでしょう、でも今では Objective C が Mac OS X の新しいシステムサービスを実装する言語として最も一般的なのだということを覚えておいて下さい。今後は、Objective C の API 抜きで洗練された OS X アプリケーションを作るのはどんどん難しくなるでしょう。つまり、Objective C に習熟することは、全てのMac OS X 開発者にとって義務のようなものなのです。

これを読んだ C++ な開発者から「Will Cocoa kill Carbon?」と題した flame 気味のメールが届きました。この人の言い分は「C++ は面白いが Cocoa はつまらん、だから C API でも新機能を使えるようにしてよ」になります。実際問題、Cocoa ではできて Carbon ではできないことがたくさんあります。しかし、その逆もまたしかりなのです。


Cocoa を使えばいいじゃん」と言うのは簡単ですが、過去に開発してきた資産というものがあるし、この C++ Guy が言うように、忙しいエンジニアとしては学習・移行に要する時間がもったいないというのも良くわかります。ObjC は言語機能そのものはコンパクトですが、クラスライブラリは巨大ですからね。愚痴の一つも言いたくなります。


では、OS X の中で ObjC の地位が年々高まっているのはなぜなのか。これについても、Apple のエンジニアがクリアーに答えています。

Most developers at Apple these days are experienced with using ObjC as an implementation language, and find its extensions to C (and the availability of useful features in Foundation and AppKit) to make their development more productive. Therefore, most new technologies are implemented using ObjC and the various ObjC class libraries, rather than in straight C. Therefore, a lot of those technologies only offer an ObjC API.


Essentially, it's a choice made by Apple engineering to increase the productivity of our engineers.

意訳

多数の Apple 社内開発者が最近では ObjC を使っていて、C 言語をベースに拡張してあるというその言語的な特徴と、Foundation Kit や App Kit といった便利なクラスライブラリの存在によって、彼らの開発作業がより生産的になると感じています。このため、先進的な機能の多くは ObjC によって実装されているのです。このことはまた、先進的な機能の多くが ObjC の API しか提供しないことにも繋がっています。


基本的に、これは我々の生産性を高めるための選択なのです。

ふーむ。確かに ObjC と Cocoa、それに Interface Builder の組み合わせはとても生産的だし楽しいと思います。でも、STL や Boost を使った C++ プログラミングだってとても生産的だし、一味違った別の魅力があるのです。趣味のレベルなら「どっちも楽しい♪」で能天気にのほほんとしてればいいのですが、仕事ではなかなかそうもいかないですよね。


いやはや難しいなぁと思いながら、我が身の幸せを噛み締めました ;-)