2GL

2GL

第二代編程語言(2GL)指的是組合語言,是最接近機器語言(1GL)的編程語言。它是一種符號式語言,以簡單易懂的英文或數字元來取代機器語言中的二進碼,也稱之為助憶語言(Mnemonic Language)。

簡介


組合語言無法直接供給機器使用,仍須透過組譯器(Assembler)翻譯成由"0"、"1"組成的機器語言,才能被機器加以執行。
組合語言近似於機器語言,一樣不具移植性,所以跟機器語言一樣被稱為低階語言。

彙編語言


彙編語言(英語:assembly language)是一種用於電子計算機、微處理器、微控制器,或其他可編程器件的低級語言。在不同的設備中,彙編語言對應著不同的機器語言指令集。一種彙編語言專用於某種計算機系統結構,而不像許多高級語言,可以在不同系統平台之間移植。
使用彙編語言編寫的源代碼,然後通過相應的彙編程序將它們轉換成可執行的機器代碼。這一過程被稱為彙編過程。
彙編語言使用助記符(Mnemonics)來代替和表示特定低級機器語言的操作。特定的彙編目標指令集可能會包括特定的操作數。許多彙編程序可以識別代表地址和常量的標籤(Label)和符號(Symbols),這樣就可以用字元來代表操作數而無需採取寫死的方式。普遍地說,每一種特定的彙編語言和其特定的機器語言指令集是一一對應的。
許多彙編程序為程序開發、彙編控制、輔助調試提供了額外的支持機制。有的彙編語言編寫工具經常會提供宏,它們也被稱為宏彙編器。
彙編語言已不像其他大多數的程序設計語言一樣被廣泛用於程序設計,實際應用中,它通常被應用在底層硬體操作和高要求的程序優化的場合。驅動程序、嵌入式操作系統和實時運行程序都會需要彙編語言。
典型的現代彙編器(assembler)建造目標代碼,由解譯組語指令集的助記符(Mnemonics)到操作碼(OpCode),並解析符號名稱(Symbolic names)成為內存地址以及其它的實體。使用符號參考是彙編器的一個重要特徵,它可以節省修改程序後人工轉址的乏味耗時計算。基本就是把機器碼變成一些字母而已,編譯的時候再把輸入的指令字母替換成為晦澀難懂機器碼。
隨著現代軟體系統越來越龐大複雜,大量經過了封裝的高級語言如C/C++,Pascal/Object Pascal也應運而生。這些新的語言使得程序員在開發過程中能夠更簡單,更有效率,使軟體開發人員得以應付快速的軟體開發的要求。而彙編語言由於其複雜性使得其適用領域逐步減小。但這並不意味著彙編已無用武之地。由於彙編更接近機器語言,能夠直接對硬體進行操作,生成的程序與其他的語言相比具有更高的運行速度,佔用更小的內存,因此在一些對於時效性要求很高的程序、許多大型程序的核心模塊以及工業控制方面大量應用。
此外,雖然有眾多編程語言可供選擇,但彙編依然是各大學計算機科學類專業學生的必修課,以讓學生深入了解計算機的運行原理。

機器語言


機器語言(machine language)是一種指令集的體系。這種指令集稱為機器碼(machine code),是電腦的CPU可直接解讀的數據。
機器碼有時也被稱為原生碼(Native Code),這個名詞比較強調某種編程語言或庫與運行平台相關的部分。
機器語言是用二進位代碼表示的計算機能直接識別和執行的一種機器指令的集合。它是計算機的設計者通過計算機的硬體結構賦予計算機的操作功能。機器語言具有靈活、直接執行和速度快等特點。不同種類的計算機其機器語言是不相通的,按某種計算機的機器指令編製的程序不能在另一種計算機上執行。
要用機器語言編寫程序,編程人員需首先熟記所用計算機的全部指令代碼和代碼的涵義。手編程序時,程序員要自己處理每條指令和每一數據的存儲分配和輸入輸出,還需記住編程過程中每步所使用的工作單元處在何種狀態。這是一件十分繁瑣的工作,編寫程序花費的時間往往是實際運行時間的幾十倍或幾百倍。而且,這樣編寫出的程序完全是0與1的指令代碼,可讀性差且容易出錯。在現今,除了計算機生產廠家的專業人員外,絕大多數程序員已經不再學習機器語言。
• 機器語言是微處理器理解和使用的用於控制它的操作的二進位代碼。
• 8086Pentium的機器語言指令長度可以從1位元組到13位元組。
• 儘管機器語言看似非常複雜,但它是有規律的。
• 現今存在著超過100000種機器語言的指令,因此不可能將它們的種類完全列出。

低級語言


低級語言(英語:Low-level programming language),在計算機科學之中,是電腦編程語言的一類。該類編程語言之所以被稱為低級,是因為該類語言在運作時無法進行進一步的抽象化,而與中央處理器的機器語言或指令直接對應,因此一般亦被指是原始的編程語言。即使是與高級語言相對,但這並非指低級語言較高級語言為差,相反,低級語言由於無需大量的編譯動作即可被中央處理器所運行,因此以該類編程語言編寫的源代碼編譯和運作效率一般較高級語言的源代碼為高。
低級與高級其實只是相對的概念,Java對比C語言可以被認為是一種相對高級的編程語言。