1. はじめに
我々が普段使用しているコンピュータは2進数(ブール代数)を採用しており、半導体の状態が導体か絶縁体かの区別しかありません。
これを01のみで表現する機械語と言いますが、人間が読み書きすることは困難を極めるため、より自然言語に近い高級言語が考案されました。
今回はC Java PHPという代表的な高級言語がいかにして機械言語に変換されていくかにフォーカスを当ててみたいと思います。
2. コンパイルとビルドってなに?
本題に入る前にコンパイルとビルドについての説明をしておこうと思います。
先ずコンパイルですが、これは単に高級言語を機械言語に変換するというだけの意味です。
多くの場合は、何かしらの中間言語を経由します。
スクリプト言語もしくはREPLツールを使用する場合は1行ごとに中間言語を経由して即時に機械言語に翻訳するという時間短縮技も可能です。
続いてビルドですが、これは既にコンパイルしたファイルを纏めて実行ファイルとして吐き出し、実際に実行するといった一連の流れのことを指します。
スクリプト言語の場合は明示的なビルド作業が必須ではなかったりします。
3. Cが機械語に変換されるまで
組み込みでよく使われるC言語は実行される前に一旦アセンブリ言語に翻訳されて、そのまま機械語に翻訳されます。
実行速度が比較的速いと言われています。
4. Javaが機械語に変換されるまで
様々なビジネス領域のシステム化に使われるJavaですが、こちらは実行タイミングで仮想マシンJVMがバイトコード変換し、その次に機械語に翻訳といった流れになります。
明示的なビルド作業が要求され、ビルドを行うと .jarファイルが出力されます。(.exeファイルのようにクリックするとアプリとして動かせます。)
5. PHPが機械語に変換されるまで
PHP言語はCよりもJavaに近いイメージで、実行タイミングでサーバ側でオプコードに変換し、その次に機械語に翻訳されます。
インタープリタ方式で1行ずつ実行でき、明示的なビルドツール起動が求められる訳ではない為、Javaよりも開発自体の速度感は速いです。
6. 感想
最終的には全て同じ2進数に変換されるというだけですが、色々な中継地点があったり、システム開発ごとに最適な言語選びがあったりと色々選択肢が豊富なのが面白いなと思いました。
- 閲覧数 7
コメントを追加