編譯、解釋型語言:編譯型語言需要首先由編譯器將源代碼編譯為機器代碼,再由機器執行,即運行前有一個編譯過程,C++是典型的編譯語言,GCC是C++的最流行的編譯器;解釋型語言不需要編譯,運行時直接由解釋器解釋執行,典型代表如shell、Python;也有語言是這兩種類型的混合,即既需要編譯,又需要解釋執行,典型代表如Java,Java代碼首先由編譯器編譯為Java字節碼,後由JVM(Java虛擬機)解釋執行;需要說明的是編譯、解釋的界限並不絕對,例如Python代碼解釋執行前也可以被編譯或者說優化為內部代碼(.pyc格式文件)。
可移植性:指可以在多種環境(平台)下運行,C++具有可移植性,其可移植性由編譯器可以將符合標准的C++代碼編譯為不同的目標平台而得到。
靜態、動態類型:若類型是在編譯時確定,則為靜態,如C++,若類型是在運行時確定則為動態,如Python,一般來說,靜態類型中變量類型確定之後就不能改變,動態類型中變量類型(在運行時)可以改變。
強、弱類型:強類型偏向於更嚴格的類型檢查,更不容易進行隱式類型轉換,弱類型則相反,C++、Python都可被認為是強類型。
顯式、隱式類型:若類型是語法的一部分(例如,變量的帶類型的聲明、定義)則為顯示,若類型是推導出來,非顯示指定,則為隱式,C++為顯示類型,Python為隱式類型。
類型安全、不安全:類型安全語言能正確解釋內存區域的類型,即總能以和構建時相同(或兼容)的類型訪問內存區域,由於指針的存在,一般認為C++是類型不安全的,Python是類型安全的。
C++是靜態、強、顯示、不安全類型語言,當然以上關於類型概念並沒有嚴格定義,只是通俗的、大致的分類,參考文獻2。
內省、反射:內省(Introspection)是指程序運行時檢查對象類型的能力,反射(Reflection)更進一步,指程序運行時可訪問、檢測、修改自身狀態或行為的能力,參考文獻3,C++通過dynamic_cast和typeid可實現內省。
閉包:又稱詞法閉包(Lexical Closure)或函數閉包(Function closures),由函數和與其相關的引用環境(變量)組合而成的實體(集合),是實現函數式編程的關鍵,參考文獻3。
編程范型(模型):過程、結構化、面向對象、泛型、函數式、並發、分布式等,參考文獻4,C++可以實現過程、結構化、對象、泛型(通過模板)、函數式(通過operator()模擬)編程。
編程語言排行榜:TIOBE發布的編程語言熱度指數給出了最熱門的編程語言以及它們的份額。
參考文獻: