作者suhorng ( )
看板PLT
標題Fw: [理工] 程式語言觀念
時間Wed Nov 19 12:24:21 2014
※ [本文轉錄自 C_and_CPP 看板 #1KQisME6 ]
作者: littleshan (我正在想要換什麼) 看板: C_and_CPP
標題: Re: [理工] 程式語言觀念
時間: Tue Nov 18 12:39:47 2014
※ 引述《gauss760220 (宅哥)》之銘言:
: ※ [本文轉錄自 Grad-ProbAsk 看板 #1KQe7Yfy ]
: 作者: gauss760220 (宅哥) 看板: Grad-ProbAsk
: 標題: [理工] 程式語言觀念
: 時間: Tue Nov 18 07:16:47 2014
: 國考裡面有個題目
: "為何Interpreter比Compiler更容易加入新的程式語言觀念?"
: 請問這題該怎麼回答?
這個命題根本就是錯的。
Interpreter 是給一段程式碼,它直接跑出結果送給你。
Compiler 是給一段程式碼,它翻譯成另一個語言、會跑出同樣結果的程式碼。
它們的差別只有在最後產出結果的地方不同,
而前面的 parsing 與 semantic check 則完全相同。
對程式語言來說,前面的部份才是關鍵。
現在的語言早就沒在分什麼 interpreter 與 compiler,
都嘛是做在一起,像 python / ruby / haskell / ocaml,
它們都同時具備 compiler 與 interpreter,
也都有很豐富的語言特性。
就像「compiler產生的程式碼跑得比interpreter快」之類的命題,
這些其實都是以訛傳訛的錯誤印象。
compiler 與 interpreter 差別就只是一個做翻譯、另一個給結果,
沒有道理哪個比較容易修改、或哪個執行起來比較快。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.32.97
※ 文章網址: http://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1416285590.A.386.html
1F:→ carylorrk: interpreter 的特性通常還包括遇到才翻譯並執行,所以 11/18 13:08
2F:→ carylorrk: JIT 通常算是 compilation,從 QEMU 的 TCI/TCG 也可以 11/18 13:09
3F:→ carylorrk: 看得出來並不是執行會順便跑出結果的都被稱作是 11/18 13:10
4F:→ carylorrk: interpreter。不過這之間的差異越來越小是真的。大多數 11/18 13:11
5F:→ carylorrk: interpreter 越來越複雜,像 python 也有很多實作往 11/18 13:16
6F:→ carylorrk: JIT 靠攏(雖然支援度都還有待加強。) 11/18 13:17
7F:推 carylorrk: 回到原本的問題,interpreter 比較簡單在很多時候是對 11/18 14:00
8F:→ carylorrk: 的。 compiler 通常需要處理比較多 state 的問題,而 11/18 14:01
9F:→ carylorrk: interpreter 可以在 dispatcher 的地方處理而簡化問題 11/18 14:03
10F:→ carylorrk: 不過當然現在成熟的語言有太多影響的因子在,實在很難 11/18 14:19
11F:→ carylorrk: 一概而論。(跟 target 也有關係) 11/18 14:20
12F:推 suhorng: 請問可以借轉嗎 11/18 23:05
13F:→ littleshan: 請轉 11/19 12:21
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: suhorng (140.112.16.135), 11/19/2014 12:24:21
14F:推 NilPtr: 分享一下之前我寫到的題目,請問Java是? (A)應用軟體 12/23 23:42
15F:→ NilPtr: (B)系統軟體 (C)程式語言 (D)多媒體軟體 。解答竟然是A... 12/23 23:44
16F:→ NilPtr: 是說我有很多朋友看不起跑在直譯器的程式語言,被嫌慢 12/23 23:46
17F:→ NilPtr: 只能搖頭跟他們說有時候程式執行速度沒那麼重要= = 12/23 23:47
18F:→ suhorng: 這題會不會太無言了XDDD 12/24 21:04
19F:→ suhorng: 總覺得直譯與編譯的界線有點模糊 12/24 21:04
20F:推 kidder: 所以是直譯跟編譯的差別呦...其實直譯器真的很少看到耶! 08/26 22:33