天天看點

《像計算機科學家一樣思考Java》—— 1.1 什麼是程式設計語言

本節書摘來異步社群《像計算機科學家一樣思考java》一書中的第1章,第1.1節,作者:【美】allen b. downey,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

像計算機科學家一樣思考java

你即将學習的語言是java,這是一種相對較新的語言(sun公司于1995年5月釋出了java的第一個版本)。java是一種進階語言(high-level language),你可能聽過的其他進階語言還有python、c、c++和perl。

有了“進階語言”,還有低級語言(low-level language),有時候也叫做機器語言或者彙編語言。粗略地說,計算機隻能夠執行由低級語言編寫的程式。是以,由進階語言編寫的程式必須先被翻譯成低級語言才能夠運作。這樣的翻譯過程是需要時間的,這也是進階語言的一個小缺點。

但是,進階語言的優點卻太多了。首先,使用進階語言進行程式設計容易得多。花的時間更少,代碼更短,更容易閱讀和修改。其次,進階語言具有可移植性(portable),這意味着進階語言可以在幾乎不修改的情況下運作于多種計算機平台。相比之下,低級語言隻能在一種計算機上運作,如果要在另一種計算機上運作,則需要重新編碼。

鑒于進階語言的這些優點,幾乎所有的程式都是用進階語言編寫的。低級語言隻适用于少量特殊的情況。

對由進階語言編寫的程式進行翻譯有兩種方式:解釋(interpreting)和編譯(compiling)。完成解釋任務的程式叫做解釋器,它讀入由進階語言編寫的程式,并且按照進階語言的指令執行程式。實際上,解釋器按行對程式進行翻譯,然後執行指令。

完成編譯任務的程式叫做編譯器,它在運作任何一條指令之前先讀入由進階語言編寫的程式并一次性對該程式進行編譯。通常,編譯過程是一個單獨的步驟,程式的運作則在編譯過程之後。在這種情況下,進階語言稱為源代碼(source code),經編譯器生成的程式稱為目标代碼(object code)或者可執行程式(executable)。

java語言編寫的程式既可以被編譯,也能夠被解釋。和其他語言不同的是,java的編譯過程并不生成機器語言,而是生成位元組碼(byte code)。位元組碼和機器語言一樣,可以被容易(和快速)地解釋,而它又像進階語言一樣具有可移植性。是以,在一台機器上編譯java,在另一台機器上解釋運作是可能的。這也是java相比其他進階語言的一個優勢,如圖1-1所示。

《像計算機科學家一樣思考Java》—— 1.1 什麼是程式設計語言

雖然圖1-1所示的這個過程看來很複雜,但在大多數程式開發環境下這個過程已經被自動化了。通常你隻需要編寫源代碼,然後點選一個按鈕或者鍵入一個指令便可以完成程式的編譯和運作。而另一方面,知道背後在發生些什麼事對程式開發者是有價值的,這樣就可以友善地找到整個過程中出錯的地方。