機械語言到高級語言,經過了什麼?

125887559



高級語言共性的構成要素:常量,變量,表達式(算術表達式,比較表達式,邏輯表達式),賦值語句,順序結構,分支結構,循環結構。函數(函數的定義,函數的調用,運用函數構造),程序的構造方法(自頂向下,自底向上)。

由機器語言到高級語言

指令系統:CPU用二級制和編碼提供的可以解釋並執行的命令的集合。機器語言:用二進制和編碼方式提供的指令系統所編寫程序的語言被稱為機器語言所有程序都需要轉換為機器語言程序,計算機才能執行。

計算機語言——彙編語言用符號編寫程序——翻譯——機器語言程序人們提供了用助記符編寫程序的規範/標準。同時開發了一個翻譯程序,實現了將符號程序自動轉換為機器語言程序的功能。

  • 彙編語言:用助記符編寫程序的語言
  • 彙編語言源程序:使用匯編語言編出的程序
  • 彙編程序(編譯器):是將彙編語言源程序翻譯成機器語言程序的程序

計算機語言——高級語言人們提供了類似於自然語言方式,以語句為單位書寫程序的規範/標準。並開發了一個翻譯程序,實現了將語句程序自動翻譯成機器語言程序的功能。

  • 高級語言:是用類似自然語言的語句編寫程序的語言
  • 高級語言源程序:使用高級語言編出的程序
  • 編譯程序:是將高級語言源程序翻譯成機器語言程序的程序

高級語言和彙編語言的差別:

  • 高級語言:機器無關性:一條高級語言語句往往可由若干條機器語言語句實現且不具有對應性
  • 彙編語言:機器相關性:彙編語言語句和機器語言語句有對應性
高級語言的基本構成要素

計算機程序的基本構成要素有哪些?

算術表達式:算術表達式的結果為一數值。如b=7+2比較表達式:比較表達式的計算結果是邏輯“真”或“假”,大於小於。邏輯表達式:邏輯表達式的計算結果是邏輯“真”或“假”,與或非。

程序開發環境包括哪些部分呢?

  • 程序是算法的一種機器相容(Compatible)的表示,是利用計算機程序設計語言對算法描述的結果,是在計算機上執行的算法。
  • 程序設計過程:編輯源程序——編譯——鏈接——執行
  • 計算機語言程序設計環境:編輯、編譯、連接、調試、運行一體化平臺。

不一樣的程序猿


總共經歷了三個階段:機器語言,彙編語言,高級語言

第一階段:機器語言

早期,計算機的使用者必須用二進制表示的指令編寫程序,一般用八進制或十六進制書寫,稱為機器語言程序。機器語言每一條指令,都必須包含以下四方面(1)操作碼。它具體說明了操作的性質及功能。(2)操作數的地址。CPU通過該地址就可以取得所需的操作數。(3)操作結果的存儲地址。把對操作數的處理所產生的結果保存在該地址中,以便再次使用。(4)下條指令的地址。

第二階段:彙編語言

以下程序用匯編語言實現打印:"hello world!"

因為機器語言工作量大,且容易出錯,到20世紀50年代,出現了符號式程序設計語言,稱為彙編語言,程序員可以用ADD,SUB,MUL和DIV等符號分別表示加法,減法,乘法,除法的操作碼,並用符號來表示指令和數據的地址。彙編語言程序的大部分語句是和機器指令一一對應的。用戶用匯編語言編寫程序後,然後由計算機將它翻譯成機器語言,然後在計算機上運行。這個翻譯過程是通過系統程序員提供的彙編程序實現的。

第三階段:高級語言

1:面向過程的語言:以c語言為代表

以下程序用c語言實現打印"hello world"

由於彙編語言依賴於特定的指令集,而各個處理器往往有不同的指令集,沒有跨平臺性,而且編程工作量大且易出錯,到20世紀50年代,以c語言為代表的面向過程語言誕生,逐漸成為了主流編程語言。c語言具有以下特點:簡潔,具有結構化的控制語句,豐富的數據類型,豐富的運算符,可對物理地址進行直接操作,代碼具有較好的可移植性,可生成高質量、目標代碼執行效率高的程序。我們熟悉的安卓,ios,其實都離不開c語言,到目前為止,c語言仍然是編寫操作系統,和需要超高速度執行程序的首選語言。和彙編類似,首先由計算機將c語言翻譯成彙編語言,其次再翻譯為機器語言,最後由計算機執行。

