0

我正在閱讀C語言書籍。 它說,語言翻譯問題

一些高級語言不是 編譯,但解釋。

Basic和Java是兩個編程 語言,其中程序 解釋和不編譯。其他 的例子包括Unix系統的 shell和Python。

C#和Perl怎麼樣?

我認爲C#應該總是編譯,Perl不會總是編譯。

是嗎?

+0

當然,許多版本的BASIC *都被編譯。這是低級語言的用戶試圖證明自己的痛苦持續存在的常見誤解。由於它被編譯爲字節碼,因此您也會遇到相當灰色的區域,但是會在虛擬機下執行,該虛擬機負責將其轉換爲當前處理器/環境的本機代碼。在這裏:http://stackoverflow.com/questions/2657268/whats-the-difference-between-compiled-and-interpreted-language – 2011-01-27 03:37:46

+0

@Cody他把這個問題標記爲基本的,因爲這是一個簡單的問題。 – 2011-01-27 03:51:51

回答

3

C#和Java都編譯,但不是本地代碼。它們被編譯爲字節碼(分別用於公共語言運行時和Java虛擬機),它們由VM解釋。

實際上,Perl可以被編譯,因爲有一個命令行選項可以從Perl生成C代碼並編譯它。但更普遍的是,Perl被解釋。

Perl和Python在正常運行時都被編譯爲字節碼,然後由它們各自的解釋器進行解釋。運行之前不需要編譯,與Java和C#不同。

通過C書的定義,只有將語言編譯爲直接在CPU上運行且不帶運行時的本地代碼(例如程序集)時纔會編譯語言。