1. 程式人生 > >常用且榜上排名靠前的程式語言分類彙總

常用且榜上排名靠前的程式語言分類彙總

在程式語言中有幾種常用的分類方式(這裡採用從低向上的方式敘述):

一、針對在機器的不同階段使用可分為:

機器語言機器語言是有0,1的二進位制程式碼組成,可以由計算機直接執行。效率最高,但是通用性不強,對於不同的硬體需要不同的程式。這種語言比較適合硬體的執行,與人類的語言習慣相差甚遠,不適合用來程式設計。

組合語言:也稱其為符號語言,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或運算元的地址。在不同的裝置中,組合語言對應著不同的機器語言指令集,通過彙編過程轉換成機器指令。普遍地說,特定的組合語言和特定的機器語言指令集是一一對應的,不同平臺之間不可直接移植。組合語言多用於硬體的嵌入式語言。

高階語言:是指我們常用的程式設計語言,以下圖中就是排名前20的程式語言。


二、根據執行時態不同可分為:

1、編譯型:C語言,C++等

2、解釋型(亦稱指令碼語言):js,php,python等

兩者相同:因為計算機硬體並不能識別語言中的if或else語句等,所以都要轉化成二進位制才能執行;

兩者不同:在於這轉化成二進位制的方式;

————————從效果上看:是否顯性的生成二進位制檔案————————

編譯型語言要全部寫完之後,然後通過某個編譯器,去生成一個類似*.exe的二進位制檔案,然後手工雙擊這個檔案才看的到效果;

解釋型語言則沒生成你看的到的那種.exe檔案,而是直接發出效果。

————————從執行上看:是否顯性的生成二進位制檔案————————

編譯型語言執行的是最終的二進位制程式碼了,所以不在需要編譯器在身邊守護。

但解釋型語言則不然,它是邊解釋、邊執行,所以執行的時候很可能還有部分程式碼沒有解釋好,所以需要編譯器守護(解釋型語言把該工具叫:直譯器)。那麼編譯器在哪裡?就在瀏覽器裡,所以你要看html效果,必須是用瀏覽器這種工具,或者有編譯工具在內的其他工具,如:模擬瀏覽器的工具。

————————執行效率的對比————————

編譯型語言由於執行的已經是完全的二進位制內容了,所以執行起來很乾淨利落,自然速度快。

但解釋型語言,執行的不一定是完全的二進位制內容,因為它是邊解釋(成二進位制),邊執行。所以當它執行看出效果的時候,程式後半部分還不一定解釋成二進位制呢。所以它是“三心二意”的做事,速度沒有前者快,但是CPU的執行速度如果很快,你可能看不出來,偶爾會看到“有點卡”的效果。原因就是:它邊解釋、邊執行,你看到效果了,可能還有一少半的程式碼沒解釋成二進位制呢,所以你看到的效果會是殘缺的,這就是為什麼檢視網頁的時候,很容易就看到這樣的情況:先是出現一堆沒有佈局的文字,然後才出現那種佈局好的效果。

————————可移植性對比————————

編譯型語言是執行二進位制內容,所以:一旦CPU指令系統改變,之前的二進位制檔案可能執行不了。比如:如果到其他硬體平臺上執行,就可能出現錯誤,就需要根據該平臺重新編譯出新的二進位制檔案。所以:可移植性差;

而解釋型語言則不然。它並沒有實現弄成什麼二進位制內容,而是在需要的時候才開始編譯、執行。所以:它自然具有可移植性,即:在任何平臺都可以馬上執行起來。

注意:它的解釋工具如:瀏覽器,本身就是編譯型語言解釋出來的二進位制程式碼,所以瀏覽器本身不具有移植性,是需要針對不同的平臺弄出對應的瀏覽器最終二進位制檔案的。這裡千萬不要混淆了。

————————升級上對比————————

編譯型語言弄出來的二進位制檔案如果要升級,自然要重新下載一個新的二進位制檔案了。所以重新下載,安裝,覆蓋是最大的特點。比如QQ的升級,就是要重新下載,重新安裝,重新覆蓋,等個半天,而且很耗費CPU資源,體驗性就不大好;

而解釋型的語言,只要重新寫好原始碼即可。使用者提要到最新效果,只要重新整理一下即可。所以體驗性好。比如:某網站平臺升級了,使用者只要重新重新整理一下......

————————應用領域————————

編譯型語言應用領域通常是那些安裝軟體,如:桌面上的那種安裝軟體;

解釋型的語言的應用領域通常是:網際網路,網站等,那種重新整理了一下就可以看到最新效果的領域。

-----------------------------------實現原理-----------------------------------

實現原理,簡單來說就是:是不是做成了“實時採集”;

編譯型語言沒有做“實時採集”。它選擇了一次性解決問題,表現為:先弄出完整的二進位制程式碼之後,再讓使用者去執行該二進位制程式碼,這樣省事、省力、省心。但造成可移植性差、升級麻煩的後果。

解釋型語言,採用了“實時採集”的措施,做成“邊解釋、邊執行”。但這樣帶來的直接弊端就是:邊走邊看,因此速度自然要慢一些。不過現在的CPU、記憶體等硬體能力都很強大,這個方面的影響可以忽略。而它帶來的非常便捷的升級,讓它更顯示出獨特的魅力。所以它在移動網際網路的領域,在只要重新整理一下就可以看到最新效果的領域,是獨一無二的霸主。

結論:二者都是客觀事物,各有優勢和劣勢,沒有絕對的正確和錯誤之分,所以學習者也要客觀的認識。

三、根據程式設計思想的不同可分為:

1、面向過程(POP):

2、面向物件(OOP):

3、函數語言程式設計(FP):

4、面向切面(AOP):

C語言,C++,C#,Java,Python,PHP,JavaScript,Visual Basic.NET,Ruby,swift,Perl,MATLAB,R,Go,SQL 等

易看出現在比較火熱的語言主要是面向過程和麵向物件量大主要陣營;然而函數語言程式設計和麵向切面的程式設計思想對前兩者的影響之深。比如Python作為面向物件的程式語言的最火熱的代表,其中已經加入了許多函數語言程式設計思想(lambda+內建函式)和麵向切面的程式設計(裝飾器)。函式式語言的堅持者:erlang。

可見各種語言在發展過程中都是為了堅守著本心的情況下去簡化使用過程,擴充套件應用功能;使其往者更加接近人類的自然語言的方向發展。