編程語言(機器語言、彙編語言、高級語言)解析

1 機器語言

所有機器都有一張操作命令清單,讓你可以控制它。有時這個清單非常簡短。電水壺就只允許兩種操作:打開和關閉。CD播放器稍微複雜點,除了打開和關閉以外,還能調節音量、播放、暫停、快進、快退、隨機播放等。

計算機和其他機器一樣,也有一張操作命令清單。比如,可以命令計算機把兩個數相加。這種操作命令的總和就是計算機的機器語言(machine language)。

機器語言(machine language)是機器指令的一個列表,其中的每個指令都能直接被處理器理解。它也可以理解成機器指令的一個執行序列。

低層次編程語言(low-level)是抽象程序較低的編程語言。它允許使用一些直接控制硬體的簡單命令,比如機器語言就是一種低層次編程語言。

Advertisements

2 彙編語言

計算機剛發明的時候,所有程序就是一條條機器語言的命令。沒過多久,程序就改成使用彙編語言了,它要比機器語言寫起來稍微方便一點。命令清單還是一樣的,就是每個命令換了一個更人性化的名字。機器語言的加法命令是11001101,這可能就是計算機內部的加法表達方式,但是在彙編語言中,這條命令就改成了add。

機器語言筆與彙編語言的共同問題就是,只能讓大多數計算機做一些很簡單的事情。比如,假定你想讓計算機的蜂鳴器響10次,但是不存在一條直接的機器語言命令讓電腦重複進行n次操作,所以只能用機器語言寫出下面這樣的程序:

a

將數字10存入內存地址0;

如果內存地址0的值為負數,跳到b行;

蜂鳴器發出聲音;

將內存地址0的值減1;

Advertisements

跳到a行;

b

…程序的其他部分…

如果只是為了讓蜂鳴器響10次就不得不寫這麼多代碼,不難想象寫出一個文字處理器或電子表格將是一項多麼浩大的工程。

順便說一句,請再看一下上面的程序。蜂鳴器真的會響10次嗎?不,響了11次。我不應該在第一行使用10,而應該使用9。我故意在這個例子中留了一個bug,證明編程語言的一個重要特點:一個操作所需的代碼越多,就越難避免bug,也越難發現它們。

3 高級語言

現在假設你不得不用彙編語言開發程序,但是你有了一個助手,他可以幫你承擔那些麻煩的臟活。所以,你只要把程序寫成下面這樣就行了:

Dotimes 10 蜂鳴器響

接下來,你的助手會用彙編語言來實現這條命令(假定他不會產生bug)。

事實上大多數程序員就是這樣工作的,不同之處就是,程序員的助手不是一個人,而是編譯器。所謂「編譯器」,本身就是一個程序,作用是將簡便方式書寫的程序(就像上面這一行命令)轉變為硬體可以理解的語言。

這種簡便方式書寫的程序所使用的語言就叫做高級語言。它讓你能夠使用命令開發程序,比如現在你就有了「重複n次操作」的命令,不再僅限於只能做簡單的「兩個數相加」。

寫程序時有了方便的命令,就可以把程序寫得更簡短。在上面假想的例子中,高級語言寫出來的程序的長度只有機器語言的五分之一。所以,要是你犯錯了,現在也更容易發現。

高級語言還有一個優點,它使得程序更具有可移植性。不同計算機的機器語言都不完全相同的。所以,你無法將為某一機型寫的機器語言程序放到另一機型上運行,只有徹底重寫才能實現。但是,如果你的程序是用高級語言寫的,你只需要重寫編譯器就可以了。

編譯器不是高級語言唯一的實現方法,另一種方法是使用解釋器,它的作用是實時地將代碼解釋為相應的機器語言,然後一行一行地運行。相比之下,編譯器則是先將整個程序全部翻譯成機器語言,然後再運行。

編程語言就是編譯器的輸入,然後被轉成目標碼進行輸出的東西。從20世紀80年代開始,硬體的指令集都是針對編譯器而不是針對程序員設計的。

現在的高級語言大概有幾百種之多。不同機器語言的指令集基本相同,但是高級語言就不一樣,它們開發程序的模式差別相當大。

高級語言是比機器語言抽象得多的語言。抽象(abstract),主要功能在於隱藏細節,編程語言越抽象,你寫出程序所需的運算步驟就越少,每一步的功能就越強。

一種好的編程語言通常要求具備的條件:

I 免費

II 一本好的相關書籍

III 要有在線文檔

IV 語言要簡潔

簡潔性的特點是要求語言更抽象,能夠用較少的字元表達相同的功能。能夠以更少、更短的語法單位表達出來。

簡潔性的最高形式就是有別人幫你寫好的功能模塊,你只要調用就可以了,別人幫你寫好的這種程序就是函數庫(函數庫(library)是已經寫好的代碼片段,可以用來執行特定任務。)。

這種語言乾淨簡練,具有最高層次的抽象和互動性,而且很容易裝備,可以只用很少的代碼就解決常見的問題。

優秀的編程語言應該是用來幫助思考程序的,而不是用來表達你已經想好的程序。

技術的變化速度通常是很快的。但是,編程語言不一樣,與其說它是技術,還不如說是程序員的思考模式。編程語言是技術和宗教的混合物。

Advertisements

你可能會喜歡