langShift

C++ 語言介紹

C++ 語言歷史和設計哲學

C++ 是一種功能強大、通用性強的程式語言,由 Bjarne Stroustrup 在 C 語言的基礎上擴展創建,最初名為「帶類的 C」。它的設計理念是「零開銷原則」,即不使用的特性不應帶來任何性能開銷。C++ 融合了高級和低級程式設計能力,使其適用於廣泛的應用場景。

與 JavaScript 的對比概述

特性JavaScriptC++
範式多範式(主要為函數式、物件導向、事件驅動)多範式(物件導向、泛型、程序式)
類型動態類型,弱類型靜態類型,強類型
執行解釋型(在瀏覽器/Node.js 中進行 JIT 編譯)編譯型
記憶體管理自動(垃圾回收)手動(指標、new/delete)、智能指標
性能通常較慢(由於解釋/垃圾回收)通常較快(編譯型,底層控制)
用例Web 開發(前端/後端)、行動應用、桌面應用系統程式設計、遊戲開發、嵌入式系統、高性能計算

編譯型 vs 解釋型語言

JavaScript(解釋型/JIT 編譯): JavaScript 程式碼通常由解釋器(如瀏覽器的 JavaScript 引擎或 Node.js)執行。雖然現代 JavaScript 引擎使用即時(JIT)編譯將程式碼在運行時轉換為機器碼以提高性能,但其核心特點是程式碼不會預先編譯成獨立的執行檔。

C++(編譯型): C++ 程式碼在執行前必須編譯成機器碼。這個過程包括:

  1. 預處理: 處理 #include#define 等指令。
  2. 編譯: 將預處理後的程式碼轉換為組合語言程式碼。
  3. 組合: 將組合語言程式碼轉換為機器碼(目標檔案)。
  4. 連結: 將目標檔案和函式庫組合為一個可執行程式。

這個編譯步驟允許進行廣泛的優化,並生成高效的本地程式碼。

C++ 應用場景和優勢

應用場景:

  • 系統程式設計: 作業系統、設備驅動、嵌入式系統。
  • 遊戲開發: 高性能遊戲引擎(例如 Unreal Engine、Unity 的核心)。
  • 高性能計算: 科學模擬、金融建模、交易系統。
  • 圖形和多媒體: 圖像/影片處理、3D 圖形。
  • 資料庫: 資料庫系統(例如 MySQL、MongoDB)。
  • 編譯器和解釋器: 構建程式語言工具。

優勢:

  • 性能: 由於直接記憶體存取和編譯,性能接近裸機。
  • 控制: 對硬體資源和記憶體的精細控制。
  • 可擴展性: 適用於大型複雜系統。
  • 可移植性: 程式碼可以在各種平台上編譯和運行。
  • 豐富的生態系統: 廣泛的函式庫和工具。

開發環境搭建

要編寫和運行 C++ 程式碼,通常需要:

  1. 文字編輯器或 IDE: Visual Studio Code、Visual Studio、CLion、Eclipse 等。
  2. C++ 編譯器: GCC (GNU Compiler Collection)、Clang、MSVC (Microsoft Visual C++)。

範例設定(Linux/macOS 與 GCC/Clang): 安裝 build-essential (Linux) 或 Xcode Command Line Tools (macOS)。

# 在 Ubuntu/Debian 上
sudo apt update
sudo apt install build-essential
# 在 macOS 上
xcode-select --install

你的第一個 C++ 程式

讓我們編寫一個簡單的「Hello, World!」 C++ 程式。

正在加载...

編譯和連結過程

要編譯並運行 C++ 「Hello, World!」 程式(假設你將其保存為 hello.cpp):

  1. 編譯:

    g++ hello.cpp -o hello
    • g++:C++ 編譯器(GCC 的一部分)。
    • hello.cpp:你的原始碼檔案。
    • -o hello:指定輸出的可執行檔案名為 hello
  2. 運行:

    ./hello

    這將執行編譯後的程式,並在你的控制台打印「Hello, World from C++!」。


練習題:

  1. C++ 這樣的編譯型語言與 JavaScript 這樣的解釋型語言之間主要區別是什麼?
  2. 列舉三個 C++ 優於 JavaScript 的常見應用領域,並解釋原因。
  3. 描述編譯和連結一個簡單的 C++ 程式所涉及的步驟。

專案構想:

  • 用 C++ 創建一個簡單的命令行計算器,可以執行基本的算術運算(加、減、乘、除)。