1. 程式人生 > >程式設計師編寫的程式碼為什麼可以控制計算機硬體工作?

程式設計師編寫的程式碼為什麼可以控制計算機硬體工作?

計算機本質上是數位電路組成的計算機器,只有電訊號才有可能驅動電路工作,那為什麼程式設計師編寫的程式碼可以控制計算機工作呢?程式碼只是一串字元而已。
在這裡插入圖片描述回答這個問題前,先想一下,程式設計師程式設計時,是否要嚴格遵守某種程式語言的語法呢?答案是肯定的,每種高階語言,無論是C語言,還是java、python、php,都是有自己的關鍵字和語法結構的。這些關鍵字是設計程式語言時約定的,也就是說,程式設計師編寫的程式碼是按照某種約定規則進行的。這就可以回答上面的問題了,假設一組數字電訊號可以完成“蜂鳴”動作,既然它是數字訊號,當然可以用數字表示它,下次程式設計師輸入這組“數字”,就相當於輸入了讓計算機做“蜂鳴”動作的數字電訊號,這就是機器碼程式設計。

舉個例子,假設有以下 5 盞燈。燈由開關控制著,只有開關兩種狀態。我們約定 1 表示開燈,0 表示關燈。那麼,當電燈管理員得到“01000”這樣一組數字時,他就知道了應該開第二盞燈,其他的關掉。
在這裡插入圖片描述機器碼程式設計是不方便的,程式設計師想要完成某種計算功能,往往需要從非常龐大的指令表查詢到相應的數字功能碼。因此,後來人們設計了很多助記符,用有意義的單詞來表示機器指令,這就形成了組合語言。

就像上面的例子中,我們約定用 set_light_2 來表示 01000,那麼,下次我告訴電燈管理員:“set_light_2”,他就明白了應該怎樣開關燈。

順著這樣的思路,更復雜的符號和結構被設計成有意義的單詞,高階語言如C語言,C++語言出現了。所以,說程式碼控制計算機不是特別恰當,因為程式碼只是我們約定的與電訊號對應的符號而已。事實上,計算機並不能直接執行程式碼,程式碼要首先翻譯為計算機認識的機器碼(即數字訊號序列),這一過程就叫做編譯。
在這裡插入圖片描述

當然,現在還有一些指令碼語言,比如 python,它是依賴直譯器逐行執行的。不過歸根結底,程式碼要首先翻譯為計算機認識的機器碼(即數字訊號序列)。