2011年4月28日 星期四

5. Scala 的企圖心,也是它的特性 --compiler 還是 interpreter

Compiler 還是 interpreter?在選擇一個語言時,這也是一個選擇因素。

Compiler 需要重新 compile 所有程式碼,轉成 machine code(在 Java 中轉成 bytecode),再執行machine code(或 bytecode),所以通常執行速度會較 interpreter 的方式快。

Interpreter 直接吃原始碼,執行時需要先轉換原始碼再執行。通常用 interpreter 方式的執行速度,會較使用 compiler 方案的速度慢。
其實使用 interpreter 方式,除了執行期間需轉換原始碼外,動態型態也是執行慢的重要因素之一。但使用 interpreter 方式的好處是開發時快,修改完程式,馬上可以執行,不用等待 compile 的時間。

在 C、C++ 的專案中,通常若是專案夠大,compile 的時間確是一段需要考量的因素。但 compile 時間在 Java 環境中比較小,Java 由於它的特性,linkage 的部份延遲到 runtime 時執行,因此 compile 的時間通常不會到讓人難以忍受的地步,所以使用使用 compiler 的方式顯然較佔優勢。

Scala 延續 Java 的使用 compiler 的方式,但為了支援 script 的寫作方式(別忘了,Scala 想要取代各式的應用),所以也支援 interpreter 的作法。
若你討厭每次原始碼寫完要 compile,你可以寫一段Scala程式碼,直接讓 Scala interpreter 來執行,雖然這種情況,在 Scala 世界非常少見。

沒有留言:

張貼留言