| パラダイム | マルチパラダイム:スクリプト、命令型、関数型、オブジェクト指向 |
|---|---|
| デザイン: | デビッド・オロフソン |
| 初登場 | 2005年 |
| 安定リリース | 0.3.6 / 2014年2月4日 |
| タイピングの規律 | 動的 |
| OS | クロスプラットフォーム |
| ライセンス | GNU 劣等一般公衆利用許諾書 |
| ファイル名拡張子 | うなぎ |
| Webサイト | 翻訳元 |
| 影響を受けた | |
| Lua、C、パスカル | |
Extensible Embeddable Language ( EEL ) は、David Olofson が開発中のスクリプトおよびプログラミング言語です。EEL は、音楽シンセサイザーや産業用制御システムなど、サイクル レートが kHz 範囲のリアルタイム システムでのスクリプトを目的としていますが、プラットフォームに依存しない汎用プログラミング言語としても使用可能になることを目指しています。
哲学
言語設計に関しては、一般的には、パワー、使いやすさ、安全性の間で実用的なバランスをとることが目的です。その目的は、冗長な構文や制限された機能に頼ることなく、多くの典型的なプログラミングミスを回避することです。
歴史
EEL の最初のバージョンは、構造化されたオーディオ定義用のシンプルなパーサーの形で、X11ゲーム XKoboのSDLポートであるフリーでオープン ソースの ゲームKobo Deluxeのサウンド エンジンで使用されていました。これは、フロー制御が非常に制限されたシンプルなインタープリターであり、構文は現在のバージョンとはまったく異なります。この EEL の最初のブランチは 2002 年に最初にリリースされ、バージョン 0.5.1 の Kobo Deluxe でも引き続き使用されています。
2003 年 12 月、EEL はスタンドアロン プロジェクトに分割され、組み込み レオロジーアプリケーションでのリアルタイム スクリプトに使用するために大幅な書き直しが行われました。ここで、インタープリタからコンパイラ/ VMへの切り替えが行われ、実際のプログラミング言語 EEL が実現しました。最初の公式リリースは 2005 年 1 月でした。それ以来、EEL はゆっくりと進化してきましたが、その原動力は主に作者の個人的および専門的なニーズでした。
特徴
一般的な
この言語は、特定のプログラミング パラダイム向けに厳密に設計されているわけではありませんが、最小限の構文シュガー機能を通じて、オブジェクト指向プログラミング、より具体的にはプロトタイプ ベースのプログラミングをサポートしています。関数型プログラミング、モジュール型プログラミング、メタプログラミングなどの他のプログラミング スタイルやパラダイムもサポートされています。
ポインターを回避し、完全に管理された構造化データ型を提供することで、EEL プログラムは仮想マシンまたはホスト アプリケーションをクラッシュさせることができないという意味で、EEL は「安全」になります。
ハイライト
サンプルコード
古典的なhello world プログラムは次のように記述できます。
関数main<args>
をエクスポートします。
print("こんにちは、世界!\n");
0を返す;
}
以下は再帰関数の例です。
関数main<args>
をエクスポートします。
print("再帰テスト1:\n");
手順recurse(arg)
{
print("arg = ", arg, "\n");
引数の場合
再帰(引数 - 1);
}
再帰(10);
print("再帰テスト2; 相互再帰:\n");
手順mrecurse2(arg);
手順mrecurse1(arg)
{
print("arg = ", arg, "\n");
引数の場合
mrecurse2(引数);
}
手順mrecurse2(arg)
{
mrecurse1(引数 - 1);
} ;
10 ...
print("再帰テスト 2; 関数参照による相互再帰:\n");
手順mrrecurse1(arg, fn)
{
print("arg = ", arg, "\n");
引数の場合
引数fnは引数fnの直後に返されます。
}
ローカルmrr2 =プロシージャ(arg, fn)
{
mrrecurse1(引数 - 1,関数);
} ;
mrr2 を再帰的に実行します。
print(再帰テストが完了しました。\n);
0を返す;
}
内部
EEL ソース コードは、命令数とオーバーヘッドを最小限に抑えるように設計された比較的高レベルの命令セットを持つカスタムVMのバイトコードにコンパイルされます。EEL VM はレジスタ ベースで「スタックレス」であり、VM コンテキストの管理にC呼び出しスタックに依存しません。
基本的なメモリ管理方法は参照カウントであり、これにより、同時ガベージ コレクションを必要とせずに、決定論的なタイミングで自動メモリ管理が可能になります。
VM は「リンボ リスト」を使用して、式など内で作成された中間オブジェクトを追跡します。これにより、例外処理が大幅に簡素化され、すべての操作でアクティブな参照カウントを行う必要がなくなります。
アプリケーション
コボデラックス
Kobo DeluxeはEELのアプリケーションです。[1]
参考文献
- ^ 2013 年のベスト: 31 年後 - コモドール 64 での独立系ゲーム[永久リンク切れ ]、 James Monkman 著、indiegames.com (2013 年 12 月 20 日)
外部リンク
- EEL ホームサイト
- Kobo Deluxe ホームサイト
