1.1 C語言的發(fā)展史
千里之行,始于足下。馬上要開始C語言的旅程了,突然想起我還是初學者的時候,曾經(jīng)翻閱了大量的C語言入門書籍,千篇一律,都是在剛開始的時候講解一些概念、理論和很多的術(shù)語。而我自小喜歡數(shù)理化,對文科不感冒,尤其是對需要大量死記硬背的知識感到非常頭疼。所以看著這些概念、理論、術(shù)語,沒多久就會有頭昏眼花、想睡覺的感覺。結(jié)果是大部分的內(nèi)容都如過眼云煙,隨風而去了,不過有兩點倒是奇跡般地記在腦海中了,到底是哪兩點呢?
第一點是C語言的創(chuàng)始者。中國有句老話是“吃水不忘挖井人”,既然決定學習C語言了,怎么能不知道C語言的創(chuàng)始者是誰呢?好了,直接告訴你,是來自貝爾實驗室的丹尼斯·里奇(Dennis Ritchie),美國人,生于1941年。他在1972年發(fā)明了C語言,被尊稱為C語言之父。但非常遺憾的是,2011年10月12日他永遠地離開了我們,圖1.1是丹尼斯·里奇的照片。

圖1.1 丹尼斯·里奇
第二點是C語言的標準。為什么非要了解C語言的標準呢?其實不難理解,想想當年秦始皇統(tǒng)一中國后,為何立即進行了“書同文,車同軌,統(tǒng)一度量衡”的改革?因為只有使用同一種文字、同樣的尺度、同一種標準,才能讓國人彼此看得懂,交流更方便,才能更好地促進社會的發(fā)展。同樣如此,C語言不是給一個人使用的,其使用者包括大量的開發(fā)者、維護者、管理者,以及C語言編譯器的實現(xiàn)者,如此多的使用者,如果沒有統(tǒng)一的標準遵循,你這么寫,他那樣用,結(jié)果就是你寫的東西他看不懂,他寫的東西你也看不懂,那將是多么的可怕。有了標準之后,大家都按同一標準干活,就非常便于大家交流,從而推動了C語言更快更好地發(fā)展。好了,下面就來學習一下C語言的這些標準。什么?這些標準?是的,沒有事物是一成不變的,C語言從誕生到現(xiàn)在已過了半個世紀,隨著C語言的不斷發(fā)展,經(jīng)歷了以下幾個標準制定時代。
1.“K&R”標準
1978年,丹尼斯·里奇與布萊恩·科爾尼汗聯(lián)合出版了名為《C程序設(shè)計語言》(The C Programming Language)的著作,這本書被C語言開發(fā)者稱為“K&R”,很多年來被當作C語言的非正式的標準說明,人們稱這個版本的C語言為“K&R C”。
2.“C89”標準
C語言于1972年11月問世,1978年由美國電話電報公司(AT&T)貝爾實驗室正式發(fā)布。1983年,美國國家標準局(American National Standards Institute,ANSI)開始制定C語言標準,并于1989年12月完成,在1990年春天發(fā)布,該標準稱為“ANSI C”標準,也稱為“C89”標準。
3.“C90”標準
后來ANSI把“C89”標準提交到ISO(國際化標準組織),1990年被ISO采納為國際標準,稱為“ISO C”標準。又因為這個版本是1990年發(fā)布的,因此也被稱為“C90”標準。
4.“C99”標準
在“C89”標準確立之后,C語言的規(guī)范在很長一段時間內(nèi)都沒有大的變動。直到1995年C程序設(shè)計語言工作組對C語言進行了一些修改,成為后來在1999年發(fā)布的ISO/IEC 9899:1999標準,通常被稱為“C99”標準。
5.“C11”標準
2007年,C語言標準委員會又重新開始修訂C語言,到了2011年正式發(fā)布了ISO/IEC 9899:2011標準,簡稱為“C11”標準。
讀者可能有些疑惑,這么多標準,到底該用哪一個呢?其實“K&R”是非正式標準,而且年代久遠,現(xiàn)在基本不用了;“C89”和“C90”屬同一個標準,即它們內(nèi)容一致,只是在不同的時間被兩家不同的機構(gòu)認證罷了,這個標準一直用到現(xiàn)在;目前的主流應(yīng)該是“C99”標準,現(xiàn)在已開始漸漸向這個標準過渡,不過仍有某些編譯器對這個標準支持得不夠好,所以用的時候還要注意一下;“C11”是現(xiàn)行最新的C語言標準,但還沒有完美支持的編譯器。本書采用的是GCC編譯器,其中一個原因就是它對“C99”標準的支持相對較好。至于什么是編譯器?別急,后面的章節(jié)會講到。
- 摩登創(chuàng)客:與智能手機和平板電腦共舞
- Python程序設(shè)計(第3版)
- Cassandra Design Patterns(Second Edition)
- Hands-On RESTful Web Services with Go
- 鋒利的SQL(第2版)
- 零基礎(chǔ)學單片機C語言程序設(shè)計
- 計算機應(yīng)用基礎(chǔ)實踐教程
- 小程序,巧應(yīng)用:微信小程序開發(fā)實戰(zhàn)(第2版)
- 時空數(shù)據(jù)建模及其應(yīng)用
- 深入理解BootLoader
- 深入解析Java編譯器:源碼剖析與實例詳解
- 嵌入式Linux C語言程序設(shè)計基礎(chǔ)教程
- Python第三方庫開發(fā)應(yīng)用實戰(zhàn)
- Node.js 6.x Blueprints
- Responsive Web Design with jQuery