Re: [請益] 想不通直譯器vs編譯器vs機器碼的問題消失

看板Soft_Job (軟體人)作者時間7年前 (2018/05/09 03:55), 7年前編輯推噓1(2110)
留言13則, 7人參與, 最新討論串5/9 (看更多)
※ 引述《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
一種JVM專用的程式語言.
05/09 04:05, 2F

05/09 04:08, , 3F
因為看文章中放的位置不像是指byte code...XD
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
python也有byte code吧
05/09 08:38, 5F

05/09 08:46, , 6F
而像JAVA屬於先編譯後直譯的語言......(X)
05/09 08:46, 6F

05/09 08:47, , 7F
然後class檔再一行一行以直譯的方式進行(X)
05/09 08:47, 7F

05/09 08:50, , 8F
這種問題居然有四篇回應 = =a 大家都很閒的樣子
05/09 08:50, 8F

05/09 08:50, , 9F
下次我貼一篇 "為什麼 g++ 不能 compile 我的 html/css"
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
前一篇就講很細了呀 看不懂wiki也有寫
05/09 09:15, 13F
文章代碼(AID): #1QyW3BzE (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1QyW3BzE (Soft_Job)