質問

私は長年、C、C++、C#、およびその他のいくつかの言語でプログラミングをしてきました。主に Windows と Linux 向けですが、組み込みプラットフォーム向けのプログラミングも行ってきました。最近、サイドプロジェクトとして iPhone プログラミングを始めたので、Apple II の時代以来初めて Apple プラットフォームを使用しています。Mac OSX、Xcode、iPhone SDK に来ている他の開発者はどう思っているのか気になります。これまでのところ、私の感想は次のとおりです。

  • Mac OSX:非常に混乱するため、開いているウィンドウが多すぎて、何がどこにあるのか分からなくなりがちです。幸いなことに鳥瞰図がありますが、それがなければ私は道に迷ってしまうでしょう。少なくともシェルに関しては使い慣れたものがすべて揃っているので、とても助かります。

  • Xコード:私が使い慣れている VisualStudio や Eclipse の 2 つの環境ほど良いとは感じません。慣れることはできると思いますが、Apple は Eclipse を使用したほうが良いのではないかと考えています。すべての窓がくっついている設定を見つける前は大嫌いでしたが、今では我慢できるようになりました。

  • iPhone SDK:確かに奇妙だ。Apple が自社の環境をコントロールしたいという気持ちは理解できますが、このご時世ではそれは少し下品に思えますし、開発者の善意を破壊することで多くのものを逃していることになります。

  • 目標-C:何年も前からその存在は知っていましたが、一度も見たことがありませんでした。構文は不快ですが、実際にはこの言語に非常に興味をそそられています。これは、C++ と C# の間の興味深い 3 番目の部分だと思います。どちらも私はとても気に入っています。Apple テクノロジーの人気の高まりにより、Obj-C が Mac のサンドボックスから抜け出す可能性はありますか?

あなたの考えを読んで興味があるので、

アンドリュー

役に立ちましたか?

解決

私もあなたと同じ立場です(ある程度)。私は .NET 1.0 以来、7 年間 C# で開発してきました。ここ数週間、私は Cocoa と Objective-C を独学で勉強してきました。これが私の感想です(あなたの感想と合わせてメモしてください)

  • 乱雑さが問題になる可能性があるという点では同意します。私は XCode で開発するときにスペースを頻繁に使用する傾向があります (XCode を 1 つのスペースに、Interface Builder を別のスペースに、Instruments を 3 番目のスペースに配置します)。Leopard をお持ちでない場合 (したがってスペースがない場合)、Command + H を使用してアクティブなウィンドウを非表示にします。これを使用すると、かなりクリーンになる傾向があります (ただし、command-tab キーを押して別のアプリに移動するときに、現在のウィンドウを自動的に command-h で移動できれば便利です)。

  • XCodeがますます好きになりました。私は Visual Studio が嫌いです。Visual Studio は不安定で、遅く、そしてまあ、ちょっとひどい IDE だと思います。比較的、XCode は高速で安定していることがわかり、ファイルの整理とフィルター処理が気に入っています。XCode のショートカットについてはあまり詳しくありませんが、あるクラスから別のクラスにすばやく切り替える方法があることを願っています (ReSharper の Ctrl +n ショートカットと同様)。ユーザーへの表示方法に関しては Intellisense の方が優れている可能性がありますが、基本的にテンプレートを作成し、Ctrl + / を押してメッセージ内の次の引数にジャンプできる点がとても気に入っています。

  • 私は XCode のドキュメントが嫌いです。ヘルプシステムは最悪、そして何らかの理由で 一度もない 私が探しているものを見つけます。知りたいことは何でもグーグルで検索してしまうんですが…ドキュメントが改善されることを願っています。これが今私の最大の牛肉です。

  • 私は Mac デスクトップ用の完全な Cocoa フレームワークを検討しているので、まだそこまでは到達していません。これまでのところ、私は自分が見ているものを本当に本当に気に入っています。1 つ言えるのは、iPhone SDK でガベージ コレクションが許可されていればいいのにということです...

  • Objective-C - 使ったことはありませんが、これが初めての試みです。最初はメッセージングの構文と角括弧に少し戸惑いましたが、だんだんと慣れてきました。メソッドをざっと読んで、そのメソッドが行うメッセージ呼び出しを確認するのは非常に簡単です。使えば使うほどObjective-Cがいい感じになってきます…。ただし、テンプレート/ジェネリックが言語に追加されることは歓迎されます。

全体として、私の Mac 開発への取り組みは楽しかったので、(今日から)仕事を始めるのが楽しみです。イェーイ!) 実際の Mac/iPhone プロジェクトで。

