首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言發展史:從BCPL到ANSI標準的演進之路

     編輯:關於C語言

前言

C語言的誕生與Unix作業系統的早期發展緊密交織在一起。本文由C語言之父Dennis Ritchie親自撰寫,詳細記錄了C語言從無類型的BCPL演變而來,歷經B語言階段,最終建立完整類型系統並成為ANSI標準的完整歷程。

歷史背景:貝爾實驗室的動盪歲月

1960年代末,貝爾電話實驗室從Multics專案撤出。Ken Thompson領導的非正式小組開始尋找建立舒適計算環境的方法。他們在極其簡陋的DEC PDP-7上(僅有8K 18-bit字長記憶體)用組合語言編寫了Unix雛形,包含核心、編輯器、組譯器、Shell及基礎工具。

從BCPL到B語言

BCPL是Martin Richards在1960年代中期設計的無類型語言,只有一種資料類型——「字」。Thompson將BCPL精簡以適應PDP-7的記憶體限制,創造了B語言。B語言引入了關鍵創新:++和--運算符,以及複合賦值運算符(如=+,後修正為+=)。B編譯器產生threaded code而非機器碼,執行效率較低。

C語言的誕生:類型系統的建立

PDP-11的到來暴露了B語言在字元處理、浮點數支援和指標運算上的缺陷。Ritchie從1971年起擴展B語言,增加char類型並重寫編譯器生成原生機器碼,此版本稱為「New B」(NB)。

關鍵突破在於數組與指標語義的重新設計:

  • 數組名在表達式中自動轉換為指向首元素的指標
  • 消除了記憶體中實際儲存指標的需求
  • 使結構體等複雜類型成為可能

第二大創新是聲明語法模仿表達式語法(int *pi, **ppi;),源自Algol 68的類型組合理念。1972年,語言正式命名為C。

預處理器與可移植性

1972-73年間引入預處理器(#include、#define),後擴展支援條件編譯。1973年夏天,Unix核心用C語言重寫成功。隨後編譯器移植到Honeywell 635、IBM 360/370,Steve Johnson開發了可移植C編譯器(PCC),推動Unix向Interdata 8/32、VAX 11/780等平台移植。

K&R C與標準化

1978年《The C Programming Language》(K&R)出版,成為事實標準。1983年ANSI成立X3J11委員會,1989年發布ANSI C標準(ISO/IEC 9899:1990)。標準化引入函數原型(double sin(double);)、const/volatile、完善預處理器與標準庫。

後繼語言與評價

C語言衍生出C++、Objective-C、Concurrent C等。其核心特徵——數組與指標關係、聲明模仿表達式——既是優點也是常被批評之處。儘管有缺陷,C語言以簡潔、高效、可移植、貼近機器又適度抽象的特性,成為系統實現的主流選擇,並在從微型機到超級電腦的廣泛平台上取得成功。

致謝與參考文獻

文中詳細列出了Ken Thompson、Dennis Ritchie、Alan Snyder、Steve Johnson、Michael Lesk、Brian Kernighan等人的貢獻,以及完整的參考文獻清單。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved