1. 程式人生 > 其它 >簡單理解程式語言的工作原理

簡單理解程式語言的工作原理

程式語言定義

程式語言可以簡單的理解為一種計算機和人都能識別的語言。計算機只能識別二進位制,人識別的是人類語言。那怎麼實現計算機和人都能識別的語言呢?先看下程式語言的發展歷程,再來回答這個問題。

分類/發展階段

第一代:機器語言

  • 簡單來說就是:
    1. 機器語言就是由0和1組成的指令程式碼
    2. 每個指令程式碼會執行計算機內部相應的電路
    3. 指令程式碼的集合即是指令系統
    4. 不同的計算機廠家的指令程式碼一般不同
  • 百科說明:機器語言是機器能直接識別的程式語言或指令程式碼,無需經過翻譯,每一操作碼在計算機內部都有相應的電路來完成它,或指不經翻譯即可為機器直接理解和接受的程式語言或指令程式碼。機器語言使用絕對地址和絕對操作碼。不同的計算機都有各自的機器語言,即指令系統。從使用的角度看,機器語言是最低階的語言。

第二代:組合語言

  • 簡單來說:
    1. 用一些容易理解和記憶的字母,單詞來代替一個特定的指令
    2. 這些字母需要轉為二級制的機器語言才能被計算機執行
    3. 不同裝置中組合語言對應著不同的機器語言指令集,所以彙編程式不可直接移植到不同的平臺上
    4. 目前實際應用,它通常被應用在底層,硬體操作和高要求的程式優化的場合。驅動程式、嵌入式作業系統和實時執行程式都需要組合語言。
  • 百科說明:組合語言(Assembly Language)是任何一種用於電子計算機、微處理器、微控制器或其他可程式設計器件的低階語言,亦稱為符號語言。在組合語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或運算元的地址。在不同的裝置中,組合語言對應著不同的機器語言指令集,通過彙編過程轉換成機器指令。特定的組合語言和特定的機器語言指令集是一一對應的,不同平臺之間不可直接移植。

第三代:高階語言

  • 簡單來說:
    1. 較接近自然語言和數學公式的程式設計
    2. 高階程式語言編寫的程式需要經過翻譯,翻譯成機器所能識別的二進位制數才能由計算機去執行,執行速度比彙編程式要低,同時因為高階語言比較冗長,所以程式碼的執行速度也要慢一些
    3. 不能用於編寫直接訪問機器硬體資源的系統軟體或裝置控制軟體(可以用匯編語言編寫的程式,作為高階語言的一個外部過程或函式,利用堆疊來傳遞引數或引數的地址,來實現相應的功能)
    4. 不依賴於計算機硬體,能夠在不同機器上執行的程式,程式的有很好的可移植性
  • 百科說明:高階語言(High-level programming language)是一種獨立於機器,面向過程或物件的語言。高階語言是參照數學語言而設計的近似於日常會話的語言。
  • 分類:
    1. 命令式語言
    2. 函式式語言
    3. 邏輯式語言
    4. 面嚮物件語言
  • 工作方式
    1. 解釋:對高階語言程式進行解釋並執行的程式稱為解釋程式(軟體)。它的功能是讀入源程式,按源程式動態邏輯順序進行逐句分析、翻譯,解釋一句執行一句,不產生任何中間程式碼,最終得到程式的執行結果
    2. 編譯:編譯是源程式翻譯成機器指令形式的目標程式的過程,再用連結程式把目標程式連結成可執行程式後才能執行

如何實現機器和人類都能識別的程式語言:編譯原理

  • 簡單來說:
    1. 人按照程式語言規定的語法編寫源程式/原始碼
    2. 直譯器/編譯器按照對應的語法將原始碼解釋/編譯為組合語言
    3. 不同的平臺/裝置按照自身裝置指令集轉為自身裝置可以執行的二進位制指令
    4. 機器根據二進位制指令執行相應的電路
  • 百科說明:編譯原理即是對高階程式語言進行翻譯的一門科學技術, 我們都知道計算機程式由程式語言編寫而成, 在早期計算機程式語言發展較為緩慢, 因為計算機儲存的資料和執行的程式都是由0、1程式碼組合而成的, 那麼在早期程式設計師編寫計算機程式時必須十分了解計算機的底層指令程式碼通過將這些微程式指令組合排列從而完成一個特定功能的程式, 這就對程式設計師的要求非常高了。人們一直在研究如何如何高效的開發計算機程式, 使程式設計的門檻降低。