Re: [問題] interprete &compile 這兩個字

看板PLT (程式語言與理論)作者 (ggg)時間17年前 (2007/08/10 18:52), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串4/6 (看更多)
※ 引述《godfat (godfat 真常)》之銘言: : 下次超過三行盡量用回文的 : : 推 micbrimac:謝謝 08/10 : : → micbrimac:我還有一些問題 08/10 : : → micbrimac:比如說,我可以說html是一種language 08/10 : : → micbrimac:而java script是嵌在它上面的某個東西嗎 08/10 : 可以,css 與其他的也都是。 : : → micbrimac:還有,就是邊跑邊轉跟直接轉成targert code 比 08/10 : : → micbrimac:會有甚麼好處嗎,因為這樣不是反而比較麻煩 08/10 : : → micbrimac:每次都要轉 08/10 : 也許對電腦來說麻煩吧 XD 好麻煩喔,每次都要再轉 XD === 現在的技術改進了. 譬如一個 while 或 for loop , compiler 只對這個 loop block 檢查與翻譯一次, 但 interpreter 每次 loop 都得對每個 statement 都要再檢查與翻譯一次. 但最新的 interpreter 方法是: loop block 內的指述(statement)先以整個 block 被簡查與翻譯一次記起來, 當 再度 loop 時就可以發現已翻譯, 就能 "再用", 這就可以逼近 compiler 的效率, 如果一個原始程式很大一段都不會執行到, 就更可 能比 compiler 運氣好而變快了. : 但對人類來說可輕鬆多了,因為你不必等他轉換完畢, : 就可以直接執行程式,你可以迅速地修改,然後測試執行, : 多於程式與程式間的呼叫,彈性也高了許多。 : 所犧牲的自然就是效能會和 compiled program 差很多了,數百倍以上。 只要儲存 "再用碼" 的記憶體夠大, 這種 block translation 的 interpreter 就逼近甚至超越 compiler 了. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.1.146

08/11 21:07, , 1F
可以解釋成從記憶體和從硬碟execute的差異嗎
08/11 21:07, 1F

08/11 21:07, , 2F
謝謝
08/11 21:07, 2F

08/11 22:06, , 3F
現代的 interpreter 未必就慢, 使用 Block Translation
08/11 22:06, 3F

08/11 22:07, , 4F
都是在 run-time memory 進行, compiler 的翻譯都在執行
08/11 22:07, 4F

08/11 22:09, , 5F
前就對整個原始程式翻譯完畢, 不過也有前半段用 compiler
08/11 22:09, 5F

08/11 22:11, , 6F
至中間碼, 後半段再對中間碼用 interpreter 執行.
08/11 22:11, 6F

08/12 12:26, , 7F
JIT - Just-In-Time. http://0rz.tw/ac2Xx
08/12 12:26, 7F
文章代碼(AID): #16l4Duja (PLT)
文章代碼(AID): #16l4Duja (PLT)