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