天天看點

計算機語言的發展史語言的發展曆史

語言的發展曆史

計算機語言的發展 總體分三個階段

第一代 機器語言	(相當于人類的原始階段)
第二代 彙編語言	(相當于人類的手工業階段)
第三代 進階語言	(相當于人類的工業階段)
           

開篇:記住一個人 馮•諾依曼 ,此人為 計算機語言做出傑出的貢獻

數學家馮•諾依曼提出了重大的改進理論,主要有兩點:其一是電子計算機應該以二進制為運算基礎,其二是電子計算機應采用存儲程式方式工作,并且進一步明确指出了整個計算機的結構應由五個部分組成:運算器、控制器、存儲器、輸入裝置和輸出裝置。馮•諾依曼的這些理論的提出,解決了計算機的運算自動化的問題和速度配合問題,對後來計算機的發展起到了決定性的作用。直至今天,絕大部分的計算機還是采用馮•諾依曼方式工作。

第一代 機器語言 (machine language)

  1. 機器語言是微處理器了解和使用的,用于控制它的操作二進制代碼。

    8086到Pentium的機器語言指令長度可以從1位元組到13位元組。

    盡管機器語言好像是很複雜的,然而它是有規律的。

    存在着多至100000種機器語言的指令。這意味着不能把這些種類全部列出來。

  2. 下面是一些常用的表達式:

    000000000000 代表位址為 0 的存儲器

    000000000001 代表位址為 1 的存儲器

    000000010000 代表位址為 16 的存儲器

    內建

    0000,0000,000000010000 代表 LOAD A, 16

    0000,0001,000000000001 代表 LOAD B, 1

    指令

    0000 代表 加載(LOAD)

    0001 代表 存儲(STORE)

  3. 優點和缺點

    優點:直接執行,速度快,資源占用少

    缺點:可讀性、可移植性差,程式設計繁雜

  4. 總結

    機器語言由數字組成所有指令。當讓你使用數字程式設計,寫幾百個數字、甚至幾千個數字,每天面對

    的是純數字,我大膽預測:”程式員群體100%會 有精神問題”。

第二代 彙編語言(面向機器的程式設計語言)

  1. 機器相關性

    這是一種面向機器的低級語言,通常是為特定的計算機或系列計算機專門設計的。因為是機器指令的符号化表示,故不同的機器就有不同的彙編語言。使用彙編語言能面向機器并較好地發揮機器的特性,得到品質較高的程式。

  2. 高速度和高效率

    彙編語言保持了機器語言的優點,具有直接和簡捷的特點,可有效地通路、控制計算機的各種硬體裝置,如磁盤、存儲器、CPU、I/O端口等,且占用記憶體少,執行速度快,是高效的程式設計語言。

  3. 編寫和調試的複雜性

    由于是直接控制硬體,且簡單的任務也需要很多彙編語言語句,是以在進行程式設計時必須面面俱到,需要考慮到一切可能的問題,合理調配和使用各種軟、硬體資源。這樣,就不可避免地加重了程式員的負擔。與此相同,在程式調試時,一旦程式的運作出了問題,就很難發現。

  4. 優點和缺點

    優點

    1. 因為用彙編語言設計的程式最終被轉換成機器指令,故能夠保持機器語言的一緻性,直接、簡捷,并能像機器指令一樣通路、控制計算機的各種硬體裝置,如磁盤、存儲器、CPU、I/O端口等。使用彙編語言,可以通路所有能夠被通路的軟、硬體資源。

    2. 目标代碼簡短,占用記憶體少,執行速度快,是高效的程式設計語言,經常與進階語言配合使用,以改善程式的執行速度和效率,彌補進階語言在硬體控制方面的不足,應用十分廣泛。

    缺點

    1. 彙編語言是面向機器的,處于整個計算機語言層次結構的底層,故被視為一種低級語言,通常是為特定的計算機或系列計算機專門設計的。不同的處理器有不同的彙編語言文法和編譯器,編譯的程式無法在不同的處理器上執行,缺乏可移植性;

    2. 難于從彙編語言代碼上了解程式設計意圖,可維護性差,即使是完成簡單的工作也需要大量的彙編語言代碼,很容易産生bug,難于調試;

    3. 使用彙編語言必須對某種處理器非常了解,而且隻能針對特定的體系結構和處理器進行優化,開發效率很低,周期長且單調。

  5. 常用的指令

    這部分指令用于執行算術和邏輯運算,包括加法指令ADD/ADC、減法指令SUB/SBB、加一指令INC、減一指令DEC、比較操作指令CMP、乘法指令MUL/IMUL、除法指令DIV/IDIV、符号擴充指令CBW/CWDE/CDQE、十進制調整指令DAA/DAS/AAA/AAS、邏輯運算指令NOT/AND/OR/XOR/TEST等。

  6. 總結

    彙編語言雖然能編寫高效率的程式,但是學習和使用都不是易事,并且很難調試。另一個複雜的問

    題,彙編語言以及早期的計算機語言( Basic. Fortran等 )沒有考慮結構化設計原則,而是使用goto語句來作為程式流程控制的主要方法。這樣做的後果是:一大堆混亂的調轉語 句使得程式幾乎不可能

    被讀懂。對于那個時代的程式員,能讀懂上個月自己寫的代碼都成為一種挑戰。

    彙編語言仍然應用于工業電子程式設計領域、軟體的加密解密、計算機病毒分析等。

