C++ 程式設計:程式語言比較
沒有完美的語言。這一切都取決於資源(工具、人員,甚至可用時間)和目標。關於其他語言及其演變的更廣泛的看法,本主題超出了本書的範圍,還有許多其他作品可供參考,包括計算機程式設計華夏公益教科書。
本節是為那些已經有一些經驗的人提供一個快速入門,以便他們瞭解 C++ 語言的特殊特性,以及演示其與眾不同之處。
理想語言取決於具體問題。所有程式語言都旨在成為表達解決問題演算法的通用機制。換句話說,它是一種語言——而不是僅僅一個表示式——因為它能夠表達對不止一個特定問題的解決方案。
程式語言中的通用性級別各不相同。有領域特定語言 (DSL),例如正則表示式語法,專門為模式匹配和字串操作問題而設計。還有通用程式語言,如 C++。
最終,沒有完美的語言。有一些語言比其他語言更適合特定類的問題。每種語言都權衡取捨,在一個領域偏重效率,而在其他領域則效率低下。此外,效率可能不僅意味著執行時效能,還包括開發時間、程式碼可維護性以及影響軟體開發的其他因素。最佳語言取決於程式設計師的具體目標。
此外,在選擇語言時,另一個非常實際的考慮因素是該語言為程式設計師提供的工具的數量和質量。無論語言在理論上有多好,如果在所需的平臺上沒有一組可靠的工具,那麼該語言就不是最佳選擇。
最佳語言(就執行時效能而言)是機器程式碼,但機器程式碼(二進位制)是就編碼時間而言效率最低的程式語言。使用高階語言編寫大型系統的複雜性非常大,並且超出了人類使用機器程式碼的能力。在接下來的部分中,將比較 C++ 與其他密切相關的語言,如C、Java、C#、C++/CLI 和D。
上面的引語表明,目前還沒有哪種程式語言可以直接將概念或想法轉換為有用的程式碼,但有一些解決方案可以提供幫助。我們將介紹計算機輔助軟體工程 (CASE)工具的使用,這些工具將解決此問題的一部分,但其使用確實需要計劃和一定程度的複雜性。
這些部分的目的不是為了宣傳一種語言優於另一種語言;每種語言都有其適用性。有些在特定任務中更好,有些更易於學習,另一些只為程式設計師提供更好的控制級別。這一切可能也取決於程式設計師對特定語言的控制級別。
在 C++ 中,垃圾回收是可選的,而不是必需的。在本節中,我們將在本書的垃圾回收部分中深入探討這個問題。
正如我們將在本書的資源獲取即初始化 (RAII) 部分中看到的那樣,RAII 可用於為大多數問題提供更好的解決方案。當使用 finally 來清理時,必須在每次使用類時由類的客戶端編寫它(例如,fileClass 類的客戶端必須在 try/catch/finally 塊中執行 I/O,以便他們可以保證fileClass 已關閉)。使用 RAII,fileClass 的解構函式可以保證這一點。現在,清理程式碼只需編碼一次——在fileClass 的解構函式中;類的使用者無需執行任何操作。
預設情況下,C++ 編譯器通常會“修飾”函式的名稱,以方便函式過載和泛型函式。在某些情況下,您需要訪問在 C++ 編譯器中未建立的函式。要實現這一點,您需要使用extern關鍵字宣告該函式為外部函式
extern "C" void LibraryFunction();
