インタープリターモードとコンパイル済みモード
4D アプリケーションは インタープリター または コンパイル済み モードで実行することができます:
- インタープリターモードにおいて、コードは実行時に読み込まれてマシン語に翻訳されます。 コードはいつでも追加・変更することができ、アプリケーションは自動的に更新されます。
- コンパイル済みモードにおいては、コンパイル時にすべてのコードが一括で読み込まれて翻訳されます。 コンパイル後のアプリケーションにはアセンブリレベルの指示のみが残され、コード編集はできません。
コンパイルには以下のようなメリットがあります:
- 速度: データベースの実行速度を3倍から1000倍速くします。
- コードチェック: データベースアプリケーションコードの整合性をチェックし、 論理的矛盾や構文的矛盾を検出します。
- 保護: データベースをコンパイルすると、インタープリターコードを削除できます。 コンパイルされたデータベースは、故意的にも不注意からもストラクチャーやメソッドの表示・修正ができないこと以外は、オリジナルのデータベースと同じに動作します。
- ダブルクリックで起動するアプリケーション: コンパイル後のデータベースは、独自のアイコンを持つスタンドアロンアプリケーション (.EXEファイル) に作り変えることもできます。
- プリエンプティブモードでの実行: プリエンプティブプロセスとして実行できるのは、コンパイルされたコードに限られます。
インタープリターコードとコンパイル済みコードの違 い
アプリケーションの動作は同じであっても、インタープリターモードとコンパイル済みモードにはいくつかの相違点があり、コンパイルされるコードを書くにあたってはこれらを意識しておく必要があります。 基本的に、4D のインタープリターはコンパイラーより柔軟です。
コンパイル済みコード | インタープリターコード |
---|---|
変数名とメソッド名が被ってはいけません。 | エラーは生成されませんが、メソッドが優先されます。 |
コンパイラー指示子 (例: C_LONGINT ) によって、またはコンパイル時にコンパイラーによって、すべての変数は型指定されなければなりません。 | 変数の型は実行中に決定していくことができます (推奨されません) |
変数や配列のデータタイプは変更できません。 | 変数や配列のデータタイプは変更可能です (推奨されません) |
1次元配列を2次元配列に、また2次元配列を1次元配列に変更することはできません。 | 可能です。 |
コンパイラーにより変数のタイプ定義はおこなわれますが、フォーム上の変数のようにデータタイプが明確でない場合は、コンパイラー指示子を使用して変数のデータタイプを指定するべきです。 | |
Undefined 関数は、常に False を返します。 変数は常に定義されています。 | |
メソッドの " |