C、C++、C#的區別概述
https://link.zhihu.com/?target=https%3A//csharp-station.com/understanding-the-differences-between-c-c-and-c/文章翻譯源于此鏈接
01、C語言
? Dennis Ritchie在1972年創造了C語言并在1978年公布。Ritchie設計C的初衷是用于開發新版本的Unix。在那之前,Unix使用的是匯編語言(assembly language),它是計算機可讀取的最低級的編程。C語言的誕生徹底改變(revolutionize)了編程和操作系統。其余的,正如他們所說,是一段歷史了。
- C也是一門低級的編程語言,它的效率和匯編接近。
- 它提供了基本級(base-level)的訪問內存方式,對運行時支持的要求非常小。
- 由于C的年齡原因,使用C可能帶來一些安全性的提升(用戶少、黑客攻擊可能性小)
開發人員仍然使用它在操作系統、內核級軟件開發、硬件驅動和需要與舊代碼一同工作的應用程序上。(看TIOBE就知道了,2019年12月排名第二,僅次于Java)
02、C++
? C++可以說是C的擴展版本,它是由丹麥的哲學博士(Ph.D.)Bjarne Stroustrup開發的。他的目標是增強C語言并在不犧牲速度和效率的前提下為其增加面向對象(object-oriented)的能力。
- C++被認為是一種中級的語言,因為它基于低級的C語言所創建并擁有一些高級的能力
- 同時C++成為了另一個高產的編程語言。在開發操作系統時它會和C一同協作,在一些高端服務器和PC軟件上也有應用
- C++ 可以編寫跨平臺的程序,并且在許多領域,如游戲開發、系統編程等方面有廣泛應用(比如大家熟知的王者榮耀就用到了C++)
03、C#
? C#是一門高級的面向對象的編程語言,同樣也是作為C的擴展所創建的。它是在2002年,由微軟的一個團隊的領頭人Anders Hejlsberg開發的。它是基于**.NET框架**的,但是它的核心依然是C語言。
- C#將代碼編譯成字節碼(byte-code)而不是機器碼(0101的二進制)。
- 它會在一臺虛擬計算機上運行,這臺虛擬機實時(on the fly)將字節碼翻譯成機器碼。
- 在C語言的基礎上添加了垃圾回收(garbage collection)、未初始化的變量檢查(uninitialized variable checking)、邊界檢查(bound checking)和類型檢查(type checking)這些特性。
? 講到這里,C#有一些特性跟Java相像,以及JVM原理等等
C#常見于內部或者企業應用而不是商業軟件。可以在.NET框架中的客戶端和服務器端開發中找到。
區別總結
C、C++ 和 C# 是三種不同的編程語言,它們在設計目標、特性和應用領域上有很大的區別。以下是它們的比較:
- 編程范式:
- C: C 是一門過程式編程語言,主要關注過程和函數的編寫。
- C++: C++ 是一門多范式編程語言,支持過程式編程和面向對象編程。它引入了類和對象的概念,允許使用封裝、繼承和多態等面向對象的特性。
- C#: C# 是一門多范式編程語言,主要面向對象,同時也支持過程式和泛型編程。它設計用于與.NET框架交互,支持面向組件編程。
- 內存管理:
- C: 在 C 中,開發者需要手動管理內存,包括分配和釋放內存。
- C++: C++ 提供了自動內存管理的功能,但仍然允許使用手動管理內存的方式。它引入了構造函數和析構函數來管理對象的生命周期。
- C#: C# 運行在.NET框架上,具有垃圾回收機制,自動管理內存。開發者無需手動分配或釋放內存。
- 平臺兼容性:
- C: C 的代碼通常具有較好的平臺兼容性,可以在多個操作系統上編譯和運行。
- C++: C++ 的代碼也具有一定的平臺兼容性,但在涉及圖形用戶界面 (GUI) 等方面可能需要特定的調整。
- C#: C# 主要與.NET框架密切相關,因此在 Windows 環境中更為常見。雖然通過Mono和.NET Core可以實現在其他平臺上的運行,但主要還是以Windows 為主。
- 編譯與執行方式:
- C: C 代碼通常被編譯成機器碼,直接在硬件上執行。
- C++: C++ 代碼也被編譯成機器碼,但引入了面向對象的概念,允許生成類和對象的相關結構。
- C#: C# 代碼被編譯成中間語言 (IL),然后在.NET運行時環境中執行。這種方式允許跨平臺運行,并在運行時進行一些優化。
- 應用領域:
- C: C 通常用于系統級編程、嵌入式系統和對性能要求較高的應用程序。
- C++: C++廣泛應用于游戲開發、圖形界面應用程序、系統開發以及需要高性能的應用領域。
- C#: C# 常用于Windows桌面應用程序、Web應用程序、移動應用程序以及與.NET平臺集成的企業級應用。
總體而言,選擇使用哪種語言取決于項目的需求、開發者的經驗以及應用程序的特性。 C 適用于底層開發,C++ 提供了更多的抽象和面向對象的特性,而 C# 則適用于.NET平臺上的高級應用開發。