前面我們說了,計算機是基于點工作的,它能直接理解的就是高低電頻所對應(yīng)的0101這種二進制指令。而直接用二進制編程的這種方式就是機器語言。
這種編程方式執(zhí)行效率是最高的,因為計算機可以無障礙理解。但是它的復(fù)雜度極高,開發(fā)效率極低,你可能要寫一大堆0101這種二進制數(shù),才能實現(xiàn)一個非常小的功能。
然后我們再來說匯編語言,匯編語言僅僅僅僅是用一個英文標簽,代表一組二進制指令。匯編語言打印一句Hello World,需要是十多行代碼(下圖)。
相對于機器語言,匯編語言使用英文標簽編寫程序相對簡單,執(zhí)行效率稍低。但還是太復(fù)雜,開發(fā)效率很低。
高級語言就是站在人的角度上,用人類的字符去編寫程序,但是高級語言離硬件更遠,更貼近人類的語言。人類可以理解,而計算機則需要通過編譯,最終轉(zhuǎn)換二進制計算機才能理解。
所以高級語言的執(zhí)行效率相對于前面兩種語言會低一些,但是開發(fā)效率卻得到了極大的提升。
在高級語言中,按編譯的方式不同又分為兩種。一種叫編譯型語言,比如C語言、另一解釋型語言種叫,比如我們Python。
編譯型語言就是程序?qū)懲曛?,用一個類似翻譯軟件把完整的源代碼‘翻譯’成為計算機能夠識別的機器語言。因此這個編譯之后的機器語言可以脫離其語言進行獨立執(zhí)行,執(zhí)行效率極高,但開發(fā)效率相對較低。應(yīng)用程序一旦需要修改,必須先修改源代碼,然后重新編譯生成新的目標文件才能執(zhí)行。
并且編譯型代碼是針對有一個平臺編譯的,當前平臺的編譯結(jié)果無法在其他平臺使用。因此跨平臺性也差。
而解釋型語言需要有一個解釋器,類似于一個翻譯官。解釋器解釋器會讀取程序代碼,解釋一行立馬執(zhí)行一行。因此執(zhí)行效率會被解釋器拖慢,但是開發(fā)效率極高,一旦發(fā)現(xiàn)錯誤直接修改就好,改完直接就可以運行。
解釋型語言針對不同的平臺會有不同的解釋,所以解釋型語言的代碼在不同的平臺也可以直接運行。
最后我們來總結(jié)一下
執(zhí)行效率:機器語言>匯編語言>高級語言(編譯型>解釋型);
開發(fā)效率:機器語言<匯編語言<高級語言(編譯型<解釋型)。
跨平臺性:解釋型語言跨平臺性極強!
由于現(xiàn)在主流開發(fā)的程序都是基于網(wǎng)絡(luò)通信,我們寫的程序執(zhí)行效率再高最終都會被網(wǎng)絡(luò)延遲拖慢,所以我們主要考慮就是開發(fā)效率和跨平臺性。這也就是Python現(xiàn)在這么火的原因之一。