Smart Pascal は、Delphi Web Script から派生したObject Pascal プログラミング言語で、商用JavaScript マシン コードを生成するために Smart Mobile Studio に適合されています。RAD (ラピッド アプリケーション開発) 言語として、クラスとコンポーネントのライブラリが含まれています。Smart Pascal コンパイラは、HTML5に準拠したサーバーに依存しないアプリケーションを生成するソース ツー ソースコンパイラです。コンパイルされた Smart アプリケーションは、最新のHTML5対応ブラウザーで実行できます。コンパイルされたプログラムは通常、DIV コンテナー要素内に埋め込まれるか、またはディスプレイ全体を占めるように設定されます。
歴史
Jon Lennart Aasenden と Eric Grange によって設計された Smart Mobile Studio は、ソフトウェア会社 Optimale Systemer によって公開されています。構文の検証と解析には、オープンソースのスクリプト エンジンである Delphi Web Script を使用しています。2012 年 5 月 18 日、Optimale Systemer は、Delphi Web Script の保守担当者である Eric Grange が作成したカスタム コード ジェネレーターの権利を彼の会社 Creative IT から取得したことを公表しました。Eric Grange は、バージョン 1.0 から Smart Pascal に匿名クラスを導入しました。
プロトタイプ
最初のプロトタイプは 2011 年 12 月 20 日にリリースされました。このプロジェクトはBlaise Pascal Magazineで 2 ページにわたって取り上げられました。ランタイム ライブラリは、Remobjects SDKと Embarcadero Datasnap のサポートを含むように拡張されました。バージョン 2.0 以降、Smart Pascal はNodeJS、Web Workers、Espruinoマイクロコントローラ プラットフォームもサポートしました。
言語の違い
財産表現
Object Pascal では、プロパティはクラス フィールドまたはクラス メンバー メソッドにリンクできる公開された値です。コンシューマーは、プロパティが明示的にフィールドまたはライター メソッドにリンクされているかどうかは知りません。Smart Pascal では、「プロパティ式」と呼ばれる手法が導入されています。これにより、ユーザーは、プロパティ宣言の一部として、リーダー ロジックとライター ロジックをプログラムできます。
Smart Pascal IDEは、 HTML ドキュメント内で動作するように設計されたオブジェクト指向のモジュール型アプリケーションを構築します。個別のウィンドウにコントロールを配置し、コード イベントをこれらに接続してユーザーのアクティビティに応答することができます。Smart Mobile Studio には、ビジュアル フォーム デザイナーとプロパティエディターが付属しています。Smart Pascal ランタイム ライブラリは、CSS3スタイルの作成、"トゥイーン"、ディスプレイの再描画同期、GPU を利用した 2D および 3D スプライト、およびWebGL を完全にサポートしています。
データベースアクセス
WebSQL、IndexedDB、WebStorage APIの各エンジンがサポートされています。[現在? ] Smart IDE では、リモート データ アクセス フレームワークである Embarcadero DataSnap にもアクセスできます。これらのインポート ライブラリを使用すると、Smart Pascal アプリケーションでリモート データセットの読み取り、書き込み、更新を行うことができます。Smart Pascal 自体はEmbarcadero Delphiで記述されています。ランタイム ライブラリには、 Microsoft RPCに似たリモート プロシージャ コール フレームワークであるRemObjects SDKのクラスが含まれています。JSON RPCとWebSocketも同様にクラス ライブラリの一部です。
JavaScript への適応性を高めるために、Smart Pascal 構文に配列操作が追加されました。データ型が一致している限り、Smart Pascal にはすべての配列に対する 組み込み機能があります。
匿名クラス
従来の Object Pascal では、すべてのクラスはTObjectと呼ばれるルート型から継承します。これは Delphi Web Script でも同様です。JavaScript クラスをインポートするには、すべてのクラス型のルートとしての TObject への依存関係を変更する必要がありました。これにより、ユーザーはクラスをexternalとして定義できるようになり、インターフェイスに一致する JavaScript で記述されたクラスを作成して、Pascal で記述されたクラスと一緒に使用できるようになります。匿名クラスは軽量オブジェクトとして使用することもできます。
限定的なサポート
匿名メソッドは、JavaScript との互換性を向上させる手段として Smart Pascal で導入されました。ネイティブ Pascal では、クラス プロシージャと通常のプロシージャがあります。これら 2 つの唯一の違いは、クラス メソッドを参照する場合、その宣言に「of object」を追加する必要があることです。コンパイラでは、「of object」が明確に定義されていないオブジェクト メソッドを参照することはできません。
部分クラスは、まだ Object Pascal 標準に含まれていない機能です。Smart Pascal は、部分クラスの 2 つの宣言形式をサポートしています。RemObjects Oxygene Pascal 構文と、"type mytype = partial class(ancestor type)" バリエーションです。
Pascal では、セットは同じ型の要素の集まりです。Smart Pascal 構文は現在、"in" 演算子と "include(aSet, aValue)" または "exclude(aSet, aValue)" メソッドを使用した列挙のセットのみをサポートしています。Smart Pascal はジェネリックをサポートしていません。Smart Pascal の派生元である Delphi Web Script の元の構文は、Delphi 7 と互換性がありました。実行時の型情報は、プロパティとクラス メンバーを列挙する機能を含め、DWScript によって部分的にサポートされています。プロジェクトのコンパイラ オプションで "RTTI 情報の出力" が定義されている場合、RTTI は Smart Pascal JavaScript コンパイラによって実装されます。
出典
- Delphi Web スクリプト ソース リポジトリ
- Jon Lennart Aasenden のプログラミング ブログ
- Eric Grange のウェブサイト
外部参照
- Cordova で Smart Pascal を使用する方法に関する記事 (旧称: Phonegap)
