コンピューター理論、チョットデキルようになりたい

コンピュータサイエンスの学び直しです

学び直し39日目:7章 バーチャルマシン#1:展望

記録

フロントエンドとバックエンド

高水準言語のコンパイラは、二段階構成となっている。高水準言語から中間言語へと変換され、中間言語からハードウェアプラットフォームの機械語へと変換される。前者を「フロントエンド」、後者を「バックエンド」と呼ぶらしい。

有名な VM

中間言語を実行できる実体のない仮想的で抽象的なコンピュータのことをバーチャルマシン(VM)という。代表格は、オラクルの「Java 仮想マシンJVM)とバイトコード(という名の中間言語)」とマイクロソフトの「CLR(.NET フレームワークで提供される Common Language Runtime という仮想マシン)と中間言語(intermediate language, IL)」。これらVMをコンピュータに入れてあげることで、様々な高水準言語に対して VM 上で実行できるソフトウェアライブラリが提供可能とのこと。

VM 向けに提供されるライブラリによって、メモリ管理、GUI 操作、文字列処理、数学関数などのサービスを VM 上で実行実行できるようになるらしい。これらのフレームワークは小さな OS のようなもの。

まとめ

VM に対する発想や概念としては、超おおざっぱにまとめると以下のような理解(専門家の人から怒られそう…)。

「一番上(高水準言語)と一番下(機械語)が多種多様なので組合せ爆発する。」
「別ハードウェアで動かしたいときの移植も大変…」
 ↓
中間言語を間に挟んで、そいつに良しなに変換してもらお!」
機械語を追加したいときはバックエンドだけ対応すればいいし、新高水準言語に対応したいときはフロントエンドだけ対応すればいいじゃん!」

今日の筋トレ

リングフィットアドベンチャー。。。有限不実行になってしまっている。。