仮想機械ちゃん
なんかこの VM って言葉は紛らわしいですね。
VM という言葉は、言語処理系のためのソフトウェアという意味で使われる以上に、VMWare などのもっとローレベルな計算機の仮想化をさすことがあります。むしろ、一言 VM と言った場合、後者を指すことが多いように思います。
前者の意味です、はい。よく使われている上位 3 つは Flash, .NET, Java とったところでしょうか。これらは基本的に言語もバイトコードも実行環境もばらばらです。
自分で何か言語を設計したいと考えた場合、すでにある仕様にのっかるというのもありだと思います。例えば Groovy なんかみたいに。そうすれば VM には触れず、バイトコードへのコンパイラを作るだけで済みます。まぁバイトコードを理解することで十分 VM には触れていると思いますけど。逆に VM 作りたい人は、既存のバイトコードに対する VM を作ればいいわけです。いずれにしろ、対象とするバイトコードに対する知識が必要です。おすすめなのは、既存の VM で走るようなバイトコードを吐き出すパターンですね。ひどいバイトコード吐いたとしても、もしかしたら VM のスーパーダイナミックオプティマイゼーションで何とかしてくれるかもしれないので。
インタプリタは……どうなんでしょうね。というかこんなこと書こうと思ったのは
eXceed3rd (中略) …えー、HSPぃ?(差別的発言) まぁ、ウチのスペックなら問題ないけど。
に対するマジレスだったはずなんですが。まぁとりあえず.ax を .jar にするツールもあるみたいだし、関係なくもないということで。描画が遅いとのことですが、JNI とか使ったんでしょうか?そうでなければもったいないです。良い言語、良い実行環境、それぞれ別ですよね。悪い実行環境(=アプレット)で評価が割れる Java がかわいそうです。
今日のぶっくま等
- //d.hatena.ne.jp/flashrod/20070714#1184417871">AIRでローカルflvファイルplayerの作り方 - flashrod:プレイリスト機能とかを充実させればかなり使えるものになりそうな予感。
- DLL の動的読み込みと #define
- まとめておきました。defineについて、より DLL に特化した話。