C(全稱:C Programming Language)是一種通用的、面向過程的計算機程序設計語言。它由丹尼斯·里奇(Dennis Ritchie)於1972年在貝爾實驗室設計並實現,最初目的是作為Unix作業系統的系統實現語言[1]。C語言兼具高級語言和匯編語言的特點,能夠以簡易的方式編譯、處理低級存儲器,產生少量的機器碼,且不需要任何運行環境支持便可運行[2]。憑藉其高效性、靈活性和可移植性,C語言被廣泛應用於系統軟件、嵌入式系統、作業系統和編譯器等的開發中,並對後續眾多編程語言產生了深遠影響[3]。

C
中文名C語言
英文名C
設計者丹尼斯·里奇(Dennis Ritchie)、肯·湯普森(Ken Thompson)
設計年份1972年
主要實現GCC、Clang、MSVC、Intel C++ Compiler等
影響語言C++、Objective-C、Java、C#、Go、Rust等
作業系統跨平台

歷史

編輯

起源與早期發展

編輯

C語言的起源可以追溯到20世紀60年代。1967年,劍橋大學的馬丁·理查茲(Martin Richards)對CPL語言進行了簡化,創造了BCPL(Basic Combined Programming Language)語言[4]。1969年,肯·湯普森(Ken Thompson)在貝爾實驗室以BCPL為基礎,設計出了更接近硬件的B語言,並用它編寫了第一個版本的Unix作業系統[1]。

1971年,丹尼斯·里奇加入Thompson的項目,致力於改進B語言。在將B語言移植到PDP-11計算機的過程中,他們遇到了一系列問題,於是里奇在B語言的基礎上增加了數據類型等特性,創造了一種新語言。1972年,這種新語言被正式命名為「C」,取自BCPL的第二個字母。1973年,C語言的主體完成,Thompson和Ritchie隨即用C語言重寫了Unix內核[1]。

經典時期與標準化

編輯

1978年,布萊恩·科爾尼干(Brian Kernighan)和丹尼斯·里奇合著了《The C Programming Language》(中文譯名《C程序設計語言》)。這本書被廣泛稱為「K&R C」,成為C語言事實上的標準規範[2]。

隨着C語言的普及,為了統一不同實現之間的差異,美國國家標準協會(ANSI)於1983年成立了X3J11委員會,開始着手C語言的標準化工作[5]。1988年,K&R C的第二版出版,以反映即將到來的ANSI標準。1989年,ANSI正式批准了C語言標準(ANSI X3.159-1989),即C89。1990年,該標準被國際標準化組織(ISO)採納為ISO/IEC 9899:1990,即C90[6]。

此後,C語言標準經歷了多次修訂和擴展,主要包括:1995年的C95(擴充了寬字符和多字節字符支持)、1999年的C99(增加了long long、<stdint.h>、restrict等新特性)、2011年的C11、2017年的C17以及2023年發布的C23[7][8]。

設計哲學與特性

編輯

C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量機器碼且無需運行環境支持的編程語言。其核心特性包括:

  • 面向過程:C語言是一種面向過程的語言,強調通過函數(過程)來組織代碼,與C++、Java等面向對象語言有所不同[2]。
  • 指針與內存管理:C語言通過指針提供了對內存的直接訪問能力。程式設計師可以使用malloc()和free()等函數進行顯式的動態內存管理[2]。
  • 高效與靈活:C語言的代碼質量與匯編語言相當,一般只比匯編語言生成的目標程序效率低10%~20%。它提供了豐富的運算符和數據結構,既適合編寫系統軟件,也適合編寫應用軟件[1]。
  • 可移植性:C語言程序可以在多種計算機平台上編譯運行,只要該平台擁有對應的C語言編譯器和庫[2]。

影響

編輯

C語言的設計和成功對後來的編程語言發展產生了深遠影響。許多主流編程語言都直接或間接地借鑑了C語言的語法和思想[3],例如:

  • C++:在C語言基礎上增加了面向對象編程特性[3]。
  • Objective-C:在C語言基礎上增加了Smalltalk風格的消息傳遞機制。
  • Java和C#:借鑑了C語言的語法風格,但採用了不同的運行時和內存管理模型。

此外,C語言也是許多作業系統(如Linux、Unix)和嵌入式系統開發的核心語言。

參考文獻

編輯
  1. ↑ 1.0 1.1 1.2 1.3 Ritchie, Dennis M. "The Development of the C Language." ACM SIGPLAN Notices 28, no. 3 (March 1993): 201–208.
  2. ↑ 2.0 2.1 2.2 2.3 2.4 Kernighan, Brian W., and Dennis M. Ritchie. *The C Programming Language*. 2nd ed. Prentice Hall, 1988.
  3. ↑ 3.0 3.1 3.2 Stroustrup, Bjarne. *The Design and Evolution of C++*. Addison-Wesley, 1994.
  4. ↑ Richards, Martin. "BCPL: A Tool for Compiler Writing and Systems Programming." Proceedings of the Spring Joint Computer Conference, 1969.
  5. ↑ American National Standards Institute. "Programming Language C." ANSI X3.159-1989, 1989.
  6. ↑ International Organization for Standardization. "Programming Languages — C." ISO/IEC 9899:1990, 1990.
  7. ↑ International Organization for Standardization. "Programming Languages — C." ISO/IEC 9899:2011, 2011.
  8. ↑ International Organization for Standardization. "Programming Languages — C." ISO/IEC 9899:2023, 2023.