計算機語言發展的三個階段:機器語言、組合語言與高階語言

引言

在如今資訊發達的時代,科技日新月異,計算機和Internet網路的發展也成為人們日常生活的重要部分。學習一兩門計算機程式語言也如當初學習英文一樣的火熱,隨著人工智慧AI和雲計算的不斷髮展,Python語言和Scala語言已經成為這兩個領域裡面最為火熱的程式語言了,可以預知未來學習計算機程式語言的人也一樣會如同學習英文一樣的成為一種新常態,並且成為一種穩定的常態。以下筆者將以自己的學習認知,簡單的闡述一下計算機程式語言的發展。

計算機語言發展的三個階段:機器語言、組合語言與高階語言

@雲主宰蒼穹—計算機程式語言發展

程式語言簡介

計算機語言,英文名Computer Language,或者Programming Language,指的是人與計算機進行互動的一種語言,就如我們學習外語一樣的,只是一種形式工具,主要與計算機交流的是我們的思想,將我們自己的思想以計算機能識別的語言賦予他,就形成了程式。

而實現我們的思想的一系列的問題的就是向計算機發送指令,對於通訊的雙方而言,指令的格式,組成字元,數字資料,語法等一系列的標準就很重要了,而我們學習的就是這一系列的標準,從而能將自己的思想賦予計算機,讓計算機能智慧化、自動化的為我們服務。隨著這一思想的不斷演化發展,就逐步形成了一種新的語言,即就是計算機語言!

1946年,於賓夕法尼亞大學,莫克利(JohnW。Mauchly)和艾克特(J。PresperEckert)發明了世界上第一臺通用計算機,命名為“ENIAC”。那時候程式設計師必須手動控制計算機,當時唯一想到利用程式設計語言來解決問題的人是德國工程師楚澤(konradzuse)。

計算機語言發展的三個階段:機器語言、組合語言與高階語言

@雲主宰蒼穹—人工智慧AI

計算機語言發展簡史

計算機是一系列的硬體構成的能完成強大功能的一個結合體,他唯一能夠識別的就是邏輯運算,即0和1,所以最初的計算機互動語言是以二進位制的機器語言,由於太難理解與記憶,人們就定義了一系列的助記符幫助理解與記憶,就逐漸產生了組合語言,但是彙編還是不好理解與記憶,就逐漸發展了高階語言。隨著C、Fortran等結構化高階語言的誕生,使程式設計師可以離開機器層次,透過更加抽象的層次來表達自己的思想,同時也誕生的三種重要控制結構,即就是順序結構、選擇結構、迴圈結構,以及一些基本資料型別都能夠很好的讓程式設計師以接近問題本質的方式去描述、抽象問題。但隨著需要處理的問題規模的不斷擴大,一般的程式設計模型無法克服錯誤隨著程式碼的擴大而級數般的擴大,這個時候就出現了一種新的思考程式設計方式和程式設計模型,即就是面向物件程式設計,同時也誕生了一批支援這種設計模型的計算機語言,例如C++、Java、Python等。

簡而言之,計算機語言從最初的機器語言(二進位制),發展到使用助記符的組合語言,再到更易理解的高階語言,包括C、C++、Java、C#、Python等等。計算機程式的設計模型從結構化的程式設計,再到面向物件的程式設計。當然計算機只能識別二進位制語言,那麼很明顯在其他計算機語言與機器語言之間就有著一個橋樑,起著翻譯一樣的功能,使得通訊雙方能夠交流,而這個翻譯官就是編譯器。而由於編譯的原理不一樣,我們將計算機語言分為編譯性語言(例如C、C++)和解釋性語言(Shell、Python)。

計算機語言發展的三個階段:機器語言、組合語言與高階語言

@雲主宰蒼穹—常用計算機程式語言

第一代計算機程式語言

第一代的計算機語言就是機器語言,即就是0\1組成的程式碼,人們透過0\1與計算機進行互動與資料交換,這樣的程式設計實在是太難,對於大多數人來說都是十分的困難的,隨著其時間的發展,就逐步演化了第二代計算機語言。不過這是計算機的基礎,因為計算機硬體只能識別0\1的二進位制,無論後面的計算機語言如何發展,最總在計算機內能夠執行的只能是0\1的二進位制編碼,故而後面所有的計算機語言都需要一個翻譯的東西,將其翻譯為二進位制的編碼執行,這個起著翻譯官作用的就是編譯器!

第二代計算機程式語言

由於第一代計算機語言的學習難度係數極高,就發展出使用一些助記符來幫助人們程式設計,這就是第二代程式語言——組合語言,使人們與計算機進行交流溝通時便捷一些,人們學習程式設計起來也比較容易,這種使用英文助記符來幫助人們進行程式設計,再由編譯器翻譯為0\1的程式碼,這樣計算機就能識別了。但是隨著資訊科技的不斷髮展,組合語言已經不能夠滿足大部分人們的需求,就催生了第三代計算機程式語言。

計算機語言發展的三個階段:機器語言、組合語言與高階語言

@雲主宰蒼穹—雲計算

第三代計算機程式語言

所謂的第三代計算機程式語言,就是大家經常熟知的一些程式語言。而對於計算機高階語言的發展分為兩個階段,以 1980 年為分界線,前一階段屬於結構化語言或者稱為面向過程的語言,後一階段屬於面向物件的語言。

然而對於什麼叫面向過程,什麼叫面向物件?這是很難解釋的一個問題,故而暫時不需要深入理解,簡單來說就是程式設計時的兩種設計思想。

面向過程語言中最經典、最重要的就是C語言。Fortran、Basic 和 Pascal 語言基本上已經很少有人使用了。但是C語言一直在用,因為C語言是計算機領域最重要的一門語言,其在liunx程式設計和嵌入式程式設計有極大的地位。但是C語言也有缺陷,它的缺陷只有在學完面嚮物件語言之後才能體會到。

故而從 20 世紀 80 年代開始又產生了另外一種“以面向物件”為思想的語言,其中最重要、最複雜的就是 C++。C++ 從易用性和安全性兩個方面對C語言進行了升級。C++ 是一種較複雜、難學的語言,但是一旦學會了則非常有用。因為 C++ 太複雜,所以後來就對 C++ 進行了改裝,產生了兩種語言,一個是 Java,另一個是 C#。Java 語言是現在最流行的語言之一。C# 則是微軟公司看 Java 很流行而寫的一個與 Java 語法相似的語言。因為 Java 和 C# 幾乎是一模一樣的,所以你只需要學習其中的一種語言就可以了。

同時隨著近年來的人工智慧和雲計算的火熱發展,Python語言和Scala語言成為人工智慧和雲計算Hadoop框架的重要程式語言,逐漸成為時代的主流程式語言。在計算機的領域裡,還有一些專用的計算機程式語言,不如網頁設計的三要素:HTML、CSS和JavaScript ,這三者就是專用的計算機程式語言。

計算機語言發展的三個階段:機器語言、組合語言與高階語言

@雲主宰蒼穹—Hadoop生態圈