淺談 C 語言歷史

引言

一直想做個(gè)技術(shù)分享的社區(qū),讓我們每個(gè)人都有機(jī)會(huì)把自己學(xué)到的編程知識(shí)分享出來一起探討,于是借這次學(xué)弟學(xué)妹們的入學(xué)潮流,我的簡書賬號(hào)正式成立,不定期持續(xù)分享,歡迎大家的持續(xù)關(guān)注與深入交流。

編程是一件很有趣的事情,因?yàn)槲覀兛梢噪S心地修改程序來調(diào)侃一段人生,亦或?qū)懸淮柡娨獾拇a向心動(dòng)已久的女生表白。

while(i.meet(u)) {
    ourStory.begin();
}

那么就從很基礎(chǔ)也很長壽的 C 語言歷史開始講起吧。如果你是學(xué)弟學(xué)妹,那沒問題,這里正是一切的開始;如果你是學(xué)長學(xué)姐,學(xué)完 C 語言來這里聽聽故事,也不失有趣。


C語言的來歷

先來緬懷一位前輩,Dennis Ritchie —— C 語言之父和 Unix 之父,計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)的奠定者。Dennis Ritchie 于 1978 年出版的名著《C程序設(shè)計(jì)語言(The C Programming Language)》,推動(dòng)了C語言的發(fā)展和普及,該數(shù)至今仍通過不斷再版廣泛傳播。書中用 "hello world" 為實(shí)例開始講解程序設(shè)計(jì),也已經(jīng)成為程序設(shè)計(jì)語言圖書的傳統(tǒng)。

Dennis Ritchie

Dennis Ritchie 于 1970 年前后和計(jì)算機(jī)科學(xué)家 Ken Thompson 在貝爾實(shí)驗(yàn)室開發(fā)出來的 UNIX 操作系統(tǒng)起初是用無數(shù)據(jù)類型的 B 語言開發(fā),計(jì)算機(jī)內(nèi)大部分操作將數(shù)據(jù)作為整數(shù)對待(例如進(jìn)行+、-、*、/操作),其余操作將作為一個(gè)復(fù)引用的內(nèi)存地址。

Ken Thompson (左) 和 Dennis Ritchie (右)

下圖為一些早期的高級(jí)程式語言的誕生時(shí)間線,其中 ALGOL 60 是計(jì)算機(jī)發(fā)展史上首批產(chǎn)生的高級(jí)程式語言,標(biāo)志著程序設(shè)計(jì)語言成為一門獨(dú)立的科學(xué)學(xué)科,并為后來軟件自動(dòng)化及軟件可靠性的發(fā)展奠定了基礎(chǔ)。ALGOL 60 語言基礎(chǔ)上設(shè)計(jì)出了 CPL,CPL 基礎(chǔ)上設(shè)計(jì)出 BCPL,B 語言便是簡化 BCPL 后取首字母 B 命名而來。

早期高級(jí)程式語言家族

由于 B 語言過于簡單以及數(shù)據(jù)無類型的弊端,Dennis Ritchie 和 Ken Thompson 在 B 語言的基礎(chǔ)上設(shè)計(jì)出了 C 語言,C 語言更加精煉、也更加接近硬件。之后的 UNIX 操作系統(tǒng)便用 C 語言重構(gòu),并一直用 C 語言編寫至今。

一個(gè)有趣的故事是,Ken Thompson 想寫個(gè)模擬在太陽系航行的電子游戲 Space Travel 玩,身邊只有一臺(tái)沒有操作系統(tǒng)的空閑機(jī)器 PDP-7,而游戲必須使用操作系統(tǒng)的一些功能,于是 Ken Thompson 開始著手用 B 語言為 PDP-7 開發(fā)一個(gè)操作系統(tǒng),后來這個(gè)操作系統(tǒng)便命名為 UNIX。這個(gè)過程中吸引到了同樣酷愛 Space Travel 的 Dennis Ritchie,加入到了 Thompson 的開發(fā)項(xiàng)目中。Dennis Ritchie 的開發(fā)重心在改造 B 語言,結(jié)果誕生出了取 BCPL 語言第二個(gè)字母的新語言——C語言。

最后創(chuàng)造操作系統(tǒng)的快樂遠(yuǎn)遠(yuǎn)超出了玩 Space Travel 的初衷。

PDP-7

C語言的發(fā)展

從下圖可以看出 C 語言歷史上的幾個(gè)重要事件,首先是 C 語言于 1972 年在貝爾實(shí)驗(yàn)室的誕生,1973 年 Dennis Ritchie 和 Ken Thompson 用 C 語言改寫 UNIX 操作系統(tǒng),再到 1978 年 Dennis Ritchie 正式發(fā)布名著《The C Programming Language》,打下 C 語言發(fā)展的基石。接下來分別于1990年、1999年、2011年由國際標(biāo)準(zhǔn)化組織(ISO)和國際電工委員會(huì)(IEC)推動(dòng)的 C88、C99、C11 標(biāo)準(zhǔn),保持了 C 語言的活力,讓 C 語言不在歷史的潮流中消逝。

C 語言的發(fā)展

C語言的特點(diǎn)

誕生時(shí)的輝煌可以成就一個(gè)語言的開始,但能在歷史的潮流中不被淘汰也會(huì)要求這門語言持續(xù)發(fā)揚(yáng)自身的優(yōu)點(diǎn),逐步克服自身的缺點(diǎn)。至今公開的最少
256 種編程語言中,C 語言便是在發(fā)揚(yáng)自身的優(yōu)點(diǎn),克服自身的缺點(diǎn)的過程中穩(wěn)排編程榜榜首前列。

2016年7月編程語言排行榜

以下便是 C 語言常見的幾個(gè)優(yōu)點(diǎn):

  1. 簡潔緊湊、靈活方便
  2. 運(yùn)算符豐富
  3. 數(shù)據(jù)結(jié)構(gòu)豐富
  4. 表達(dá)方式靈活實(shí)用
  5. 允許直接訪問物理地址,對硬件進(jìn)行操作
  6. 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高
  7. 可移植性好
  8. 表達(dá)力強(qiáng)

而不足之處在于:

  1. 數(shù)據(jù)封裝性不好 -- 數(shù)據(jù)安全性有缺陷
  2. 語法限制不嚴(yán)格 -- 自由的代價(jià)
  3. 缺少支持代碼重構(gòu)的語言結(jié)構(gòu) -- 面向過程的缺點(diǎn)

一個(gè)個(gè)字符,隨著敲擊鍵盤的噠噠聲,經(jīng)由或是懵懂或是老練的程序員指尖的躍動(dòng),最終呈現(xiàn)為顯示器上一行行的代碼。它們就這樣,一行接一行隨著回車與換行不停的跳動(dòng)。那,是眼前這個(gè)人悅動(dòng)的靈魂,它一點(diǎn)一點(diǎn)、一行行慢慢的實(shí)現(xiàn)著屏幕前這個(gè)程序員的夢想,也一點(diǎn)點(diǎn),一步步推動(dòng)著時(shí)代的發(fā)展,社會(huì)的變遷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容