想了解更多的彙編語言,點選.

第三代 進階語言(High-level programming language )

  1. 進階語言介紹

    計算機語言具有進階語言和低級語言之分。而進階語言又主要是相對于彙編語言而言的,它是較接近自然語言和數學公式的程式設計,基本脫離了機器的硬體系統,用人們更易了解的方式編寫程式。編寫的程式稱之為源程式。

  2. 進階語言并不是語言

    進階語言并不是特指的某一種具體的語言,而是包括很多程式設計語言,如流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,易語言,中文版的C語言習語言等等,這些語言的文法、指令格式都不相同。

  3. 程式設計語言的類型:

    1. 指令式語言。這種語言的語義基礎是模拟“資料存儲/資料操作”的圖靈機可計算模型,十分符合現代計算機體系結構的自然實作方式。其中産生操作的主要途徑是依賴語句或指令産生的副作用。現代流行的大多數語言都是這一類型,比如 Fortran、Pascal、Cobol、C、C++、Basic、Ada、Java、C# 等,各種腳本語言也被看作是此種類型。

    2. 函數式語言。這種語言的語義基礎是基于數學函數概念的值映射的λ算子可計算模型。這種語言非常适合于進行人工智能等工作的計算。典型的函數式語言如 Lisp、Haskell、ML、Scheme 、F#等。

    3. 邏輯式語言。這種語言的語義基礎是基于一組已知規則的形式邏輯系統。這種語言主要用在專家系統的實作中。最著名的邏輯式語言是 Prolog。

    4. 面向對象語言。現代語言中的大多數都提供面向對象的支援,但有些語言是直接建立在面向對象基本模型上的,語言的文法形式的語義就是基本對象操作。主要的純面向對象語言是 Smalltalk。

    雖然各種語言屬于不同的類型,但它們各自都不同程度地對其他類型的運算模式有所支援。

  4. 進階語言帶來好處

    1. 進階語言接近算法語言,易學、易掌握,一般工程技術人員隻要幾周時間的教育訓練就可以勝任程式員的工作;

    2. 進階語言為程式員提供了結構化程式設計的環境和工具,使得設計出來的程式可讀性好,可維護性強,可靠性高;

    3. 進階語言遠離機器語言,與具體的計算機硬體關系不大,因而所寫出來的程式可移植性好,重用率高;

    4. 由于把繁雜瑣碎的事務交給了編譯程式去做,是以自動化程度高,開發周期短,且程式員得到解脫,可以集中時間和精力去從事對于他們來說更為重要的創造性勞動,以提高程式的品質。

  5. 總結

    進階語言的出現,尤其是面向對象語言的出現,相當于人類的工業社會,進階語言極其易用,程式設計

    門檻和難度大大降低,大量的人員進入軟體開發行業,為軟體爆發性的增長提供了充足的人力資源。

    目前以及可預見的将來,計算機語言仍然處于“第三代進階語言”階段。

繼續閱讀