計算機語言不斷從低階到高階發展,其發展過程可以分為三代:機器語言,組合語言和高階語言。
機器語言是用二進位制**標示的計算機能直接識別和執行的機器指令的集合。他是計算機的設計者通過計算機的硬體結構賦予的計算機的操作功能,它與計算機同時誕生,是第一代的計算機語言。
使用機器語言的缺點是程式設計工作量大,難學,難記,難修改,它只適合專業人員使用;而且由於不同的計算機,其指令系統不同,機器語言隨機而異,通用性比較差,是面向機器的語言;
機器語言的優點是程式**不需要翻譯,所占用的空間比較少,執行速度比較快;
組合語言將機器指令的二進位制**用英文助記符表示,代替機器語言中的指令和資料。例如用add表示加,sub表示減,jmp表示程式跳轉等,這種指令助記符的集合就是組合語言。
組合語言的優點是克服了機器語言難讀等缺點,保持了其程式設計質量高、占用記憶體少,執行速度快的優點;缺點是依賴於機器,通用性比較差。
組合語言源程式必須通過匯程式設計序翻譯成機器語言,計算機才能執行。組合語言常用於控制等程式設計;
高階語言是一種接近於自然語言和數學公式的程式語言。它採用了完全符號化的描述形式,用類似自然語言的形式描述對問題的處理過程,用數學表示式的形式描述對資料的計算過程。高階語言主要是相對於組合語言而言,它並不是特指某一種具體的語言,而是包括了很多程式語言。
高階語言的優點是通用性強,程式設計效率高。它使得程式設計師可以不用跟計算機的硬體打交道,可以不必知道了解計算機的指令系統,集中精力解決問題本身而不受機器制約,極大的提高了程式設計的效率。
高階語言的源程式要經過翻譯程式翻譯成機器語言才能執行,程式的效率不如匯程式設計序高。
機器語言和組合語言都屬於面向機器的語言,屬於低階語言;而高階語言又分為面向過程和物件導向的兩種。前一種程式設計是資料被加工的過程,後一種程式設計的關鍵是定義類,並由類派生物件,客觀世界可以分為類,物件是類的例項,物件是資料和方法的封裝,物件之間通過傳送訊息和接收訊息發生聯絡。
面向過程的高階語言只是要求人們向計算機描述問題的求解過程,而不關心計算機的內部結構,它易於被人們理解和接受,典型的面向過程的語言有basic、fortran、c、pascal等。
物件導向的高階語言的是「面向過程」的一次革命。如果說面向過程的語言要求人們告訴計算機怎麼做,那麼物件導向的語言只要求人們告訴計算機做什麼。物件導向是通過類和物件把程式涉及的資料結構和它施行的操作有機的組成模組,對資料和資料的處理細節進行最大程度的封裝。從而使得開發出來的軟體易重用、易修改、易除錯、易擴充。
補充:
所有的程式語言中,除了機器語言編制的程式能夠直接被計算機理解和執行外,其他的程式語言編寫的源程式都可以經過乙個翻譯過程轉化為計算機能夠識別的機器語言。實現這個翻譯過程的工具是語言處理程式,即翻譯程式。翻譯程式也稱為編譯器。用非計算機語言寫的程式叫做源程式,通過翻譯程式翻譯後的程式稱為目標程式。針對不同的程式語言編寫出的程式,有各自的翻譯程式,互相不通用。
翻譯程式翻譯源程式通常有兩種方式:解釋方式和編譯方式。
(1)解釋方式:解釋方式的翻譯工作由解釋程式來完成,這種方式如同「口譯」。解釋程式對源程式進行逐句分析,若沒有錯誤,將該語句翻譯成乙個或者多個機器語言指令;然後立即執行這些指令;若解釋時發現錯誤,會立即停止,報錯並提醒使用者更正**;解釋程式不生成目標程式。
解釋程式
源程式——————計算結果 資料
採用解釋方式的優點是查詢錯誤的語句行和修改方便。缺點是執行速度慢,採用解釋方式執行的源程式,每次執行都必須
重新解釋,若程式較大,錯誤發生在程式的後面,則前面執行的結果是無效的,解釋方式無法對整個程式進行優化;
(2)翻譯方式:翻譯工作由編譯程式完成。如同「筆譯」,在紙上記錄翻譯後的結果。編譯程式過程:對源程式編譯產生目標程式,連線程式將目標程式和有關的程式庫組成可執行程式,編譯方式的執行過程如圖:
編譯程式 連線程式 資料
計算機語言發展史
軟體的產生始於早期的機械式計算機的開發。從19世紀起,隨著機械式計算機的更新,出現了穿孔卡片,這種卡片可以指導計算機進行工作。但是直到20世紀中期現代化的電子計算機出現之後,軟體才真正得以飛速發展。在世界上第一台計算機eniac上使用的也是穿孔卡片,在卡片上使用的是專家們才能理解的語言,由於它與人類...
計算機語言發展史
最近我想把計算機語言的發展史整理一下,閱讀了很多關於這方面的資料,並且畫了一張思維導圖,希望能夠加深對這一方面的思考和理解。第一代程式語言 first generation programming language 是一種機器級別的程式語言,其被用 1s 和 0s 寫。它不需要被編譯和轉換和能夠被 ...
計算機語言
早期的程式設計均使用機器語言。程式設計師們將用0,1數字編成的程式 打在紙帶或卡片上,1打孔,0不打孔,再將程式通過紙帶機或卡片機輸入計算機,進行運算。這樣的機器語言由純粹的0和1構成,十分複雜,不方便閱讀和修改,也容易產生錯誤。程式設計師們很快就發現了使用機器語言帶來的麻煩,它們難於辨別和記憶,給...