2009-08-23 10 views
3

私はMacRubyへの参照を横断して走り続けていて、あなたがiPhone/Objective Cプログラミングのために使ったことがあるかどうか疑問に思っていました。MacRubyのメリット/制限は何ですか?誰もがiPhone用のプログラムに使っていますか?

MacRubyのウェブサイトには、「MacRubyの目標は、Rubyを使用する利点を楽しむために性能を犠牲にしない本格的なMac OS Xアプリケーションの作成を可能にすることです」と述べています。

私の質問は次のとおりです。Rubyのメリットは何ですか?

さらに重要なことは何ですか?

答えて

6

私はMacRubyを使用していませんが、Mac OS X Objective-Cランタイムの上に構築され、Objective-C 2.0ガベージコレクタを使用するため、iPhone開発に使用できるかどうかは疑問ですそれ自身)。 iPhone OSにはObjective-C 2.0がありますが、ガーベッジコレクタがありません(まだretain/releaseスタイルの管理メモリを使用する必要があります)ので、MacRubyはそのままでは動作しません。

また、MacRubyは、インタープリタ(Appleが提供するもの以外)を使用すると動詞が使用されるため、App Storeの開発には役に立たないでしょう。

ルビーのiPhoneポートは脱獄された電話機で動作するかもしれませんが、デバイスのRAMとCPUリソースは非常に限られているため、このようなポートがどれほど成功したのかよくわかりません。私はMRIが遅すぎると思っていて、iPhoneで役に立ちたいと思っていますが、別のRubyインタプリタの1つがうまくいくかもしれません。おそらくMacRubyは独自のGCを持っています。

私は確かにMacRubyがMac OS X開発に多くの利点を持っているのを見ることができます。ここに私の頭の上のいくつかのものがあります:

  1. 言語として、それは使用するのが楽しいです。ブロックは素敵です。これは非常にダイナミックで、メタプログラミングを強力にサポートしているため、コンパクトであるが読み込み可能なコードをすばやく作成することができます。
  2. Objective-Cは、Objectiveであるときにかなり高いレベルになることがありますが、Cであるときには気にせず低レベルになる可能性があります。
  3. IMHO、Objective-Cには本当に奇妙な構文があります。あなたはしばらくしてそれに慣れますが、それは初心者を恐れます。 Rubyには、特にfoo.bar 'baz'の代わりにfoo.bar('baz')を使用すると、より多くの主流構文があります。
  4. Objective-Cはヘッダーファイルを使用します。私は.h.mのファイルの間でメソッドのプロトタイプを邪魔しています。 Rubyにはそれがありません。
2

MacRubyのは本当にクールですが、それはまだない生産(でも、OS X上の)準備ができて、それはいくつかの理由でiPhone上では動作しません。

  1. それはObjective Cのガベージコレクタを使用して、 iPhoneでは利用できませんそれは、iPhone上で利用できないブリッジのサポートに依存
  2. それは素晴らしいですLLVMバックエンドに依存し、まだARMの生産品質
  3. のJITないではありません
  4. iPhoneで動くそのセキュリティモデル(ほとんどの場合、mprotect()の呼び出しは失敗します)のためです。

私はこれらの問題のいくつかが解決されると期待していますが、今後MacRubyのようなものはiPhoneで利用できるようになりますが、それはおそらく数年先のことでしょう。あなたが今iPhoneのために、または近い将来に開発したいのであれば、MacRubyは現実的な選択肢ではありません。

+1

LLVM?腕? JITs?あまり味付けしていないプログラマーの頭字語を書き留めてもらえますか? ありがとう! – Jonah

+3

LLVMとARMは技術的に頭字語ですが、それぞれ特殊なものです(それぞれ「低レベル仮想マシン」と「Acorn RISCマシン」)。彼らの正式な名前は、実際にあなたが何をしているかについて特に情報を与えるものではありません。頭字語を使用するほとんどの人々が実際には何を表しているのかを知りません。その拡張はおそらくそれらを拡張し、できる。人々がアメリカの意味を知らないかもしれないので、それは "アメリカ"と書くようなものです。 –

0

Rubyのメリットは、大量のネストされた大括弧やはるかに大きなダイナミズムよりも読んで入力するのがはるかに簡単です。欠点は一般的に実行速度であり、Rubyのユーザーは、あまり知られていないメタプログラミングのイディオムを過度に利用する傾向にあり、それによって簡単なプロジェクトでさえもサルパッチュ・スパゲッティに変わる傾向がある。

アップルが、現在課されているバックグラウンドプロセスの制限を解除することを決めていない限り、それをiPhoneで実行することは決してありません。興味があれば、気にしないでください。

関連する問題