機器語言
機器語言是用二進制代碼表示的計算機能直接識別和執行的一種機器指令的集合。
彙編語言
彙編語言用助記符代替機器指令的操作碼,用地址符號或標號代替指令或操作數的地址。普遍地說,特定的彙編語言和特定的機器語言指令集是一一對應的,不同平臺之間不可直接移植。
高級語言
編譯型與解釋型
計算機只能直接理解機器語言,所以需要將高級語言翻譯成機器語言,翻譯的方式有兩種:編譯和解釋。
程序從運行方式考慮分爲兩種:靜態編譯和動態解釋。
- 編譯型語言:在程序執行之前,先將程序編譯成爲機器語言,運行的時候不用重複翻譯了,直接使用編譯的結果。(通常稱爲 AOT,Ahead of time 即“提前編譯”)效率高,依賴編譯器,跨平臺差。如:
C
、C++
、Object-C、swift、go
等 - 解釋型語言:程序不需要編譯,程序在運行時才翻譯成機器語言,每執行一次都要翻譯一次。(通常稱爲 JIT,Just-in-time 即“即時編譯”)效率比較低,依賴解釋器,跨平臺好。如:
JavaScript
、Python
、PHP、Ruby 等
動態語言與靜態語言
- 動態類型語言:指在運行期間纔去做數據類型檢查的語言。如:
Python
、Ruby、JavaScript
、swift、PHP、Perl 等 - 靜態語言:數據類型在編寫代碼時,就要明確數據類型。如:C、C++、C#、
Java
、Object-C、go
、Kotlin
等
強類型語言與弱類型語言
- 強類型語言:變量被指定了某個數據類型,如果不強轉,那麼永遠是這個數據類型。如:
Java
、C#、Python
、Object-C、Ruby 等 - 弱類型語言:變量可以賦值不同數據類型的值。如:
JavaScript
、PHP、C、C++ 等