编程语言分类及区别
編程語言分類及區別
一、按歷代分類
編程語言分為三大類:機器語言、匯編語言、高級語言
- 第一代語言(1GL):機器語言 特征:面向機器的指令,機器可以直接執行。
- 第二代語言(2GL):匯編語言 特征:使用助記符代替機器指令。
- 第三代語言(3GL):高級語言 特征:是設計更容易被人們所理解的程序語言,告訴計算機執行什么任務和執行任務的步驟,是過程化的,最重要的作用是此時已經脫離了機器硬件系統,具有代碼可移植性。
- 第四代語言(4GL):應用語言 特征:只需要告訴計算機要執行什么任務,而不需要指定執行步驟,是非過程化的,最典型的代表就是數據庫語言SQL。
注意:
1、機器語言計算機能識別的唯一語言,機器語言是用二進制代碼(由0和1組成,每個0/1與高低電頻對應)表示的計算機能直接識別和執行的一種機器指令的集合。它是計算機的設計者通過計算機的硬件結構賦予計算機的操作功能。機器語言具有靈活、直接執行和速度快等特點。不同型號的計算機其機器語言是不相通的,按著一種計算機的機器指令編制的程序,不能在另一種計算機上執行。 2、匯編語言為了解決機器語言難以記憶、閱讀、修改等問題,匯編語言對機器語言的指令用字符代替,通過匯編編譯器可以把匯編代碼編譯成機器語言指令。匯編語言是一種用于電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在匯編語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或操作數的地址。在不同的設備中,匯編語言對應著不同的機器語言指令集,通過匯編過程轉換成機器指令。特定的匯編語言和特定的機器語言指令集是一一對應的,不同平臺之間不可直接移植。 3、高級語言為了使代碼更通用,具有不同硬件平臺的可移植性,更加方便人類理解和使用。可以通過高級語言對應的編譯器把代碼編譯成匯編語言(一般不會直接把高級語言編譯成機器語言,因為機器有匯編編譯器可以把匯編代碼轉換成機器代碼,并且匯編代碼更易調試和優化)。高級語言是一種指令集的體系,在這種語言下,其語法和結構更類似漢字或者普通英文,且由于遠離對硬件的直接操作,使得一般人經過學習之后都可以編程。高級語言通常按其基本類型、代系、實現方式、應用范圍等分類。 代表:java,c,c++,C#等 4、應用語言這種是高度封裝型語言,大多數情況下,是一些應用級軟件自定義的使用規則/語法標準,例如:數據庫編程語言,如各種數據庫的SQL語言,使用者只需要傳輸SQL語句給數據庫服務器,數據庫服務器內部負責解析執行。 代表:SQL二、按編譯及運行方式分類
編譯型和解釋型
一、編譯型編譯型語言是將代碼一次性全部編譯成二進制碼,然后運行。 代表語言:C/C++/go 二、解釋型解釋型語言的源代碼不是直接翻譯成機器指令,而是先翻譯成中間代碼,再由解釋器對中間代碼進行解釋運行。(編譯 一行,運行一行)代表語言:Java、Python、Perl、JavaScript、VBScript注意:
編譯型和解釋型的定義是對立存在的,但也可以在一個語言中同時存在。比如 java 語言同時兼有編譯型和解釋型特點。整個流程如下:將源代碼(.java 文件)編譯生成字節碼(.class 文件),再通過 JVM(java 虛擬機)運行生成機器指令,由機器運行機器碼。注意,此處生成機器語言前的操作是解釋型,每次運行都要重新解釋。因此,此處表明 java 是解釋型。但是,部分 JVM(java 虛擬機)有一種 JIT(Just in time)機制,能夠將部分已經解釋翻譯的常用機器指令保存。下次不需要解釋,直接運行即可。此時 java 是編譯型。編譯性語言不如解釋性語言跨平臺性好編譯性語言例如c語言:用c語言開發了程序后,需要通過編譯器把程序編譯成機器語言(即計算機識別的二進制文件,因為不同的操作系統計算機識別的二進制文件是不同的),所以c語言程序進行移植后,要重新編譯。(如windows編譯成ext文件,linux編譯成erp文件)。三、按數據類型的確認時間段分類
動態語言和靜態語言
-
一、動態類型語言
- 動態類型語言,是指在代碼運行階段對數據類型進行確認。用動態類型語言編程時,不用給變量指定數據類型,該語言會在你第一次賦值給變量時,在內部記錄數據類型。
- 動態類型語言的優點是不需要寫多種數據類型的代碼,代碼相對簡潔一些,方便代碼閱讀。缺點是不方便調試,代碼命名也容易混淆;
??代表:JavaScript、Python、Perfl
-
二、靜態類型語言
- 靜態類型語言,是指在代碼編譯階段對數據類型進行確認。
- 靜態類型語言的優點是方便調試,代碼相對規范。缺點是需要寫很多數據類型相關的代碼,代碼不夠簡潔。
??代表:Java、C/C++
四、編程語言、腳本語言、標記語言
-
一、編程語言
- 是用來定義計算機程序的形式語言。它是一種被標準化的交流技巧,用來向計算機發出指令。一種計算機語言讓程序員能夠準確地定義計算機所需要使用的數據,并精確地定義在不同情況下所應當采取的行動
- 代表語言:C/C++,Java,Perl等
-
二、腳本語言
- 是為了縮短編程語言的“編寫、編譯、鏈接、運行”等過程而創建的計算機編程語言。是一種用來解釋某些東西的語言,又被稱為擴建的語言,或者動態語言,用來控制軟件應用程序,腳本通常以文本保存,只在被調用時進行解釋或編譯。
- 代表語言:php,js,asp,Python,ruby等
-
三、標記語言
- 是一種將文本以及文本相關的其他信息結合起來,展現出關于文檔結構和數據處理細節的電腦文字編碼。與文本相關的其他信息(包括文本的結構和表示信息等)與原來的文本結合在一起,但是使用標記進行標識。標記語言不僅僅是一種語言,就像許多語言一樣,它需要一個運行時環境,使其有用。
- 代表語言:xml, html, xhtml ( xml 和 html 的合體 )等,(可以看出它們都是以 "ml"尾的)
五、按照數據類型的定義方式分類
-
一、強類型語言
強類型語言是一種強制類型定義的語言,一旦某一個變量被定義類型,如果不經過強制轉換,則它永遠就是該數據類型了,強類型語言包括Java、.net 、Python、C++等語言。舉個例子:定義了一個整數,如果不進行強制的類型轉換,則不可以將該整數轉化為字符串。 -
二、弱類型語言
弱類型語言是一種弱類型定義的語言,某一個變量被定義類型,該變量可以根據環境變化自動進行轉換,不需要經過顯性強制轉換。弱類型語言包括vb 、PHP、javascript等語言。
綜上所述,Python 是 動態 解釋型 的 強類型定義 的 腳本 語言
總結
- 上一篇: directoryinfo 读取 映射磁
- 下一篇: (JAVA)可变参数