2:面向對象的語言:以c++,Java為代表

以下程序用c++實現打印"hello world"

隨著計算機技術的發展,軟件和系統也開始變得日益複雜,從最開始的一百行,幾千行代碼,發展到現在的幾萬行,甚至是幾百萬行代碼,c語言也慢慢顯現出它的缺點,在大型項目中複雜度極高,不安全,開發效率低等。到了80年代,出現了面向對象編程,在大型項目中優勢明顯,c++就是通過擴展c語言,實現的面向對象編程,Java則是純面嚮對象語言。

3:動態語言:以python為代表

以下程序用python實現打印"hello world"

為了最大限度減少程序員的開發時間,出現了以python為代表的動態語言,動態語言只需要寫出必要的語句,而其它必要部分則交給解釋器,解釋器由開發人員提供,任何一臺電腦,只要安裝瞭解釋器就可以運行特定的動態語言。雖言python具有開發效率高,但因為需要依賴解釋器執行,因此其運行速度遠遠小於c,c++等語言,只適合開發對執行速度要求不高的程序


編程之禪


經歷了不同層次的抽象。

彙編面向的是機器硬件指令集。

C面向的是內存和文件系統。

Java面向的是對象。

python面向的是數據結構。

不同的抽象層次,關注點不一樣。這和我們常說的分層開發道理一樣。

我們在設計系統的時候也會繼續層層向高級抽象。

抽象使得我們可以逐步利用低級的工具構建高級的工具,從而解決更高級的問題。


閒扯編程那點事


從0101>彙編語言>c語言>xxxx,語言越來越人性化,易於學習,從面相過程到面相對象


碼友匯


編譯,編譯是一個十分重要的過程,是一個將機器邏輯匯聚成一個指令的能力,反過來講,也是將指令去解釋成一堆機器能力的過程。


我是菜菜菜叫獸


編譯和鏈接的過程。


yajun11o


計算機程序設計語言的發展,經歷了從機器語言、彙編語言到高級語言的歷程。

1. 機器語言

電子計算機所使用的是由“0”和“1”組成的二進制數,二進制是計算機的語言的基礎。計算機發明之初,人們只能降貴紆尊,用計算機的語言去命令計算機幹這幹那,一句話,就是寫出一串串由“0”和“1”組成的指令序列交由計算機執行,這種語言,就是機器語言。使用機器語言是十分痛苦的,特別是在程序有錯需要修改時,更是如此。而且,由於每臺計算機的指令系統往往各不相同,所以,在一臺計算機上執行的程序,要想在另一臺計算機上執行,必須另編程序,造成了重複工作。但由於使用的是針對特定型號計算機的語言,故而運算效率是所有語言中最高的。機器語言,是第一代計算機語言。

2. 彙編語言

為了減輕使用機器語言編程的痛苦,人們進行了一種有益的改進:用一些簡潔的英文字母、符號串來替代一個特定的指令的二進制串,比如,用“A D D”代表加法,“M O V”代表數據傳遞等等,這樣一來,人們很容易讀懂並理解程序在幹什麼,糾錯及維護都變得方便了,這種程序設計語言就稱為彙編語言,即第二代計算機語言。然而計算機是不認識這些符號的,這就需要一個專門的程序,專門負責將這些符號翻譯成二進制數的機器語言,這種翻譯程序被稱為彙編程序。

彙編語言同樣十分依賴於機器硬件,移植性不好,但效率仍十分高,針對計算機特定硬件而編制的彙編語言程序,能準確發揮計算機硬件的功能和特長,程序精煉而質量高,所以至今仍是一種常用而強有力的軟件開發工具。

3. 高級語言

