- C/C++實(shí)踐進(jìn)階之道:寫給程序員看的編程書
- 陳黎娟
- 1241字
- 2020-06-29 11:37:44
6-1 再次Understand C
前面的章節(jié),對(duì)C的語法做了一個(gè)概述,同時(shí)也提出了學(xué)習(xí)和實(shí)踐的注意事項(xiàng)。下面讓我們來對(duì)C語言做一個(gè)總結(jié)。
對(duì)于程序設(shè)計(jì)語言來說,十余年來我的體驗(yàn)可真不少。從古老的FORTRAN,VAX環(huán)境開始,Pascal,Basic,dBase,匯編,Object Pascal,Delphi都有一定的體驗(yàn),甚至還嘗試過一點(diǎn)C#,Java。可謂涉獵廣泛。不過最鐘愛的還是C/C++。
從C語言開始,C++,Delphi,C#,這基本上是我的學(xué)習(xí)曲線。不過,最近我有所回歸,一方面是工作的需要——做嵌入式開發(fā),另一方面是基于對(duì)C語言的重新理解。
1.六大特性構(gòu)筑輝煌
究竟是什么讓我們?nèi)绱税V迷于C語言?為什么千千萬萬的程序員同時(shí)選擇了C語言?
我總結(jié)了以下6個(gè)原因:
(1)小而簡潔。
(2)高效率。
(3)足夠的算法描述能力。
(4)強(qiáng)可移植性。
(5)結(jié)構(gòu)化程序設(shè)計(jì)。
(6)信任程序員。
2.高級(jí)語言的最小子集
小而簡潔是每次有人問我C語言特點(diǎn)的時(shí)候,想起的第一個(gè)回答。任何一個(gè)語言都是人類邏輯和機(jī)器邏輯的體現(xiàn):機(jī)器邏輯只認(rèn)識(shí)二進(jìn)制的東西,不過還是可以簡單地分為兩類,代碼和數(shù)據(jù),代碼演變成各種運(yùn)算和if,while這些結(jié)構(gòu)控制,數(shù)據(jù)演變成int,char,float,然后引入數(shù)組和struct組成復(fù)雜數(shù)據(jù)。加上代碼和數(shù)據(jù)在內(nèi)存中都有對(duì)應(yīng)的地址,于是就有了指針的概念。結(jié)合結(jié)構(gòu)化程序設(shè)計(jì)便有了函數(shù)。
你可能會(huì)說,任何高級(jí)語言都有這些特性,可是你不知道,比如Pascal語言,函數(shù)就分為“procedure和function”兩種。而且有一個(gè)變量定義方式:var i:integer。即在函數(shù)中要改變函數(shù)外面的一個(gè)變量定義的值,看看C語言:int fun(int *i)即可,函數(shù)的定義和指針的定義一結(jié)合,就有一個(gè)新的特性。所以我說C語言是高級(jí)語言的最小子集。
C語言的額外功能基本上都是通過函數(shù)庫來提供,很多特性,我們以為是C語言的,實(shí)際上我們錯(cuò)了,那是ANSI C規(guī)定標(biāo)準(zhǔn)庫函數(shù)必須提供的。
3.一個(gè)非常“低級(jí)”的高級(jí)語言
C語言能操作硬件,這讓C語言在操作系統(tǒng)的開發(fā),嵌入式系統(tǒng)等底層相關(guān)開發(fā)方面魅力十足,長盛不衰。當(dāng)然,這也帶來了很多語言的天生缺陷和煩惱,比較難理解。
4.C =匯編++
道理同上,C語言雖然難學(xué),但比匯編好用,基本上程序效率和匯編一致,當(dāng)然是硬件相關(guān)開發(fā)的不二選擇。
5.不完美的C語言,完美的程序員
很多文獻(xiàn)說“信任程序員”是C語言設(shè)計(jì)時(shí)的一個(gè)基本原則,而我的幽默理解是C語言設(shè)計(jì)者最后說:我就能做這樣多,剩下的你們看著辦吧!
6.告別語言崇拜,專注問題解決
小的時(shí)候我非常喜歡數(shù)學(xué),喜歡它的原因我現(xiàn)在想想可能有兩點(diǎn)非常重要:一個(gè)是數(shù)學(xué)的美,另一個(gè)是解決數(shù)學(xué)問題需要的工具非常簡單,白紙和鉛筆。
后來我愛好程序設(shè)計(jì),可能也是這兩個(gè)原因的延續(xù):程序設(shè)計(jì)的美;簡單的工具:C和PC,它們能讓我很快能見到結(jié)果,這是人生智力延伸的最好體驗(yàn)。
因?yàn)橄矏郏杂行┓忾]。我也是大學(xué)宿舍里編程語言優(yōu)劣的爭(zhēng)論者——那個(gè)時(shí)候沒有網(wǎng)絡(luò),所以還只限于幾個(gè)同學(xué)之間的討論。
不過,世界在變化。畢竟我們也有了很多編程語言和開發(fā)工具的體驗(yàn),C/C++,特別是C語言,畢竟是手工編程時(shí)代的最好代表。C語言的設(shè)計(jì)原則,“信任程序員”,一定會(huì)被“給程序員最好的幫助,讓他們專注于解決問題”所取代。
- What's New in TensorFlow 2.0
- 零基礎(chǔ)學(xué)C++程序設(shè)計(jì)
- Visual Basic程序設(shè)計(jì)教程
- 編寫整潔的Python代碼(第2版)
- Mastering Scientific Computing with R
- 高級(jí)C/C++編譯技術(shù)(典藏版)
- Mastering AndEngine Game Development
- JavaScript動(dòng)態(tài)網(wǎng)頁開發(fā)詳解
- 零基礎(chǔ)學(xué)單片機(jī)C語言程序設(shè)計(jì)
- Django實(shí)戰(zhàn):Python Web典型模塊與項(xiàng)目開發(fā)
- 人工智能算法(卷1):基礎(chǔ)算法
- SQL Server 入門很輕松(微課超值版)
- 30天學(xué)通C#項(xiàng)目案例開發(fā)
- DB2SQL性能調(diào)優(yōu)秘笈
- Java Web開發(fā)教程:基于Struts2+Hibernate+Spring