他のヒント

私もあなたの意見に同意します。Microsoft 開発ツール (および Eclipse) から XCode に移行するのは、ある意味過酷です。XCode はまさに...いくつかの点で未完成。確かに、VS や Eclipse に期待するような洗練さはありません。

SDK も似ていますが、その多くは文書化が不十分で、何かがあるべきであるとわかっているのに実際はそうではないという穴がたくさんあります。オーディオ/ビデオ ファイルの再生を注意深く制御しようとすることは、その一例です。

しかし、Objective-C は素晴らしいです。癖や特異性はあるものの、私はこの言語がとても好きです (null へのメッセージは実行時例外ではありませんか?)本当ですか?) C++ の目が構文に慣れると、大まかに型付けされた匿名メッセージングは​​実際に非常に楽しく遊べるようになります (多少危険で RTE になりやすい場合はありますが)。

私もぜひiPhoneアプリの開発を始めてみたいと思っています。私は Motorola、Blackberry、Windows Mobile の開発を少し経験しましたが、どれも素晴らしく、優れたドキュメントがあり、SDK へのアクセスとインストールが簡単で、簡単に始めることができました。これまでのところ、Apple の開発環境は Mac でのみ利用可能であるように見える点で、Apple は少しエリート主義的であると感じます。また、私は彼らのライセンスコンセプトがあまり好きではありません。実際にアプリを公開できるようにしたい場合は、アプリを確認する必要があります。公開できるかできないか、またはアプリが自社の優れた製品で実行できるかどうかについて、最終決定権を持っているのはアプリです。これらのせいで、オープンソース コミュニティがアプリケーションを保守および作成したり、私のような iPhone 初心者が製品用のアプリケーションを書き始めることさえ困難になっていると私は信じています。Microsoft については悪いことがたくさん言われていますが、彼らは製品が市場に投入されるずっと前に API と SDK を世に送り出しており、あらゆるレベルのプログラマーが自社のフレームワークやアプリの作成に深く取り組み、関与することを本当に奨励していると言わざるを得ません。オペレーティングシステム。

私はいくつかの小さな iPhone アプリに取り組んできましたが、開発者が SOAP Web サービスに簡単にアクセスできるようにするフレームワークのコンポーネントが含まれていなかったことにはただただ驚きました。企業の IT 環境で働いていて、苦痛を感じている人は他にいますか?

個人的には、この時点でのドキュメントは非常に優れていると思います。どの Objective C クラスでも、option キーを押しながらダブルクリックすると、その用語のドキュメントが表示され、リストされている特定のクラスを使用するサンプル プロジェクトがあるかどうかを確認できます (少なくとも多くの iPhone 固有のクラスについて)。

また、最初に開始するときに Research Assistant をオンにすることを検討し、Code Sense をオンにしてください (デフォルトでオンになっているとは思わないでください)。XCode + Interface Builder の組み合わせは、慣れると非常に強力です。率直に言って、コードへの統合の仕組みや、インテリジェントにサイズを変更するインターフェイスを設計する機能の点で、率直に言って数十年間、これより優れたインターフェイス ビルダーを使用したことはありませんでした。大量の余分な仕事。

