So-net無料ブログ作成
検索選択

なぜAppleはObjective-Cを選んだのか。 [プログラミング]

会社で無理やりObjective-Cやらされてウゼェとか思っている人もいるんでしょうが、まぁSwiftとか出たからいいじゃないですか。言語としてはまだまだひよっこだけど、いろんないいところを受け継いでいるのは間違いないところで、これからOSSになってどう羽ばたくのかは未知数だったりします。

にしてもObjective-CによってAppleは結果的に救われたことになっています。途中でGC入れたり、ARCに変わったり、いろいろ変遷を経てきていますが、Swiftも加わることで使いやすくはなってきています。少なくともOSX当時のObj-Cよりかはマシにはなっているはずです。

ともあれ、何でObjective-Cなんてマイナーだった言語を使い出したのかという話です。それはそもそもOSXの元になったNeXT STEPで開発言語をObjective-Cを使っていたからだといいます。NeXTは使ったことはないのだけれど、初めのXcodeの大盤振る舞いでNeXTで使っていたのかぁと何となく思っていました。

基本的にWebObjectsとかでJavaを使っていた関係で、Obj-CとJavaが混在する形の開発環境になっていたと思う。CocoaなんかもJavaから使えた。何でJavaを捨てたかはいろいろあるんだろうけど、そもそもWebObjectsが普及しなかったということなんだろう。一時期はAppleも企業向けにアピールしていた時期があって、Xserveとかのハードウェア製品もあったのだけれど、ずいぶん前に完全撤退してしまった。サーバハードウェアの技術はMac Proに引き継がれたけれど、今は新しいCPUにもされず放置されている状態。正直、どうでもいいと思っているのでしょう。ゴミ箱同然なわけですw。

それと多分Javaのライセンスがうざかったということもあるのでしょう。Appleは今はLLVMでブイブイ言わせてますが(表現が古いw)、それもgccがウザかったからということなんだろうなと推測されます。要するにGPLがウザかったということなんでしょうね。それでLLVMにお金を投じるようになったみたいです。それと同様にSunのJava縛りが面倒でならなかったのでしょう。だからJavaのサポートを止めてしまった。それは開発の上でも動作環境としてもです。そんなリソース割いてられっかということで。

それと思ったよりか開発者がObj-Cに付いてきてくれたというのもあるんじゃないかなと思う。C++よりかは複雑怪奇になっていないし、メモリの解放さえきちんとやっていれば、C言語の建て増し(ちょっと異質感は否めないが)なのでそんなに難しいこともないわけで。オブジェクト指向としてもプレーンだったし、Xcodeの出来もそんなに悪いものではなかったのも一因だろうと思う。


AndroidではJavaの言語仕様を使ったPureじゃないJavaを使っていて、Sunの後釜のOracleから訴えられているわけですが、それも何とかならないかなぁと思ってしまいます。いつまでもJavaを離さないというのも言語としてどうかと思うのですよ。ビジネス使いとしては、一企業がサポートしてくれる安心感というのもあるのでしょうが、正直OSSが一般的な時代としてはプロプライエタリと言われても仕方ない感じはします。Oracleになってからは特に面倒臭いなぁという感じが増しています。というかオラクルが嫌いなだけだったりしますが。

で、iPhoneがメモリが少なくて済んでいるのも、ネイティブバイナリで動いてガベージコレクションを使わないObj-Cの賜物なのですよね。iOSでもJavaを使っていたら多分Androidと同じスペックじゃないと同程度の性能を発揮できなかったんだろうなと思います。そして、面倒なライセンスの回避もできたわけですし、わざわざ変態みたいにObj-Cを引っ張り出してきた意味があったわけですよね。


AppleはObj-Cを選んだというより、OSXを作るにあたって必要だったし、そのあと他の言語にマイグレーションするような状態でもなかったというだけだったりします。まぁ素のC言語よりかはマシでしょう。少なくてもオブジェクト指向万歳な世代は過ぎ去ったとはいえ、オブジェクト指向自体が当たり前になっているところもあるわけですし、これから先もAppleというメジャーマイノリティの中で使われ続けることになりそうです。今すぐにSwift代替というわけにはいきませんしね、互換性が多少あるとはいえ。


コメント(0) 
共通テーマ:パソコン・インターネット

Twitterまとめ投稿 2017/02/03 [Twitter]


コメント(0)