web-dev-qa-db-ja.com

Appleコミュニティ以外ではObjective-Cがあまり人気がないのはなぜですか?

Appleコミュニティ(MacおよびiPhone開発者を含む)は、主に開発言語にObjective-Cを使用していることを知っています。しかし、WindowsやLinuxの世界など、Appleコミュニティ以外ではObjective-Cを使用する人はあまりいないようです。

Objective-CがAppleコミュニティの外では特に人気がない理由は何ですか?

43
Tattat

この質問についてのもう1つの考え方は、Objective-CではなくC++がなぜ「オブジェクト指向C」になったのかということです。

私は1991年にC++を学びましたが、Objective-Cは(NeXT以外の)誰も使用したくなかった奇妙な小さな言語でしたが、C++はホットなもののように思われました。私はその理由を思い出そうとしてきました、そしてそれは4つのことに要約すると思います(AT&Tを背後に持つC++を含めると5つ):

  1. 機能:それでも、C++にはObjective-Cよりも豊富な機能セットがありました。
  2. 構文:Objective-Cの構文は、C++よりもCから大幅に変更されています。
  3. パフォーマンス:Stroustrupは、C++の機能をCに簡単にマッピングできるようにすることに焦点を当てたため、(理論上は)C++を使用してもパフォーマンスが低下することはありませんでした。また、 "inline"キーワードを慎重に使用すると、C++よりもCよりもパフォーマンスが向上する可能性があります。今でも、パフォーマンスが重要なプロジェクトでObjective-Cを使用する方法はありません。
  4. スタイル:比較的強力で静的な型付けが流行でした(正当な理由による)。

したがって、Objective-Cと比較すると、90年代初頭のC++は、Objective-Cよりもファッショナブルで使い慣れた構文を使用して、パフォーマンスのペナルティが少ない多くの機能を提供しました。

22
Dave S.

これは複雑な質問です。要するに、おそらく答えはオペレーティングシステムの時代とそのルーツにあると思います。

  • UNIXCです。
  • LinuxはUnixの真っ直ぐなクローンとして構想されており(細かい、これは少し不正確ですが、この議論には十分に近いものです)、そのため、多かれ少なかれCで書かれています。
  • Windowsは古いオペレーティングシステムです。そして、ハックをWindows 3.1まで遡って積み重ねることによって構築されたものです。 C++は非常に好まれ、.NETではC#です。

    この新しい流入は、もちろん、Microsoftがそのプラットフォームに関して持っているあらゆる議題に基づいています。

  • Mac OS X;一方、(比較的)若いオペレーティングシステムであり、その新しい部分(まだかなり古いものの、NeXTから継承されているものなど)はすべて「Hey!Why not?」という理由でObjective-Cに基づいています。

    下位互換性はMac OS X 10.0の優先事項のリストに含まれていなかったため。 C/C++ベースのToolboxとCarbonはスティックの端にあり、オペレーティングシステム全体は多かれ少なかれNeXTSTEPのスキンバージョンとして作成されました。

Obj-Cの問題は、言語の能力がかなりの規模のフレームワーク、システムへの一般的な高レベルの統合などに由来していることです。下位互換性を完全に損なうことなく、このような優れたjiveを取得することはほとんど不可能であり、そのため、あえてこれを実行しなかったプラットフォームでは、決してチャンスがありません。 Appleは(当時)小さくて献身的なユーザーベースで、これを敢えて行い、金を打った。

マイクロソフトは現在試みていますが、私の考えでは、失敗しています。 (「失敗?!.NET !?方法は?

編集: OpenStepをLinuxに移植しようとするプロジェクトがいくつかありますが、それらは少し扱いに​​くく、使いにくいものです。問題ドメインが小さいNS/OSライクの小規模なプロジェクトもありますが、それは困難な作業です。

20

私は最近書店の読書 プログラミングの首謀者 に立っていました。そこでは、プログラミング言語の作成者が彼らの作品について話します。 Objective-Cに関する1つの章があり、Tom Love(Objective-Cの作成者の1人であり、Brad Coxと一緒に)に、なぜC++がここまで進んだのかを尋ねられましたが、Objective-Cはそうではありませんでした。

なぜObjective-CよりもC++が頻繁に使用されたと思いますか?

Tom:後ろにAT&Tモニカーがありました。

それだけですか?

トム:そうだと思います。

今日のObjective-Cについてどう思いますか?

Tom:それはまだ存在しています。どのようにそのことについて?

17
nevan king

Objective-Cは、上を通過するメッセージの構文糖の薄い層(2.0で少し厚い)にすぎません標準[〜#〜] c [〜#〜]。最も基本的なオブジェクト指向でさえ、長い間独自仕様であったランタイムライブラリによって提供されます。慣性は言語使用において重要な要素です。

特にGUIsで輝きますが、それをサポートするツールキットはAppleと、ほとんど不明でキャッチアップ再生GNUStepです。

Objective-CにはGUIsの外にいくつかの値がありますが、インポートされた拡張機能を使用すると思います[〜#〜] c [〜#〜]、システムコードであっても、システムのほとんどが機能することを意図していないため、代替コードを選択する理由はほとんどありません。

12
user14554

私の頭の中では、C++はObjective-Cよりも古いと信じており、この理由だけでなく、はるかに大きなユーザーベースを持っています。 OCがどこに来ても、C++はすでにそこにありました:)

また、C++にはより多くの機能があります。多くの人が多くの機能に感銘を受けています。そして、より多くの研究開発が注がれました...など。基本的に、勢い。

4
Carl Smotricz