| 原作者 | ニコラス・カンナス |
|---|---|
| 開発者 | |
| 初回リリース | 2005年 |
| 安定版リリース | 2.3.0 / 2019年10月24日 |
| リポジトリ |
|
| 書かれた | C |
| オペレーティング·システム | Windows、macOS、Linux 対応 |
| プラットフォーム | IA-32、x86-64 |
| ライセンス | マサチューセッツ工科大学 |
| Webサイト | nekovm.org/doc/vm |
NekoVMは、フランスのボルドーにある2 つの独立系ビデオ ゲーム開発会社(最初はMotion Twin、次にShiro Games ) の研究開発(R&D)の一環として Nicolas Cannasse によって開発された仮想マシンです。NekoVM のネイティブ言語は、 Neko と呼ばれる高レベルの動的型付けプログラミング言語のバイトコードです。この組み合わせにより、Neko を組み込みスクリプト言語として直接使用したり、別の言語 ( Haxeなど) を NekoVM バイトコードにコンパイルしてNekoVM をターゲットにしたりすることができます。
コンセプト
Neko には、コンパイラとガベージ コレクション機能を備えた仮想マシン(VM)があります。コンパイラは、ソース .neko ファイルを VM で実行できるバイトコード .n ファイルに変換します。Neko は固定クラスなしで動的に型付けされるため、開発者は適切なランタイムマッピング (データ型マッピングとは対照的) を見つけるだけで、コードが正しく実行されます。Neko FAQ には次のように書かれています。「...高レベルの型システムを扱う必要がないため、NekoVM で新しい言語や既存の言語を書くのはCLR / JVMよりも簡単です。また、これは、言語が同じデータ構造を共有するだけでよく、常に同じ型である必要はないため、言語の相互運用が容易になることを意味します。」[1]
Neko は、 Apache Groovyなどの他のスクリプト言語と同様に、実行前にコンパイルする必要があります。Neko は実行時に解釈する必要がないため、実行速度が速くなります。Haxe言語は、他のターゲットの中でも特に Neko コードにコンパイルできます。
仮想マシン
Neko仮想マシンはNeko バイトコード ファイルを実行するために使用されます。VM には、バイトコード ファイルを実行可能ファイルに変換するオプションもあります (出力は対象のオペレーティング システムによって異なります)。
言語
| パラダイム | マルチパラダイム:オブジェクト指向、構造化、プロトタイプベース、スクリプト |
|---|---|
| デザイン: | ニコラス・カンナス |
| 開発者 | |
| 初登場 | 2005年 |
| 安定版リリース | 2.3.0 / 2019年10月24日 |
| タイピングの規律 | 動的 |
| 実装言語 | オカムル |
| プラットフォーム | ネコVM |
| OS | Windows、macOS、Linux 対応 |
| ライセンス | マサチューセッツ工科大学 |
| ファイル名拡張子 | .ネコ .n |
| Webサイト | nekovm.org/スペック/構文 |
こんにちは世界
$print ( "こんにちは世界!" );
型変換
$int ( "67.87" ); // 文字列 "67.87" を整数 67 に変換します$float ( 12345 ); // 整数 12345 を浮動小数点数 12345.0000 に変換します$string ( $array ( 1 , 2 , 3 )); // 配列 [1,2,3] を文字列 "[1,2,3]" に変換します
オブジェクト
o = $new ( null ); // 新しい空のオブジェクトo2 = $new ( o ); // o のコピーを作成しますo2 = $new ( 33 ); // パラメータがオブジェクトでない場合は例外をスローしますo . field = value ; // フィールドに値を設定しますo . field ; // オブジェクト o の "field" 値を返します
方法
foo = function () { $print ( this . x ); } o = $new ( null ); o . x = 3 ; o . bar = function () { foo (); }; o . bar (); // 3 が出力されます
関数のスコープ
var x = 3 ; f = function () { $print ( x ); } x = 4 ; f (); // 3 を出力
プロトタイプ
var proto = $new ( null ); proto . foo = function () { $print ( this . msg ) }
var o = $new ( null );ああ。msg = "こんにちは" ; $objsetproto ( o , proto );ああ。foo (); // 「こんにちは」を出力します
$objsetproto ( o , null ); // proto を削除o . foo (); // 例外
ウェブ機能
Neko には、 Neko 言語用のApache サーバーモジュール mod_neko と、NekoVMアプリケーション サーバーtora をホストするための mod_tora が含まれています。そのため、GET および POST 要求を使用してユーザー入力を処理できます。
get_params = $loader . loadprim ( "mod_neko@get_params" , 0 ); $print ( "PARAMS = " + get_params ());
参照
参考文献
- ^ 「Neko は.Net の CLR や Java の JVM とどう違うのですか?」。FAQ。NekoVM。2021年 3 月 28日閲覧。
外部リンク
- 公式サイト
- Wayback Machineのメーリング リスト アーカイブ(2013-12-20 アーカイブ)
