インタプリタ型言語のメリットとしてよく コンパイルを必要としないのでプログラムをすぐに実行でき、不具合があればその場でエラーが確認できると書かれています。
ここでいう「不具合があればその場でエラーが確認できる」というのがよくわかりませんでした。
仮にソースコードの変更が直ちに反映される(ホットリロード)のことを指しているのであればコンパイル言語でもホットリロードをすることができますし、コンパイルする手間が省けるということだけを指しているのであれば go run (Golang コンパイル言語)コマンドなどコンパイルと実行を同時に行うコマンドが存在するのでインタプリタ型言語よりも確認が早いというわけではなさそうです。
コードの記入ミスの場合はエディタが判別してくれるのでこれもまた違う気がします。
実行時のエラー文の比較も行いましたが決定的な違いがわかりませんでした。
コンパイラ型言語の エラー文
Go
1./prog.go:34:24: undefined: a
インタプリタ型言語の エラー文
Js
1/workspace/Main.js:31 2console.log(primeNumber(a)) 3 ^ 4 5ReferenceError: a is not defined 6 at Object.<anonymous> (/workspace/Main.js:31:25) 7 at Module._compile (internal/modules/cjs/loader.js:1063:30) 8 at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10) 9 at Module.load (internal/modules/cjs/loader.js:928:32) 10 at Function.Module._load (internal/modules/cjs/loader.js:769:14) 11 at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) 12 at internal/main/run_main_module.js:17:47
なぜインタプリタ型言語の方がデバッグがしやすいと言われるのでしょうか?
何卒よろしくお願い致します。
コンパイラとインタプリタの違いは理解されているのでしょうか。
はい、かなり深い知識となるとわからない部分もあるかと思いますが
大体は理解しているつもりではあります!
なら普通に理解出来ると思うけどなー。
インタプリタは逐次翻訳、実行(1行毎)するから、途中で実行が止まったらすぐに不具合を探せる、
コンパイラはとりあえず全部翻訳して、んで全部実行してるんでコンパイル完了するまで不具合がどこか
わかんないからインタプリタより時間掛かるよぐらいの事だと思うけど。
勉強途中ならこの程度の理解で良いんじゃないですかね。
実行時のエラーと文法エラーなどのコンパイル時に検出可能な静的なエラーは分けて考えないといけないかなと。「不具合」というものが単なる「バグ」や実行時の想定外の環境でのものに伴うものを指すなら、結局実行時にしか分かりません。
> なぜインタプリタ型言語の方がデバッグがしやすいと言われるのでしょうか?
何というか、「参考にされた記事の執筆者の主観による意見ではないかな」と思いました。私自身はインタプリタ系の言語を使ったとき、実行時になかなか通らない特殊な条件のパスで、やっと通った時に初めて文法エラーの類が報告されるようでは逆にデバッグしづらいと感じるときがあります。これも特定のシチュエーション、個人の意見ですが。まぁ、皆がそう思いがちなのであれば、そうなのでしょう。
>参考記事
スクール系の記事を基本信用してないので・・・
比較のためとは言え、未だにObjective-Cが出てくるのもなんだかなぁって思った。
なんならインタプリタ型だのコンパイラ型だの比較する必要があるのか?
>dodox86さん
主観は大きく入ってると思います。
回答4件
あなたの回答
tips
プレビュー