10

スマートフォン/モバイルデバイスのOSが、動的言語を選択言語として使用できるように作成されていないのはなぜだろうと思いました。iPhoneはObjective-Cを使用し、Google AndroidはJavaを使用し、WindowsMo​​bileはあらゆる方法の.NET言語を使用します。

Python、Ruby、またはその他の動的言語で書かれたモバイルOSの背後にある理由は何でしょうか?低レベルではカットされないことは理解していますが、CまたはC ++で十分であり、たとえばPythonが最上位のレイヤーである可能性があります。つまり、JythonまたはCPythonがあります。

今日のモバイルOSでより動的な言語サポートが見られないのはなぜだろうと思っていました。

4

13 に答える 13

14

一般的に、それはこれらすべてのものです。メモリ、速度、そしておそらく最も重要なのはプログラマーの知識です。AppleはObjectiveCに巨額の投資を行っており、Javaは基本的にすべての人に知られており、C#も非常に人気があります。マスプログラマーにアピールしようとしているのなら、たとえそれが退屈なものであっても、人気のあるものから始めるのは理にかなっています。

それを止める技術的要件は実際にはありません。Rubyスタック全体を記述して、プログラマーにCの低速ビットを再実装させることができますが、それほど大きな問題にはなりません。これは、モバイルOSを製造している企業にとっては投資であり、結局のところ、彼らがこれから多くを得ることができるかどうかはわかりません。

最後に、これはモバイルデバイスのまさに始まりです。5年間で、はるかに広いモバイルスタックを見てもまったく驚かないでしょう。

于 2009-05-03T03:26:56.573 に答える
2

モバイルデバイス上の複数の言語の状況は、質問が示唆するよりも優れています。Java(J2MEの化身)は、最近ではかなり安価な電話でも利用できます。Symbian S60は、Pythonウィジェット用のJavascriptを公式にサポートしており、まだかなり実験的ですが、Rubyポートがあります。Charles Nutterは、JRubyをAndroidで実行することを試みました。 rhomobileは、Rubyでアプリを開発して、すべての主要なスマートフォンOSで実行できるようにすることを主張していますが、そのような移植性の主張は、それらのアプリが達成できることに対する制限を意味します。

モバイルOS(リソースの共有や保護などのオペレーティングシステムを実行する)とランタイムプラットフォーム(ユーザー作成アプリケーションに作業環境と一連のAPIを提供する)を区別することが重要です。OSは、Windows自体がC ++で記述されている場合でも、WindowsでC ++アプリとJavaアプリの両方を実行する方法など、複数のランタイムをサポートできます。

ランタイムはさまざまなパフォーマンス特性を持ち、OSとハードウェアの機能を多かれ少なかれ公開します。たとえば、J2MEは多数のデバイスで使用できますが、多くのデバイスでは、J2MEランタイムはカメラへのアクセスや電話をかける機能を提供しません。「ネイティブ」ランタイム(つまり、アプリがOSと同じ言語で記述されているランタイム)は、この点で違いはありません。「ネイティブ」アプリが実行できることは、ランタイムが許可する内容によって異なります。

于 2009-05-03T17:59:39.330 に答える
2

質問の前提に反して:最初の主流のモバイルデバイスの1つは、NewtonScriptと呼ばれる特殊な動的言語を使用するように設計されたNewtonでした。アプリケーション開発用。ニュートンの開発環境と言語により、アプリケーションが連携して情報を共有することが特に容易になりました。これは、現在のiPhoneエクスペリエンスとはほぼ正反対です。新しいNewtonアプリケーションを最初から作成する多くの開発者はそれをとても気に入りました-NewtonScriptはRubyに非常に似ています-Newtonにはいくつかのパフォーマンスの問題があり、Appleが後でCコードを組み込む機能を追加した後でも、既存のコードの移植は容易ではありませんでしたNewtonScriptプログラム。また、ニュートンの知的財産を保護することは非常に困難でした。他の開発者は、ほとんどの場合、コードの内部を調べて、気まぐれにコードの一部を上書きすることさえできました。これはセキュリティの悪夢です。

ニュートンは商業的な失敗でした。

PalmはAppleの最高のアイデアのいくつかを採用し、それらを改良しましたが、全体的な簡素化の一環として動的言語のサポートを放棄し、最終的には独立したモバイルソフトウェア開発者が群がってモバイル市場シェアの大部分を獲得することになりました。新しいプラットフォーム。

ニュートンが失敗した理由はたくさんありましたが、おそらくニュートンスクリプトのせいにする人もいます。AppleはiPhoneと「異なる考え方」をしており、彼らが下したと思われる初期の決定の1つは、既存のコア開発者ベースを可能な限り活用し、ObjectiveCでの開発を容易にすることです。iPhoneが公式になった場合動的言語のサポート。これは、安全で高性能なプラットフォームを提供しながら、それを行うための最善の方法について長く慎重に検討した後、後で追加される予定です。

そして、彼らが行った5分後、他の人が続きます。:-)

于 2009-05-03T15:54:28.087 に答える
1

