言語のJITコンパイラをその言語自身で作る事の意義とは

PythonのJITコンパイラを実装するだけなら実装に用いる言語はPythonである必要は無いわけだけれど、Rubiniusといいその言語の処理系をその言語自身で作ることの意義って具体的に何があるんですか?実行の為にCPythonやCRubyを別に必要とすると考えると欠点しか…?
2011-11-02 13:28:05
pypyはPythonの実行環境をPythonで作ってる。ある言語の実行環境をその言語そのもので実装することは意義がある、って言ってたな、pypyでは [Mimas]
2011-11-02 13:30:28
@ponkotuy それならPythonによるRuby処理系やRubyによるPython処理系が有っても不思議はないのに見かけないのは一体?
2011-11-02 13:36:44
@kumagi うーん、PythonistaがPythonの処理系実装するのにRuby選ぶのは不思議なんだけどなーw PythonistaがRubyの処理系実装したくなるか、っていうのも含めて
2011-11-02 13:39:14
@kumagi じゃないかな。言語の選択ってある程度絞ったらあとは好みの問題、っていう側面結構ありそうだし、RubyとPythonの違いを考えると尚更
2011-11-02 13:40:23
@kumagi 「今さらCとかの低級言語で言語処理系書くのしんどい書きたくない」という問題を解消するという意義があるのでは。では処理系を記述する言語に何を選ぶかというと、Pythonの処理系作る人の得意な言語はPythonでしょうし、Rubyも然りで。他の言語選ぶよりも自然な気が
2011-11-02 13:36:26
@kinaba 「処理系の実装のハードルを下げる」という事でしょうか。個人的にはC言語でPython処理系を書くよりもPythonでPythonのJITコンパイラを書くほうがしんどいんじゃないかと想像するのですが。
2011-11-02 13:39:24
@kumagi え、そうでしょうか。Cで書くよりもPythonで書く方が難しくなるポイントがあまり思い当たらないのですが (型がない…とかは好みの問題だと思うのでさておくとして)。
2011-11-02 13:44:11
@kinaba 同じものを作り上げるなら遙かにPythonの方が簡単だと思いますが、それでもJITコンパイル付き処理系を書くというのはハードルが更に高そうに見えます。元よりJITコンパイラを作りたくて、その為の一番簡単そうな選択肢がその言語自身、という事でしょうか。
2011-11-02 13:47:00
@kinaba @kumagi レキシカルアナライザだけは、Cで書いた方がPythonより簡単なような(Cは十分速くて、素直に書けばOKなので)。もっとも、Java VMくらいの速度が出れば素直に書くのに十分な性能なので、僕がPythonの性能を見くびりすぎかもしれませんが。
2011-11-02 13:55:57
@finalfusion @natsutan @kinaba @kumagi ん、もともとは缶切り(別の言語やコンパイラ)がなくても缶が開けるようにってことだと思ったけど。ま、Python の JIT がそこまで考えてやってるかどうかは知らないけど
2011-11-02 13:43:19
@kumagi @rayfill hogehogeランタイムのJITコンパイラをhogehoge言語で書いてhogehogeランタイム上で動作させることによって、JITコンパイラ自身もJITコンパイルされて高速化されるのです (`・ω・´)
2011-11-02 13:47:21
@kumagi PyPyは必ずしもPython処理系だけじゃなくて「JITコンパイラつき処理系をお手軽に作るためのランタイム」なので、それが作りたいものであって、「そのお手軽に作るための記述言語」はどうせなら自分自身にしておいた方が自分自身も高速化できるし悪くないと思うのです
2011-11-02 13:50:58
@kinaba 特定の処理系に依存しないJITコンパイラ!!そんな途方もないものを作ってたんですね。なるほど、氷解しました。ありがとうございます。
2011-11-02 13:53:22
@kumagi Prolog とか JavaScript (のサブセット) とか Brainfuck とか色々処理系がPyPyのレポジトリか別レポジトリだったかに入ってます (Pyrologについては割と色々資料も http://t.co/2JHs72P0)
2011-11-02 13:57:50