Re: [請益] 想不通直譯器vs編譯器vs機器碼的問題消失
※ 引述《dragoncfe168 (梅長蘇)》之銘言:
: 請問一下
: 為何直譯器將source code轉譯成機器碼,
: 不會產生不同電腦的機器語言不同 而無法執行的問題???
: 反觀同樣把source code轉譯成機器碼的編譯器
: 卻會有此類問題呢???
分享一點個人淺見
直譯指的應該是一種逐行執行的方式
而編譯會將你的整個程式碼跑過一遍檢查錯誤並優化成另一種code(Byte code)
直譯式語言如Python,JS
你可以輸入一行後馬上看到結果
而像JAVA屬於先編譯後直譯的語言
他會先將你的source code跑過一遍確認沒錯之後產生class檔
然後class檔再一行一行以直譯的方式進行
至於跨平台的部分
理論上java應該是這樣的
JAVA檔→(編譯)→class檔→(透過不同的jvm達到跨平台)→cpu看的code
達到一次編譯到處執行的效果(雖然有時候可能還是有意外)
而直譯語言通常會透過一個已經run起來的載體執行
JS碼→(瀏覽器)→cpu看的code
跨平台的部分是載體幫你做掉了
所以你載Chrome的時候他會叫你選windows版還是linux版
所以編譯直譯跟跨平台是兩回事
現在新出來的語言
不管是編譯還是直譯幾乎都有跨平台的效果
因為底層都有人幫你處理好了啦
寫程式的時候要心懷感激
大概是這樣
若認知有誤歡迎鞭策感恩
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.156.195
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1525809355.A.F4E.html
→
05/09 04:01, , 1F
05/09 04:01, 1F
→
05/09 04:05, , 2F
05/09 04:05, 2F
→
05/09 04:08, , 3F
05/09 04:08, 3F
啊我用錯名詞了
換比較通俗的說法好了
※ 編輯: srwhite (1.34.156.195), 05/09/2018 04:38:15
→
05/09 05:00, , 4F
05/09 05:00, 4F
推
05/09 08:38, , 5F
05/09 08:38, 5F
噓
05/09 08:46, , 6F
05/09 08:46, 6F
→
05/09 08:47, , 7F
05/09 08:47, 7F
→
05/09 08:50, , 8F
05/09 08:50, 8F
→
05/09 08:50, , 9F
05/09 08:50, 9F
→
05/09 08:50, , 10F
05/09 08:50, 10F
→
05/09 09:10, , 11F
05/09 09:10, 11F
推
05/09 09:10, , 12F
05/09 09:10, 12F
→
05/09 09:15, , 13F
05/09 09:15, 13F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 9 篇):
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章