インタプリタ言語の処理の仕組みを理解したく勉強しています。
「インタプリタは逐次的に解釈しながら実行していくものであって、機械語に翻訳しない」と書かれていますが、どういう意味でしょうか?
まず初心者は、プログラムは人間が書いたものなのでそれを機械語にする必要があって...ということから教えてもらうのですが、その上でインタプリタの上記の説明を聞くと、矛盾しているように聞こえます。
すなわち、解釈と翻訳の違いがよく分からないので、どなたか教えていただけませんでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/06 08:45
2021/02/06 08:47
2021/02/06 08:52
回答4件
0
機械語に翻訳しない
これは、機械語の翻訳したものを生成・保存しない ということです。
コンパイラでは、機械語への翻訳結果を保存 (例えば foo.exe とか) に保存して、
実際のプログラム実行は foo.exe を実行するようにします。
インタープリタでは、機械語の翻訳を保存しません。
プログラム実行は、ソースコードのファイルを読み込んで実行します。
英語の文章を日本語に翻訳して本にして、日本人がその本を読む というのが コンパイラ言語の実行の仕組みです。
英語の会話をその場で同時通訳して、その日本語を聞く というのが インタープリタ言語の実行の仕組みです。
これは あくまでも BASICな考えです。
実際には、機会後を保存せず、別の堅固の翻訳・保存し、実行ときはその別言語をインタープリトするとか、
インタープタで通訳した結果を保存しておいて、同じ文書が現れたときは、その翻訳結果を使うようにするなど、
コンパイラ・インタープリタが混在したようなものなっていることもあります。
(コンパイラー, インタープリタの各デメリットをなるべく無くそうとする工夫の結果です)
参考情報
- 1分で理解できる!コンパイラとインタプリタの違い【初心者向け】
https://it-biz.online/it-skills/interpreter-compiler/
- インタープリタ方式とコンパイル方式
投稿2021/02/06 23:09
総合スコア22324
0
ベストアンサー
今はそういう典型的なインタプリター言語はほぼないと思いますが、昔はありました。
例えば、下記の2種類の文だけがある簡単な言語を考えます。
print 10進定数
その数値を出力する
end
プログラムの終了
この言語のインタプリターは例えば、
Python
1while True: 2 prog = input().split() 3 if prog[0]=="print": 4 print( int(prog[1]) ) 5 elif prog[0]=="end": 6 break
です。何も機械語に翻訳していませんよね?
繰り返し文や条件文など、またちゃんとした文法エラーメッセージも、同じ要領で機能追加していけます。
投稿2021/02/06 08:20
総合スコア85886
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/06 08:23
2021/02/06 08:27
2021/02/06 08:34
2021/02/06 08:41
2021/02/06 08:46
2021/02/06 10:39
2021/02/06 10:52
2021/02/06 11:21
2021/02/06 11:27
2021/02/06 11:35
2021/02/06 11:52 編集
2021/02/06 11:57
2021/02/06 12:09
2021/02/06 12:21
2021/02/06 12:22
2021/02/06 12:36
2021/02/06 12:37
2021/02/06 12:38
2021/02/06 12:39
2021/02/06 12:40
2021/02/06 12:42
2021/02/06 12:43
2021/02/06 12:44
2021/02/06 12:45
2021/02/06 12:50
2021/02/06 12:50
2021/02/06 13:04
2021/02/06 13:07
2021/02/06 13:08
2021/02/06 13:11 編集
2021/02/06 13:22
2021/02/06 13:25
2021/02/06 13:33
2021/02/06 13:37
2021/02/06 13:45
2021/02/06 14:09
2021/02/06 14:10
2021/02/06 14:21 編集
2021/02/06 22:18
2021/02/07 11:53 編集
2021/02/07 11:58
2021/02/07 16:47
0
ありがとうございます!
otn様の例であれば、例えばprintという文があったときに、それがインタープリタのif文の判定が真か偽かを判定する際には、機械語に翻訳して判定すると思うので、その意味では機械語に翻訳しているのではないでしょうか?
投稿2021/02/06 08:27
総合スコア4
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/06 08:36 編集
2021/02/06 08:43
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。