ここから本文です

「コンパイラ」と「インタプリタ」について、それぞれどのようなものでありますか?

jkt********さん

2014/6/713:19:45

「コンパイラ」と「インタプリタ」について、それぞれどのようなものでありますか?

閲覧数:
121
回答数:
3
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

yos********さん

2014/6/715:29:24

どちらも人間がプログラミング言語で記述したソフトウェアの設計図(ソースコード)を、コンピュータが実行できる形式(オブジェクトコード)に変換するものですが、インタプリタ型の言語はプログラムの変換しながら実行を行うのに対しコンパイラー型は実行時にはオブジェクトコードを直接実行するので、その分インタプリタ型よりコンパイラ型言語の方が速いです。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

hid********さん

2014/6/718:26:30

コンパイラーは、ソース・コードに基づいて、
機械語で書かれたオブジェクト・コードを生成して、
オブジェクト・ファイルを出力する翻訳ツールであり、
開発支援ツールの一部の機能です。
実行可能なプログラム・ファイルを作成するには、
動作を支援するオブジェクトとの結合を行うための
リンクによる実行ファイルの生成が、必要になります。

インタプリターは、ソース・コードに基づいて、
直接、機械語を生成して、同時にプログラムとして
動作させる翻訳実行ツールです。
OSの機能を使うことも多く、実際には、
予め用意されている機械語のプログラムを動作させることが、
大部分を占めることも多くあります。
コンパイルやリンクのような中間的な作業を必要としません。

fat********さん

2014/6/715:57:23

インタプリタとは、プログラミング言語で書かれたソースコードないし中間表現にある命令列を逐次解釈しながら実行するプログラムのこです。

インタプリタは次のだいたいいずれかの動作をするプログラムです。

(1)ソースコードを直接実行する。例)昔のマイクロコンピュータのTiny BASIC等。

(2)ソースコードを何らかの効率的な中間表現に変換し、それを即座に実行する。例)Perl、Python、MATLAB、Ruby等。

(3)システムの一部であるコンパイラが生成し出力した、コンパイル済みの中間表現を実行する。例)Java。

インタプリタのソースプログラムはそのマシンのハードウエアに依存しない中間的なコードに事前にコンパイルされ、実行時にリンクされ、インタプリタで実行されます。

プログラミング言語処理系の実装(コンユーター内で実際に使うこと)は、一般にインタプリタとコンパイラの2つがあります。

しかし、完全に2つに分離して分類できるわけではありません。

なぜなら多くのインタプリタ方式の処理系は、コンパイラが行っているような変換も内部で行っているからなのです。

「インタプリタ言語」あるいは「コンパイラ言語」といった表現も見受けられますが、これらは単にその言語の規範的実装(主な部分を占めている翻訳部分)がインタプリタかコンパイラかを示しているに過ぎません。

インタプリタが実際に内部で行っている、コンパイラのような変換のひとつに、高速化などを目的とした、実行時コンパイラによる動的コンパイルが存在します。

インタプリタはプログラムを逐次機械語に変換して実行する、という説明を良く聞きますが、それは正しくはありません。

そのような動作は動的コンパイルを意味していて、それを行うインタプリタも損ざしますが、全てのインタプリタがそのような動作を行っているわけではないので、総称としての「インタプリタ」の説明とは言えません。

以上、Wikiペディアより引用、加筆、変更を致しました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる