web-dev-qa-db-ja.com

埋め込みスクリプト言語を使用するのはいつですか?

why埋め込みスクリプト言語を使用することに関する投稿をすでに読んでいますが、whenそれを使用します。

Objective-C/Javascriptバインディングフレームワーク を実装しました。これにより、任意のObjective-Cクラスとメソッドを使用するJavascriptを記述できます。実行時にアプリの内部状態を確認/変更できるため、デバッグの目的で非常に役立つことがわかりました。しかし、いくつかの理由で、アプリをビルドするときに、JSコードではなくObjCコードを作成することを好むこともわかりました。

  • コード補完。 UIKitメソッドfroomJSを呼び出したい場合は、最初の数文字を入力してXcodeにObjCで完了させるのと比較して、ドキュメントの名前を確認する必要があります。
  • 静的型付き言語のすべての利点。 ObjCは静的型付きおよび動的型付きの言語であるため、コンパイラーは可能な限り多くの型チェックを実行できます。
  • パフォーマンス?
  • JSへのCバインディングはまだ準備ができていません(これは、ヘッダーを解析し、C関数、列挙型、構造体などを公開するコードを生成するために必要です)
  • ObjCメソッドを扱うときにObjCを書く方が自然です。 (たとえば、JSではview.setEdit_animated(true, true)のようなコードをObjCと比較してください[view setEdit:YES animated:YES]

しかし、スクリプト言語を活用できるように、JSコードをもっと書く必要があると感じています(たとえば、実行時にメソッドをバグ修正に置き換える)

アプリのどの部分をJSで記述し、どの部分をObjCで記述するかがわかりません。何かアドバイス?

また、埋め込みスクリプト言語に使用できるデザインパターンはありますか?

2
Bryan Chen

私の意見では、スクリプトの主な利点は2つあります。

  • それは通常より速いです
  • そしてそれは通常より速いです

1つ目は、ほとんどの言語が持つJITコンパイルおよび基礎となるCインタープリター用で、2つ目は、コードを再コンパイルする必要がないためです。

再コンパイルせずに動作をすばやく変更したい場合は、スクリプトを使用する必要があります。したがって、ユーザーインターフェイスをスクリプト化して、バイナリコードへの接続方法を指示することをお勧めします。静的に型付けされた言語でGUIを作成することは、おそらく困難で複雑です。ほとんどのスクリプト言語は、イベントなどを実行したり、アプリケーションの特定の部分で単純な動作を実装したりする場合にも役立ちます。

分割することの利点は、一度コンパイルされるプログラムコアと、アプリケーションの動作を構成する可能性のある多数のスクリプトファイルを取得できることです。したがって、実際には3番目の利点があります。スクリプトは通常高速です。今回はアプリケーション開発の観点から。スクリプトファイルを調整してプログラムを再度実行するか、実行時にスクリプトを変更して、すぐに結果を確認します。

ネイティブバイナリのアプリケーションがスクリプトよりも実際に高速である1つの分野は、ハードウェアの相互作用とOSの呼び出しに関してです。スクリプトは通常、クロスプラットフォームを対象としているため、アプリケーションにはネイティブライブラリを使用する必要があります。スクリプト言語は、パフォーマンスのペナルティを適用して、それらをラップする必要があります。また、インタープリターには独自のスレッドモデルとガベージコレクションがあります。これらの機能を制御する必要がある場合は、ネイティブバイナリを選択してください。

1
HaMster