C語言簡介

1. C語言的起源
C 語言是一種高級語言,最初由 Dennis M. Ritchie [1] 為了開發(fā)一個操作系統(tǒng)而設(shè)計,最早在 1972 年在 DEC PDP-11 計算機(jī)上被首次實現(xiàn)。
2. 一次不務(wù)正業(yè)的發(fā)明
C 語言的發(fā)明和很多偉大的發(fā)明一樣,都是一個人或者幾個人不務(wù)正業(yè)閑著沒事偶然間發(fā)明的。據(jù)說當(dāng)時有一個年輕人為了能夠在一臺上機(jī)費(fèi)更便宜的計算機(jī)上愉快的進(jìn)行兩人對戰(zhàn)游戲,但不幸的是,這臺機(jī)器上原有的操作系統(tǒng)只能支持一個人在線游戲,于是這位熱愛游戲的年輕人不得不重新為這臺機(jī)器編寫一個新的操作系統(tǒng),可以支持多用戶,這樣大家就可以一起同時在線玩這個游戲了。而在編寫這個操作系統(tǒng)的過程中,他們對 B 語言進(jìn)行了升級,于是 C 語言誕生了。
這個發(fā)明 C 語言的年輕人叫丹尼斯?里奇 Dennis M. Ritchie [1]。C 語言派生自 BCPL 語言,并且 C 語言對 BCPL 語言有了長足的擴(kuò)展。因為 BCPL 簡稱為 B 語言,因此 C 語言就采用了字母表中的下一個字母來作為語言的名稱。講真這名字起得夠隨意的,不過話說回來了 B 語言這名字好像就是來自 A 語言的,有興趣的同學(xué)可以去了解一下這三門語言之間的淵源,在這里我們就不多贅述了。
下面是一個 C 語言發(fā)展歷史的列表:
| 語言 | 年份 | 開發(fā)者 |
|---|---|---|
| Algol | 1960 | International Group |
| BCPL | 1967 | Martin Richard |
| B | 1970 | Ken Thompson |
| Traditional C | 1972 | Dennis Ritchie |
| K & R C | 1978 | Kernighan & Dennis Ritchie |
| ANSI C | 1989 | ANSI Committee |
| ANSI/ISO C | 1990 | ISO Committee |
| C99 | 1999 | Standardization Committee |

3. C 語言的應(yīng)用
了解了發(fā)明過程就大致知道了 C 語言的應(yīng)用場景?;镜膽?yīng)用場景是操作系統(tǒng)的編寫。
當(dāng)然現(xiàn)在 C 語言的應(yīng)用已經(jīng)大大超出了這個范圍。因為 C 語言與生俱來的特性是很容易與底層硬件打交道,所以目前 C 語言大量應(yīng)用在需要直接硬件交互的場景。比如最近很多的物聯(lián)網(wǎng)中的嵌入式設(shè)備,底層驅(qū)動,高性能計算,游戲后端服務(wù),圖形處理等等。
但是由于 C 語言不支持原生的面向?qū)ο蟮拈_發(fā)模式,因此有人說過,對于 C 語言,最大的工程就是開發(fā)一個操作系統(tǒng)。
如果你想開發(fā)更為復(fù)雜的系統(tǒng),請使用別的語言。但是這不代表 C 語言已經(jīng)過時了。恰恰相反, C 語言正在我們的生活中發(fā)揮著比以前更為重要的角色,你的手機(jī),你的身邊的智能終端,甚至你家的掃地機(jī)器人,都無時不刻都有 C 語言的身影。


4. C 語言的特點(diǎn)
C 語言有如下的特點(diǎn):
- 代碼簡潔不繁瑣;
- 具有良好的可移植性,代碼與機(jī)器底層獨(dú)立(相對于匯編語言而言);
- 屬于中層編程語言(底層的為匯編語言等,高層的為 Java 語言等);
- 結(jié)構(gòu)化語言;
- 豐富的程序庫可以使用;
- 可以直接管理內(nèi)存;
- 運(yùn)行速度快;
- 提供了指針操作;
- 可以使用遞歸;
- 具有良好的擴(kuò)展性。
5. C 語言的幾個主要版本
從 C 語言發(fā)明到現(xiàn)在經(jīng)歷了如下的標(biāo)準(zhǔn):
| 版本 | 標(biāo)準(zhǔn) | 發(fā)布日期 |
|---|---|---|
| K&R | n/a | 1978-02-22 |
| C89 | ANSI X3.159-1989 | 1989-12-14 |
| C90 | ISO/IEC 9899:1990 | 1990-12-20 |
| C95 | ISO/IEC 9899/AMD1:1995 | 1995-03-30 |
| C99 | ISO/IEC 9899:1999 | 1999-12-16 |
| C11 | ISO/IEC 9899:2011 | 2011-12-15 |
目前 C 語言執(zhí)行的標(biāo)準(zhǔn)是 ISO/IEC 9899:2011,我們在課程中也會遵循此標(biāo)準(zhǔn)來完成代碼。
6. 我們?yōu)槭裁匆獙W(xué)習(xí) C 語言
如果你想要從事下面的工作,那么 C 語言將是你非常好的一個選擇:
- 從事需要直接操作操作硬件的編程的嵌入式設(shè)備開發(fā),不需要操作系統(tǒng)的支持。比如我們常見的冰箱,洗衣機(jī)等等的控制;
- 嵌入式操作系統(tǒng)和實時操作環(huán)境下的開發(fā);
- 基于 Linux 操作系統(tǒng)下的一些應(yīng)用程序。主要是中間層面應(yīng)用的開發(fā),直接可以與底層硬件交互,而本身又不直接與最終用戶進(jìn)行交互;
- 音頻和視頻的解碼器和編碼器等;
- 協(xié)議棧的開發(fā)。
7. 學(xué)習(xí)基礎(chǔ)
在這個教程中,大家最好能夠?qū)τ?Linux 操作系統(tǒng)有使用經(jīng)驗。有簡單的 Shell 命令使用經(jīng)驗。我們遇到的所有的操作基本都是通過命令行來進(jìn)行的。雖然我也很喜歡圖形界面操作,這也是趨勢,但是 C 語言目前主要的應(yīng)用場景都是在 Linux 下,所以大家最好學(xué)習(xí)一下相關(guān)的知識。
精慕門1289550 ·
2025 imooc.com All Rights Reserved |