C++ 程式設計:C++ 程式語言

C++ (發音為“see plus plus”) 是一種通用,多正規化,靜態型別,自由格式 程式語言,支援過程式;面向物件;泛型;以及(最近)函數語言程式設計正規化,並且以其在程式碼中促進低成本抽象而聞名。如果您不熟悉上述任何概念,請不要擔心,它們將在後續部分介紹。
在1990 年代,C++ 成為最流行的計算機程式語言之一,根據TIOBE 指數,它仍然是最流行的語言中的第四名。[1] C++ 最初設計時重點放在系統程式設計上,但其功能也使其成為建立終端使用者應用程式的理想語言,尤其是那些資源受限或需要非常高的效能的應用程式。C++ 被廣泛用於遊戲開發、Web 客戶端/伺服器端、金融應用程式的後端和機器人技術。

Bjarne Stroustrup,來自貝爾實驗室的計算機科學家,是C++(最初名為“帶類的 C”)的 1980 年代的設計者和最初的實現者,是對C 程式語言的增強。C 也是在貝爾實驗室為了實現Unix 作業系統而由丹尼斯·裡奇建立的,它賦予使用者比組合語言 (ASM) 更高的概念級別對硬體的控制,但仍然具有有限的表達能力。Stroustrup 決定將面向物件Simula 語言的程式組織功能與 C 對硬體資源的有效利用相結合。增強功能始於新增面向物件的概念,例如類和虛擬函式,隨後,在許多功能中,有名稱空間、運算子過載、模板和異常處理。這些和其他功能將在本書中詳細介紹。C++ 的一些功能後來被 C 採用,包括用於在程式中建立不可變值的 const 關鍵字、inline 函式、在for 迴圈 中的宣告,以及C++ 風格的註釋(使用//符號)。
C++ 程式語言 是ANSI(美國國家標準學會)、BSI(英國標準學會)、DIN(德國國家標準化組織)和其他幾個國家標準機構認可的標準,並於 1998 年由ISO(國際標準化組織)批准為 ISO/IEC 14882:1998,但更常被稱為C++98 或簡稱為C++。該標準包含兩部分:核心語言和標準庫;後者包括標準模板庫和標準 C 庫(ANSI C 89)。
2003 年版本,ISO/IEC 14882:2003,稱為C++03,將標準語言重新定義為一個單獨的專案。在C++ 標準化之前存在的 STL(“標準模板庫”)(最初是在Ada 中實現的)成為標準的組成部分,也是符合標準的實現的必備條件。
從 2004 年開始,標準委員會(包括 Bjarne Stroustrup)制定了新版本標準的細節,C++11(以前稱為C++0x)於 2011 年 8 月 12 日獲得批准。C++11 使該語言更高效、更易於使用,並在標準庫中添加了更多功能。C++14 的規範於 2014 年 12 月 15 日釋出,與C++11 相比,其變化較小,並且編譯器對該標準的支援很快跟進。有幾個表格 顯示了編譯器對所謂的現代 C++ 功能的支援。
許多其他C++ 庫存在,它們不屬於標準,一個流行的例子是Boost。此外,用 C 編寫的非標準庫通常可以被C++ 程式使用。
- C++ 原始碼示例
// 'Hello World!' program
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
return 0;
}
傳統上,人們在學習一門新語言時編寫的第一個程式被稱為“Hello World”,因為它的作用只是簡單地顯示Hello World 這幾個詞,同時在這個過程中揭示了有關該語言的基本資訊。 Hello World 解釋(在示例附錄中)詳細解釋了這段程式碼,其中可以看到這裡提到的C++ 的幾個元素,包括 C 風格的語法和標準庫的使用。
在你開始瞭解如何使用C++ 編寫程式之前,瞭解你可能會遇到的一些關鍵概念非常重要。這些概念並不侷限於C++,但有助於理解計算機程式設計的總體概念。有其他程式語言經驗的讀者可能希望快速瀏覽一下本節,或者完全跳過本節。
如今,有很多不同型別的程式在使用。從你使用的作業系統,它確保一切正常工作,到你用來娛樂的影片遊戲和音樂應用程式,程式可以滿足許多不同的目的。所有程式(也稱為軟體或應用程式)的共同點是,它們都是由以某種形式或另一種形式用程式語言編寫的指令序列組成。這些指令告訴計算機該做什麼,以及通常如何去做。程式可以包含從解決數學問題的指令到影片遊戲角色在遊戲中被擊中時如何表現的任何內容。計算機將從頭到尾逐條執行程式的指令。
所有計算機程式(或者更確切地說是大多數程式)的另一個共同點是它們解決問題並執行任務。向世界問好。在螢幕上繪製一個按鈕。計算 26*78。駕駛汽車。幸運的是,計算機必須學會如何執行這些任務。換句話說,它們必須被程式設計。
為什麼不學呢?這是決定學習任何東西的最清晰的方法。雖然學習永遠是好事,但選擇你學什麼更重要,因為這將是你優先處理任務的方式。這個問題的另一個方面是你將投入一些時間來獲得新的技能。你必須決定這將如何使你受益。檢查你的目標,並比較類似的專案,或者看看程式設計市場需要什麼。無論如何,你瞭解的程式語言越多越好。
C++ 不是理想的第一語言。但是,如果你願意對C++ 投入超乎尋常的興趣,那麼你甚至可以將它作為你的第一語言來學習。確保花一些時間瞭解不同的正規化以及為什麼 C++ 是一種多正規化或混合語言。
如果你學習 C++ 的目的僅僅是為了在簡歷上多加一項技能,也就是隻願意付出足夠的努力去了解其主要特點,並學習一些關於其不為人知的角落,那麼你最好先學習另外兩種語言。這將有助於你瞭解 **C++** 在程式設計方法上的獨特之處。你應該選擇一種命令式語言和一種面嚮物件語言。對於前者,C 可能是最好的選擇,因為它具有良好的市場價值,並且與 **C++** 存在直接關聯,儘管 ASM 也是一個不錯的替代選擇。對於後者,Java 是一個不錯的選擇,主要是因為它與 C++ 的語法有很多共同之處,但它不支援指令式程式設計。閱讀 語言比較 部分以更好地瞭解它們之間的關係。
雖然學習 C 不是理解 **C++** 的必要條件,但你必須知道如何使用命令式語言。**C++** 不會讓你很容易地理解一些更深層的概念,因為在 C++ 中,你,程式設計師,被賦予了更大的自由度。在 C++ 中,有很多方法可以完成一件事。理解選擇哪種方法將成為掌握這門語言的基石。
如果你僅僅對學習面向物件程式設計感興趣,你不應該學習 **C++**。C++ 對物件提供了一些支援,但它仍然不是真正的面嚮物件語言,因此使用的命名法和解決問題的思路會讓你更難學習和掌握這些概念。如果你真的對面向物件程式設計感興趣,你應該學習 Smalltalk。
與所有語言一樣,**C++** 也擁有特定的應用範圍,它能夠真正發揮其優勢。C++ 比 C 和 Java 更難學,但比它們都更強大。**C++** 使你能夠從在 C 或其他更底層的語言中必須處理的小事中抽象出來,但它會賦予你比 Java 更大的控制權和責任。由於它不會提供你可以在類似更高層語言中獲得的預設功能,你必須搜尋和檢查這些功能的幾個外部實現,並自由選擇最適合你目的的實現(或實現你自己的解決方案)。
- ↑ "根據 TIOBE 指數,C++ 是第三大最流行的程式語言". 2020 年 9 月.
