読者です 読者をやめる 読者になる 読者になる

コンパイラ型、インタプリタ型、中間コード型の違い

プログラミング言語の分類

プログラムを実行するにはプログラムを機械語に変換する必要がある。その変換して実行する形式にはインタプリタ型とコンパイラ型と中間コード型の3種類がある。

  1. コンパイラ型 プログラム全体を一括して機械語に変換し、単独のソフトにする。○○(C言語など)コンパイラといえば○○言語で書かれたプログラムを実行形式のプログラムに変換するソフトウェアの事(→☆)。デバッガと呼ばれるソフトで動作を時々止めながらバグを取り除く(デバッグ)必要がある。
  2. インタプリタ型 インタプリタというソフトウェアがプログラムを読み込み一行ずつ直ちに機械語の命令にして実行してくれる。なのでプログラムの一部であっても実行することが出来る。ちなみにインタプリタ型のプログラミング言語は実行や記述を比較的簡単に行うことが出来るのでスクリプト言語とも呼ばれることが多くある。但しスクリプト言語の定義はややこしいので深入りしない。
  3. 中間コード型 インタプリタ型とコンパイラ型との中間。まずプログラムはコンパイルされます。しかしここで一挙に機械語に変換はせず、中間コードという非高級(人が読めない)で非機械語の(低級?)コードに変換されファイルに保存される。このファイルを仮想機械(バーチャルマシン)というインタプリタインタプリタ型のように実行してくれる。(中間コードと連呼したがJavaではこれをバイトコードと呼ぶ)

(→☆)の部分(静的/動的リンカ)

厳密にいうとコンパイラ機械語の命令の束にするまでのソフトウェアで、その結果をファイルにしても必ずしもアプリケーションになるとは限らない。コンパイル時にプログラムの中では、自分の中だけでは内容がわからない(未定義)関数と分かる(定義済み)関数とに分け継ぎ目みたいな記号を書き込む、という作業を行っています。未定義関数ってのはライブラリの関数ことです。そのあとリンカというソフトウェアが未定義部分をライブラリのファイルから必要なところを持ってきて継ぎ目を結びつけます。リンカには静的リンカ動的リンカとの2種類があり、静的リンカは上で述べた作業を普通に行い、動的リンカでは継ぎ目状態でとりあえず実行ファイルを書き出し、必要になったとき(実行されたとき)に継ぎ目を調べて結びつける。動的で参照先となる機能がまとめられたファイルをDLL(Dynamic Linc Library)と呼ぶ。実行ファイルごとにライブラリをリンクしないことによって同じ機能を何回もリンクする必要がなくなる。

 

http://cdn38.atwikiimg.com/hiropknot/?plugin=ref&serial=6

hiropknot @ ウィキ - 共有ライブラリの管理

 

コンパイラ言語とインタープリタ言語

コンパイラとインタプリタ

http://www.geocities.jp/naosacra/mops/forbeginner/2.html

色々参照させてもらい、書きました。間違ってるところがあったら教えてください。