從最初與計算機交流的痛苦經歷中,人們意識到,應該設計一種這樣的語言,這種語言接近於數學語言或人的自然語言,同時又不依賴於計算機硬件,編出的程序能在所有機器上通用。經過努力,1 9 5 4年,第一個完全脫離機器硬件的高級語言—F O RT R A N問世了,4 0多年來,共有幾百種高級語言出現,有重要意義的有幾十種,影響較大、使用較普遍的有F O RT R A N、A L G O L、C O B O L、B A S I C、L I S P、S N O B O L、P L / 1、P a s c a l、C、P R O L O G、A d a、C + +、V C、V B、D e l p h i、J AVA 等。

高級語言的發展也經歷了從早期語言到結構化程序設計語言,從面向過程到非過程化程序語言的過程。相應地,軟件的開發也由最初的個體手工作坊式的封閉式生產,發展為產業化、流水線式的工業化生產。

6 0年代中後期,軟件越來越多,規模越來越大,而軟件的生產基本上是人自為戰,缺乏科學規範的系統規劃與測試、評估標準,其惡果是大批耗費巨資建立起來的軟件系統,由於含有錯誤而無法使用,甚至帶來巨大損失,軟件給人的感覺是越來越不可靠,以致幾乎沒有不出錯的軟件。這一切,極大地震動了計算機界,史稱“軟件危機”。人們認識到:大型程序的編制不同於寫小程序,它應該是一項新的技術,應該像處理工程一樣處理軟件研製的全過程。程序的設計應易於保證正確性,也便於驗證正確性。1 9 6 9年,提出了結構化程序設計方法,1 9 7 0年,第一個結構化程序設計語言—P a s c a l語言出現,標誌著結構化程序設計時期的開始。

8 0年代初開始,在軟件設計思想上,又產生了一次革命,其成果就是面向對象的程序設計。在此之前的高級語言,幾乎都是面向過程的,程序的執行是流水線似的,在一個模塊被執行完成前,人們不能幹別的事,也無法動態地改變程序的執行方向。這和人們日常處理事物的方式是不一致的,對人而言是希望發生一件事就處理一件事,也就是說,不能面向過程,而應是面向具體的應用功能,也就是對象(o b j e c t)。其方法就是軟件的集成化,如同硬件的集成電路一樣,生產一些通用的、封裝緊密的功能模塊,稱之為軟件集成塊,它與具體應用無關,但能相互組合,完成具體的應用功能,同時又能重複使用。對使用者來說,只關心它的接口(輸入量、輸出量)及能實現的功能,至於如何實現的,那是它內部的事,使用者完全不用關心,C + +、V B、D e l p h i就是典型代表。

高級語言的下一個發展目標是面向應用,也就是說:只需要告訴程序你要幹什麼,程序就能自動生成算法,自動進行處理,這就是非過程化的程序語言


夜空中的那顆星照亮你


高級語言:

  高級語言(High-level programming language)相對於機器語言(machine language,是一種指令集的體系。這種指令集,稱機器碼(machine code),是電腦的CPU可直接解讀的數據)而言。是高度封裝了的編程語言,與低級語言相對。它是以人類的日常語言為基礎的一種編程語言,使用一般人易於接受的文字來表示(例如漢字、不規則英文或其他外語),從而使程序編寫員編寫更容易,亦有較高的可讀性,以方便對電腦認知較淺的人亦可以大概明白其內容。由於早期電腦業的發展主要在美國,因此一般的高級語言都是以英語為藍本。在1980年代,當東亞地區開始使用電腦時,在日本、臺灣及中國大陸都曾嘗試開發用各自地方語言編寫的高級語言,當中主要都是改編BASIC或專用於數據庫數據訪問的語言,但是隨著編程者的外語能力提升,現時的有關開發很少。

  由於彙編語言依賴於硬件體系,且助記符量大難記,於是人們又發明了更加易用的所謂高級語言。在這種語言下,其語法和結構更類似漢字或者普通英文,且由於遠離對硬件的直接操作,使得一般人經過學習之後都可以編程。高級語言通常按其基本類型、代系、實現方式、應用範圍等分類。

  機器語言:

  機器語言(machine language)是一種指令集的體系。這種指令集,稱機器碼(machine code),是電腦的CPU可直接解讀的數據。

  機器碼有時也被稱為原生碼(Native Code),這個名詞比較強調某種編程語言或庫,它與運行平臺相關的部份。


分享到:


相關文章: