個人的にrubyでコードを書く機会があって、バイトコードが処理されるまでの流れが気になったので
かなーり浅いレベルで探ってみました。
私の研究や開発では主にC言語でコーディングしているんですが、
(私の場合主にOSS APIやXlibなど低水準なものを使ったプログラム)
C言語の場合、コンパイルで字句解析と構文解析を経たあとにアセンブラに変換されそのバイトコードがロードされるという大まかな流れになっています。
javaの場合なら、コンパイル後javaバイトコードに変換され、それをロード、java仮想マシンを介してアセンブラ化して命令を渡すという流れ。(HotSpotとかネイティブに変換する機能もあるけど)
じゃあインタプリタ言語はなんぞ?っていうのが今回の疑問。
インタプリタ言語で代表的というか有名なのはPHPやPython,Perl,Ruby、だと思われます。
個人的にもそれらしか触ったことないっす。
インタプリタっていうとコンパイルと対照的なもので、実行するときに毎回アセンブラに変換して命令を飛ばすことになるんだけど、Rubyの場合の大まかな流れは、ソースをルーチンを介して構文木に変換(よう構造体のツリー構造ね)して、それを更にインタプリタのルーチンでアセンブリして命令を渡すという流れみたい。
普段何気なくRubyで書いてたりするけど、けっこういろいろやってんだなーって思った。
Pythonも同じ流れになってんのかな?どっちも同じオブジェクト指向スクリプト言語だし、
似てるとこ多いからやってることは同じだと思うんだけどねー
当方プロではないので、間違いがあっても責任とらんぜよ。
とりあえず、軽く調べただけだから、間違いとかあったら指摘してくださいな。
かなーり浅いレベルで探ってみました。
私の研究や開発では主にC言語でコーディングしているんですが、
(私の場合主にOSS APIやXlibなど低水準なものを使ったプログラム)
C言語の場合、コンパイルで字句解析と構文解析を経たあとにアセンブラに変換されそのバイトコードがロードされるという大まかな流れになっています。
javaの場合なら、コンパイル後javaバイトコードに変換され、それをロード、java仮想マシンを介してアセンブラ化して命令を渡すという流れ。(HotSpotとかネイティブに変換する機能もあるけど)
じゃあインタプリタ言語はなんぞ?っていうのが今回の疑問。
インタプリタ言語で代表的というか有名なのはPHPやPython,Perl,Ruby、だと思われます。
個人的にもそれらしか触ったことないっす。
インタプリタっていうとコンパイルと対照的なもので、実行するときに毎回アセンブラに変換して命令を飛ばすことになるんだけど、Rubyの場合の大まかな流れは、ソースをルーチンを介して構文木に変換(よう構造体のツリー構造ね)して、それを更にインタプリタのルーチンでアセンブリして命令を渡すという流れみたい。
普段何気なくRubyで書いてたりするけど、けっこういろいろやってんだなーって思った。
Pythonも同じ流れになってんのかな?どっちも同じオブジェクト指向スクリプト言語だし、
似てるとこ多いからやってることは同じだと思うんだけどねー
当方プロではないので、間違いがあっても責任とらんぜよ。
とりあえず、軽く調べただけだから、間違いとかあったら指摘してくださいな。