ジェイルブレイクされたiPhoneにはPythonをインストールできますが、私は実際にPythonを非常に頻繁に使用しています。

于 2009-05-03T03:15:14.917 に答える
1

パフォーマンスの問題は、すべてではありませんが、その理由の一部である可能性があると思います。モバイルデバイスには、操作するための非常に強力なハードウェアがありません。

しかし、私はこれについて部分的に確信が持てません。

于 2009-05-03T03:17:37.953 に答える
1

最も差し迫った問題の1つは、ガベージコレクションです。ガベージコレクションは、多くの場合、リアルタイムのパフォーマンスを必要とする組み込みマシンに予測できない一時停止をもたらします。

これが、低速のプログラムと引き換えに一時停止を減らす別のガベージコレクターを備えたJavaMicroEditionがある理由です。

(CPythonのような)ガベージコレクターの再カウントも一時停止する傾向がありませんが、ネストされたポインター(リンクリストなど)が多数あるデータが削除されると爆発する可能性があります。

于 2009-05-03T03:21:07.443 に答える
0

基本的な理由は、セキュリティと信頼性の組み合わせだと思います。誰かが電話を簡単にハッキングできるようにしたくないし、インストールされているものをある程度制御したい。

于 2009-05-03T03:13:13.377 に答える
0

メモリも重要な要素です。残念ながら、Pythonでメモリを食べるのは簡単です。

于 2009-05-03T03:20:08.523 に答える
0

多くの理由があります。その中で:

  • ソフトウェアロックイン戦略などのビジネス上の理由、
  • 効率:動的言語は通常、低速であると認識されます(場合によっては、実際に低速であるか、少なくとも実行できる最適化の量に制限があります。モバイルデバイスでは、コードの最適化がPCよりもはるかに頻繁に必要になります。 )、より多くのメモリを使用する傾向があります。これは、メモリが制限され、キャッシュが少ないポータブルデバイスでは重大な問題です。
  • 開発をシンプルに保つ:Python、Ruby、Javaなどをすぐにサポートするプラットフォーム:
    • ドキュメントを作成してサポートを提供する作業の3倍を意味します。
    • 開発作業を3つに分割します。役立つ資料がWebに表示されるまでに時間がかかり、プラットフォームで同じ言語を使用する開発者が少なくなります。
    • これらすべての言語をサポートするには、デバイスにさらに多くのストレージが必要です。
  • 経営陣は納得する必要があります。Javaのメリットは、技術者以外の人にも簡単に説明できるといつも感じていました。.NetとObj-Cも、それぞれMicrosoftとAppleのプラットフォームにとって非常に自然な選択のようです。
于 2009-05-03T03:33:22.297 に答える
0

webOS(PreでデビューするPalmの新しいOS)では、JavaScriptでwebkitランタイムに対してアプリを作成できます。時間はそれがどれほど成功するかを教えてくれますが、私はそれがこの道を進む最初ではないだろうと思います。モバイルデバイスがより強力になるにつれて、動的言語がより普及するようになるでしょう。

于 2009-05-03T17:35:38.543 に答える
0

My Palmには、合理的なGUIを実行できるLua実装、かなり役に立たない古いPython 1.5、優れたForth(コンパイル済みアプリの作成を可能にする)、およびcopmleteGUI開発を可能にするSchemeがあります。

最近のAppleWWDC2009で、Symbianアライアンスは、隣接する建物で初日にイベントを開催しました。マーケティングピッチで昼食をとるだけでも、350米ドルの電話で、無料のNokia5800のティーザーを用意しましイベントはOviStoreの開発を売り込むことで、午後には開発者とプログラミングコンテストが開催されました。

彼らがSymbianの開発のために強調していた3つの言語は、Java、Flash(lite)、Pythonでした。Pythonは、デバイスまたはPCでの作業を可能にする唯一のオプションであり、OpenGLESおよびその他の電話機能を備えたサンプルが含まれています。

ストアでホストできるスタンドアロンにPythonアプリをバンドルするユーティリティを備えた、S60上のPythonは、(まだ)支配的なプラットフォームでの本格的な動的言語の候補としてすぐそこにあると思います。

于 2009-07-02T23:59:40.030 に答える
0

SHRと呼ばれるOpenMokoFreerunner用のLinuxディストリビューションがあります。その設定とフレームワークコードのほとんどはPythonで書かれており、...まあ、それほど高速ではありません。耐えられますが、最初からヴァラで書き直す予定でした。

一方、私のいくつかの小さなアプリは、Pythonを使用してユーザーアプリケーションを開発することを検討するのに十分な速度で動作します(唯一の欠点は起動時間が長いことです)。

記録のために:FreerunnerにはARMがあります-400MHzと128MBのRAM。モバイルデバイスが1GHzを超えると、Pythonのような言語は中レベルのもの(低レベルがカーネル)にも十分に高速になると思います。

于 2009-07-03T00:12:49.350 に答える
0

RhomobileのオープンソースRhodesフレームワークは、今日これを提供します。すべてのスマートフォン向けの世界初のRuby実装。

于 2009-10-02T22:08:35.963 に答える