「コンパイラ型」言語と「インタプリタ型」言語に関するまとめ

まとめ主がツイートした、「コンパイラ型」言語という分類は誤り、というところから派生した一連の話題をまとめたものです。抜けているのがあれば好きに追加してください。
20
Takeshi ITOH @it00h

インタプリタ型で実行時ならないとエラーを検出しないケース。c0(c1?)カバレッジを前提とした場合にコンパイラ型言語と比較して出荷後の不良の比率で優劣あるのだろうか。

2019-09-09 11:05:57
プログラミング資格試験ナビ @hpeo_pg

Pythonのプログラミング言語としての分類として、正しいものを選べ。 A.低水準型 B.インタープリタ型 C.トランザクション型 D.コンパイラ型 #Python3エンジニア認定 ite.hpeo.jp/entry/python/e…

2019-09-13 11:27:35
うめうさぎ @UmeRabbit

@koiwai_g コンパイル言語はいいな!型定義するもんな! まさか配列期待のメソッドからカンマ区切りの数値文字列が出るパターンがあるなんて考えねえよ!

2019-09-13 19:24:47
Panda@プログラミング演習 @Pract1328

プログラミング言語の実行形式の違い コンパイル型 - コードを機械語または中間コードに変換して実行 - 利点 : 利用者がすぐ実行できる - 欠点 : コンパイルに時間がかかる スクリプト型 - コードをそのまま実行できる - 利点 : 開発のオーバーヘッドが少なくなる - 欠点 : 比較的遅い

2019-09-13 20:13:11
Yanaka @wayaqu

観測圏でいくらtypescriptとかコンパイル言語とかJSのフレームワークが流行っても俺はインタプリタ型言語でフレームワーク使わずに書く(というのを宗旨変えする可能性もあるけど😂)

2019-09-13 22:48:47
プログラミング資格試験ナビ @hpeo_pg

Pythonのプログラミング言語としての分類として、正しいものを選べ。 A.低水準型 B.インタープリタ型 C.トランザクション型 D.コンパイラ型 #Python3エンジニア認定 ite.hpeo.jp/entry/python/e…

2019-09-14 08:27:35
働きたくないさくらさん @ScrTy_CCS

プログラミング教育やるなら、CとかJavaじゃなくて、PHPやRubyから始めるべきなんですよ まぁ、インタプリタに慣れると、コンパイラ型言語はまずやらないだろうけど

2019-09-14 15:18:45
A2sH4i @a2222shi

僕はまだインタプリタ型言語というのしか勉強していないんだな。 コンパイラ型言語もある程度今の勉強が進んだら始めるか。 #programming #engineer #プログラミング学習

2019-09-14 20:40:17
kmizu @kmizu

最近、一部のプログラミング入門書は継続的に「コンパイル型言語とインタプリタ型言語」とか、「インタプリタ型言語は一行ずつ翻訳して実行している」とか、後で修正されない誤りの元を広めていることが多いという気がしてきた(というか、実際、それが派生したと思われる間違いを多く目にする)。

2019-09-15 08:50:00
S (ツイートはスレッド全体をご確認ください) @esumii

「インタプリタは命令を読みながら実行する」「コンパイラは命令を別の言葉に翻訳してから実行する(翻訳した命令は、また別のインタプリタなりコンパイラなりで実行する。それがハードウェアの場合もある)」で良いので、「1行ずつ翻訳」という嘘解説は「わかりやすさ」のメリットもない。

2019-09-15 09:03:45
kmizu @kmizu

「コンパイラ型言語」と「インタプリタ型言語」とかの説明で納得したままでいられると何が嫌かというか、たとえば処理系の速度とかに関する議論をしようとおもうと、議論相手が言語仕様と処理系をごっちゃにして、話が伝わらないことが多いことなどがあると思います。

2019-09-15 09:04:31
kmizu @kmizu

ちなみに、私がみたところ、「コンパイラ型(コンパイル型)言語」と「インタプリタ型言語」という説明をしている人のいくらかは、そもそも(典型的な)インタプリタが何やってるかを理解されていないのでは、と思っています。その辺は、「インタプリタ型言語」でぐぐっていただけるとわかるのですが。

2019-09-15 09:35:31
kmizu @kmizu

あと、「インタプリタ」ってそもそも、むしろ正しい説明の方が(少なくともググった範囲では)少ないのでは、と思った。いや、機械語に「翻訳」しているわけじゃないんだってば。

2019-09-15 09:38:52
kmizu @kmizu

インタプリタがなにかってのは、たとえば数式をevalする関数でも書いてみればすぐわかると思うのですけど。 def eval(e: Exp): Int = e match { case Add(l, r) => eval(l) + eval(r) ... case Value(v) => v } このevalが「機械語に翻訳している」とは思えませんよね、と。

2019-09-15 09:45:12
S (ツイートはスレッド全体をご確認ください) @esumii

そりゃまあちょっとでも中身を知ってれば「インタプリタは1行ずつ翻訳」とか思わないですよね…

2019-09-15 09:58:01
kmizu @kmizu

@book_western 読んでみましたが、一行ずつ「翻訳」の部分を否定していることが伝わっていなかったように思います。一行ずつ「解釈」しているインタプリタは昔はあったと思います。

2019-09-15 10:07:25
📕book_western📚 @book_western

振り返ってみると黎明期はむしろコンパイル型の言語の方が多いと思う。インタプリタはむしろ次の世代かもしれない(調査していないので不正確)。

2019-09-15 10:37:47
極端流形式仕様 初代𝕍𝕚𝕖𝕟𝕟𝕒𝕋𝕒𝕝𝕜𝕖𝕣 @tomooda

インタプリタ型言語とかコンパイラ型言語とかは間違い、ってのはまあ実際問題そういう記述がある文章は間違っていることが圧倒的に多いわけだけど、言語仕様で処理系の方式を定めている言語もありうるわけで、その言葉自体を間違いと断定するのもどうかなと思う。なんとなく。

2019-09-15 12:13:29
kmizu @kmizu

@zacky1972 あ、あと、インタプリタが「一行ずつ」「翻訳」している、という誤りについてもですね(インタプリタの「解釈」という挙動があまり理解されていないようだ、という問題意識です)。

2019-09-15 13:24:56
po @podhmo

インタプリタが一行ずつ解釈するとか誤解してる人存在するの?

2019-09-15 13:26:40
そすうぽよ @_primenumber

言語に備わった性質として「インタプリタ型・コンパイラ型」みたいなのが決まるわけではないしなあ C++でさえインタプリタと対話型インターフェイスが存在するし( github.com/root-project/c… ) もっともリフレクション要素があるとコンパイラを作るのは大変そうだけど。

2019-09-15 13:50:06
kmizu @kmizu

「コンパイラ型」言語と「インタプリタ型」言語は、普通にお仕事関連で見たことから来る問題意識で、この区別がたとえ誤っていようとプログラムはもちろん書けると思うんですが、言語の実行モデルに関することに話が及んだときに話が通じなくなる恐れが高いので、この誤った区別はリアルに嫌です。

2019-09-15 14:06:04
はたの☆☆☆☆☆☆☆Mind-1 @hatano

言語にコンパイラ型とインタープリタ型があるのではなく言語処理系にコンパイラとインタープリタ(とそのハイブリッドな様々)があるんだけどね。

2019-09-15 14:09:06