私は iPhone プログラミングと XCode についても初心者で、長年多くのプラットフォームでプログラミングをしてきましたが、私の印象はあなたのものにかなり近いです (いくつかの違いはありますが)。

  • Mac OSX:私は約 2 年前に (実験として) Windows から切り替えましたが、そのままでした :) - 元に戻すつもりはありません。Unix 基盤を持つことは非常にクールで、私は派手な GUI が大好きで、インターフェイスの基本的なシンプルさも気に入っています。慣れるまで2ヶ月くらいかかりましたが、もう戻れないです。私は MacBook のキーボードレイアウトと OSX のキーボード制限の一部が嫌いです。ユーザビリティに関する洞察に誇りを持っている企業が、どうしてこれほどひどい意思決定を下すことができるのか、不思議です。おそらく最も良い例は、コンテキスト メニュー (右クリック) のキーボード ショートカットがないことと、Home、End、PgUp などのタスクを実行するには 2 つのキーが必要であるという事実です。私の主なアドバイスは、時間をかけてできるだけ多くのキーボード ショートカットを学習することです。また、Mac エクスペリエンスを大幅に向上させる次のサードパーティ アプリをインストールして使用することをお勧めします。 クイックシルバー, パスファインダー, 1パスワード, もの, テキストメイト, テキストラングラー & 送信.

  • Xコード:完全にあなたと同意します。XCodeだと思います かなり原始的な. 。私がよく使っている IntelliJ IDEA と比較すると、Apple は少なくとも 7 年前から立ち往生しているように感じます。

    • コードナビゲーションが非常に原始的で、ウィンドウが多すぎて飛び跳ねる
    • 常にマウスを使用する必要がある
    • テンプレートは非常に限定されており、コンテキストやスコープとは関係のない単純なマクロ概念に基づいています。
    • リファクタリングはいくつかの単純なアクションに限定されます
    • メソッドをオーバーライドするような些細なタスクさえ簡単に実行することはできません。
    • コードセンスは素晴らしいですが、入力を理解できればもっと良くなったでしょう...

    大きな皮肉なことに、真剣な Mac 開発者は 彼らが問題を抱えていることさえ理解していない...彼らは対処しなければならない混乱に慣れすぎているため、より良い世界を想像することができません...XCode はあなたを助けるどころか、邪魔をし続けます。最新の Java IDE (Eclipse、IntelliJ) と比較した場合、この環境がどれほどひどいものであるかについては、数十の例を思いつくことができますが、それは時間の無駄だと私は考えています。Apple はプライドが高すぎて他社から学ぶことができないようです...Java の発明者たちが恥ずかしがり屋ではなかったという事実を考えると、これは面白いことです。 Objective-C から学ぶ. 。(私自身への) 唯一のアドバイスは、XCode を開いて深呼吸することです。 専門家からできるだけ多くを学ぶ この環境に慣れている人。

  • iPhone SDK:それよりもさらに悪い - 移植を検討しました 私たちのモバイルアプリ 数か月前に iPhone に追加しましたが、Apple が App Store からそれを拒否するかもしれないと事前に知ることができないのではないかと心配したため、気にしないことにしました (彼らは 拒否されました iTunes に近すぎるという理由で、似たようなアプリが過去にありました。)

  • オブジェクトC:Objective-C は非常に優れていると思いますし、数日も経てばぎこちないメッセージング構文にも慣れますが、ガベージ コレクションが恋しいです...メモリの割り当てと解放に対処しなければならないのは、C/C++ の初期の頃に戻ったような気分です。私はこの言語のニュアンスを学び始めたばかりですが、今のところ、見つけたものが気に入っています。公式ドキュメントでは見つけることができない、Obj-C のベスト プラクティスに関するヒントが Web 上に散在しており、私はそれらから多くのことを学びました (たとえば、次のディスカッションを参照してください) ここスタックオーバーフローにあります)

私も C# のバックグラウンドを持っており、ベータ 2 から iPhone SDK を使ってきました。VS は Xcode に比べて少し不格好であるという cranley の意見に私も完全に同意します。Xcode はまったく異なり、使い始めるとまったく異質なものになります。昔はVSもそうだったけど。一度学習曲線を終えると、それは素晴らしい経験になります。私が開発しているアプリは C# サーバー側 (Web サービス) を使用しているため、Xcode から Web サービス コードを記述するために VS に切り替える必要があるのは絶対に嫌です。Obj-C は、最適な動作方法を学べば、非常に楽しく使用することもできます。デリゲート (.NET デリゲートとは大きく異なります)、メッセージ、カテゴリ、および存在するその他すべての奇妙なものです。

私は .NET の前に Java および Flex プログラミングをいくつかしていましたが、Java ドキュメントに比べて .NET ドキュメントがずっと嫌いでした。彼らはそれをカットしません。私は個人的に、Xcode のドキュメントと検索システムが驚くべきものであることに気づきました。ドキュメントからリンクされている無数の PDF ガイドには、大量のサンプル コードが含まれています。これについて考えます:iPhone SDK のベータ版がリリースされてから約 2 か月が経過しました。ドキュメントには、長年にわたる成熟度が示されています。それは、Obj-C が 1 年以上前から存在しており、フレームワークが似ているからです。

全体として、私が発見した最大の問題は、多くの .NET 開発者が iPhone の流行に便乗し、Obj-C を C# や VB であるかのように使用しようとしているということです。彼らは iPhone のドキュメントはおろか、基本的な Obj-C ドキュメントも読めず、非常にイライラして最終的には失敗します。ディスカッション フォーラムにはこのシナリオが溢れています。iPhoneのプログラミングは簡単ではありません。新しい言語を学ぶのは簡単ではありません。時間と多くの試行、失敗、試行がかかります。これは .NET ではないので、始める前からその考えを捨ててください。そうすれば、物事は素晴らしいものになるでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top