Objective-C についての言及は聞いたことがありますが、自分で使用したことはありません。一般的に、またC++に関連して、みんなの意見がどうなのか興味がありました。より有用またはより有用でないプロジェクトのタイプはありますか?
11 に答える
他の多くの人と同じように、iPhone のおかげで Obj-C を見始めたところです。私は多くの C++ と C# を実行しましたが、Obj-C は、C に Smalltalk のようなメッセージングを追加するという点で、OO に対して基本的に異なるアプローチを持っていることがわかります。C++ と同様に、基本的には依然として C 互換ですが、OO 拡張により任意のメッセージを任意のオブジェクトに送信します。その意味では、C++ や C# のように静的に型付けされているわけではなく、オブジェクトが実行できることがクラスに関連付けられています。Obj-C では、オブジェクトがサポートしていなくても、オブジェクトにメッセージを送信できます。オブジェクトは、何をすべきかわからない場合にそれを転送できます。
非常に優れた点は、実行時にインターフェイス (プロトコル) を追加できることと、既存のクラスのメッセージ ハンドラーをインターセプトして非表示にする独自のハンドラーを追加できることです。
全体として、Ruby や Smalltalk で行うように、メッセージ処理に関してはより多くの柔軟性があります。このタイプの OO を C に移植するのが良いアイデアかどうかはまだわかりませんが、ある意味では C++ のアプローチは C の元のアイデアとうまく調和していますが、一方で Obj-C の OO アプローチはより優れています。 OO 純粋主義者が好むもの。
- クラスはオブジェクトです
- 動的型付けとオプションの静的型付け
- カテゴリー
- メッセージ送信
- 表現力豊かなメッセージ構文
- 内省
- 動的ランタイム
- 自動ガベージ コレクション
- C インサイド
- C++ に堪能
- シンプルさ
- Apple テクノロジーへのアクセス
私はここでは少数派であることを知っていますが、objective-c の構文は c++ よりも少しきれいだと思います。
Objective C の OO 機能は、静的 (コンパイル時) 型付けの代わりに動的型付けを使用します。それが 2 つの言語のアプローチの主な違いです。それが利点であるかどうかは、静的型付けと動的型付けについてのあなたの意見に依存します。
私の意見では、Objective-C の構文は最初は少し「奇妙」であると思います。特に、C/C++ のバックグラウンドを持っている場合 (私がそうでした) はそうです。Mac または iPhone 用のアプリを作成する予定がある場合は、Cocoa 開発が最適です。この春、約 1 か月間 Mac で開発を行う機会があり、Qt ライブラリを使用して C++ で記述することを選択しました。これは、Qt ライブラリに精通しており、時間が非常に重要であったためです。
Macをお持ちの方はぜひ!そこには多くの情報があり、開発のための優れたツールがいくつかあります。
Objective-C を非常に優れたものにしている理由の 1 つは、言語ではなく (それは言語の大きな部分ですが)、それに付随する Cocoa (または CocoaTouch) フレームワークです (少なくとも objc ユーザーの 99% にとって ;-)
実際には、私は昔の「古典的な」Mac の時代に C++ プログラマーでした。Objective-C、Cocoa、Mac OS X に切り替えると、生産性が大幅に向上することがわかりました。どれだけ生産性が向上したかを正確に言うのは難しいですが、50% から 100% が適切だと感じています。
Linux を実行している場合は、Cocoa との互換性が非常に高い GNUStep をインストールできます。これにより、Mac を所有していなくても、Objective-C/Cocoa 開発を始めることができます。[私の意見では] Objective-C を学習するための最良のリソースは Apple にあります。
http://developer.apple.com/referencelibrary/Cocoa/index.html
IPhone などの一部のプラットフォーム用にコーディングする場合は、Objective-C が必要です。また、Objective-C は、多くの人が静的 (コンパイル時) よりも好む動的 (実行時) 型付けも使用します。
WebKitは元々C++プロジェクト(KDEのkhtml)でしたが、後にAppleによってCocoa環境との互換性を高め、Objective-Cレイヤーを取得しました。
C++ よりも動的であり、Smalltalk の影響を強く受けています。私はそれが C++ よりも「優れている」とは思いません - 逆に、そうする人もいます。
MacとiPhoneの開発では、間違いなく優れています。最新バージョンにはGCがあるので、それが好きなら、おそらくC++よりも好きになるでしょう。