タグ付けされた質問 「virtual-machine-languages」

6
Pythonバイトコードにコンパイルする他のプログラミング言語がないのはなぜですか?
Javaには、JavaバイトコードにコンパイルしてJVMで実行できる複数の言語があります。Clojure、Groovy、およびScalaは、私の頭の中で覚えている主要な言語です。 ただし、PythonはPythonインタープリターによって実行される前にバイトコード(.pycファイル)に変わります。私はただ無知かもしれませんが、Pythonバイトコードにコンパイルする他のプログラミング言語がないのはなぜですか? 誰も邪魔しないからか、そうするのを難しくする固有の制限や障壁があるのでしょうか?

3
仮想マシンを構築したいのですが、良い参考資料はありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 ゲームコード(本質的にスクリプト)を実行するプラットフォームに依存しない方法として仮想マシンを構築したいと考えています。 私がゲームで知っている仮想マシンはかなり古く、InfocomのZ-Machine、LucasArtsのSCUMM、id SoftwareのQuake 3です。.net開発者として、私はCLRに精通しており、CIL命令を調べて、VMレベル(言語レベル)で実際に実装するものの概要を取得しました。昨年、6502 Assemblerでも少し手を出しました。 問題は、これを実装したい¹ので、もう少し深く掘り下げる必要があります。スタックベースのVMとレジスタベースのVMがあることは知っていますが、どのアプローチがどれが優れているか、また、より多くのアプローチまたはハイブリッドアプローチがあるかどうかはわかりません。メモリ管理に対処し、どの低レベルタイプがVMの一部であるかを判断し、ldstrのようなものが動作する理由を理解する必要があります。 私の唯一の参考書(Z-Machineのものを除く)はCLI Annotated Standardですが、VMに関するより良い、より一般的/基本的な講義があるのでしょうか?基本的にDragon Bookのようなものですが、VM用ですか?レジスタベースのVMを使用するドナルドクヌースのコンピュータープログラミングの技術は知っていますが、特に未完成であるため、そのシリーズがまだどのように適用できるのかわかりません。 明確化:目標は、専用のVMを構築することです。たとえば、InfocomのZ-Machineには、背景色を設定したり、サウンドを再生したりするためのOpCodeが含まれています。したがって、スクリプト(言語TBD)を受け取り、それからバイトコードを生成するコンパイラーに対して、OpCodesとしてVMにどれだけの量が入るかを把握する必要がありますが、そのためには、実際に何をしているのかを理解する必要があります。 ¹最新の技術により、高レベルのスクリプト言語をその場で解釈することができます。しかし、その面白さはどこにありますか?:)また、最近では仮想マシンはVMWareタイプのOS仮想化に関連付けられていることが多いため、Googleを検索するのも少し難しいです...

2
OOP言語のモジュールシステム
シンプルなオブジェクト指向プログラミング言語を設計しています。 これは、Javaと同様に、VMによって静的に型付け、コンパイル、および実行されます。 違いは、OOPをそれほど強調したくないということです。コード自体はほとんどC ++(ファイルスコープで許可されているクラス、関数、変数)に似ています。 必要なものの1つはモジュールシステムです。私は以下を理解しました: すべてのファイルはモジュールです(一度コンパイルすると)-Pythonのように プログラマーはimportキーワードを使用してモジュールをインポートする必要があります。これにより、コンパイラーは標準ディレクトリーおよびファイル・ディレクトリーでモジュールを検索します(VMは実行時にもこれを行う必要があります)。 そして今、私はサブモジュールとモジュール階層の概念をどのように導入すればよいのか分かりません。 たとえば、1つのオプションは、ディレクトリ階層に依存することです。これによりimport engine.graphics.renderer、作業ディレクトリ内、および「renderer」というモジュールを持つ「graphics」というディレクトリ内に「engine」というディレクトリが見つかるはずです。 そのようなデザインの欠点は何ですか?何か不足していますか?

4
VM言語が一度だけコンパイルされないのはなぜですか?
(最初に、コンパイラと仮想マシン(別名)は私にとってまったく未知のフィールドであることを明確にする必要があります) 私が理解しているように、Java / C#/ ...アプリケーションが実行されるたびにVMが呼び出され、中間コード(バイトコード、CILなど)を機械語命令に変換します。 しかし、なぜこの操作を一度だけしか実行できないのですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.