《C语言点滴》一1.5 内功修炼
本節(jié)書(shū)摘來(lái)自異步社區(qū)《C語(yǔ)言點(diǎn)滴》一書(shū)中的第1章,第1.5節(jié),作者 趙巖,更多章節(jié)內(nèi)容可以訪問(wèn)云棲社區(qū)“異步社區(qū)”公眾號(hào)查看
1.5 內(nèi)功修煉
C語(yǔ)言點(diǎn)滴
1.5.1 數(shù)學(xué)
作為一個(gè)門(mén)外漢,我真的不敢在這里談?wù)摂?shù)學(xué)的話題。直到我在網(wǎng)上看到南京大學(xué)數(shù)學(xué)系張高飛老師的一篇文章,我決定將全文轉(zhuǎn)述在下面,下面分割線之間的就是張高飛老師那篇文章了。文章不長(zhǎng),但是讓我這個(gè)悲情人物找到了自信,數(shù)學(xué)里面是有屬于我的一個(gè)分支的,那就是計(jì)算數(shù)學(xué)!
正如大家所知,代數(shù)幾何是現(xiàn)代數(shù)學(xué)的主流。當(dāng)代大多數(shù)一流的數(shù)學(xué)家都工作在這一領(lǐng)域。因此如果你覺(jué)得自己天賦異稟,并在代數(shù)、幾何與分析各方面都有著扎實(shí)的基礎(chǔ),我建議你絕不要浪費(fèi)自己的天賦:應(yīng)義無(wú)反顧地選擇代數(shù)幾何這一專(zhuān)業(yè)。當(dāng)然把代數(shù)、幾何與分析這三門(mén)基礎(chǔ)功課同時(shí)學(xué)好的人很少。比如有些同學(xué)有著很好的分析功底,但代數(shù)中的抽象思維能力卻相對(duì)顯得薄弱。如果是這樣的話,我建議你選擇分析方面的專(zhuān)業(yè),比如:復(fù)分析,分形,調(diào)和分析或微分方程。
除以上三部分同學(xué)之外,還有這樣的一部分同學(xué):他們對(duì)代數(shù),分析與幾何都不擅長(zhǎng),但卻一直堅(jiān)信自己在數(shù)學(xué)上仍能有所作為,并幻想有朝一日成為中國(guó)數(shù)學(xué)界的中流砥柱。如果你屬于這部分同學(xué)中的一位的話,我建議你選擇動(dòng)力系統(tǒng)。動(dòng)力系統(tǒng)這一學(xué)科其實(shí)就是專(zhuān)門(mén)為這部分同學(xué)開(kāi)設(shè)的。
當(dāng)然即使是動(dòng)力系統(tǒng)也不是人人都能學(xué)的。因?yàn)閯?dòng)力系統(tǒng)需要大量的微積分。可總有那么一部分同學(xué)還沒(méi)來(lái)得及把極限的概念搞清楚就大學(xué)畢業(yè)了(本文作者中槍)。如果你不巧就是這樣一位同學(xué),也就是說(shuō)你大學(xué)四年壓根兒就沒(méi)學(xué)數(shù)學(xué),但仍希望自己將來(lái)能在數(shù)學(xué)上一展宏圖的話,我建議你選擇組合數(shù)學(xué)這一專(zhuān)業(yè)。這一專(zhuān)業(yè)的特點(diǎn)就是它只用到中學(xué)的數(shù)學(xué)。如果你在中學(xué)時(shí)參加過(guò)數(shù)學(xué)競(jìng)賽并獲過(guò)獎(jiǎng)項(xiàng)的話,這一學(xué)科正是你大展身手的地方。
我想大多數(shù)同學(xué)看到這兒之前已經(jīng)找到了適合自己的專(zhuān)業(yè)了。可若仍有人羞怯地說(shuō)他在中學(xué)時(shí)早戀,因此連中學(xué)的數(shù)學(xué)也沒(méi)學(xué)好,我想告訴這部分同學(xué)不要怕。在我們系有專(zhuān)門(mén)為你們開(kāi)設(shè)的一個(gè)專(zhuān)業(yè):統(tǒng)計(jì)學(xué)。這一學(xué)科只要求懂得小學(xué)數(shù)學(xué)中的加減乘除四則運(yùn)算就夠了。更重要的是,選擇這一專(zhuān)業(yè)的大多都是女同學(xué)。在你準(zhǔn)確無(wú)誤地把成千上萬(wàn)個(gè)數(shù)據(jù)加起來(lái)并嫻熟地計(jì)算出他們的均值時(shí),你也贏得了眾多師姐師妹的芳心:短短三年的研究生生活或許能讓你再次體會(huì)一次那如花美眷,似水流年的往事……
最后這一條是專(zhuān)門(mén)針對(duì)那些悲情人物的。他們連小學(xué)的數(shù)學(xué)也沒(méi)學(xué)好。不要說(shuō)把上千個(gè)數(shù)加起來(lái),就是把兩個(gè)數(shù)加起來(lái),對(duì)他們來(lái)說(shuō)都是件很吃力的事。然而這一切絲毫沒(méi)有削弱他們對(duì)數(shù)學(xué)的一片癡情。他們?nèi)杖找挂古菰趫D書(shū)館里。他們翻閱了所有的數(shù)學(xué)文獻(xiàn),卻從未找到一本能讀懂的。但他們?nèi)詧?jiān)持不懈,為的就是找到一個(gè)適合自己的專(zhuān)業(yè)。他們的行為感動(dòng)了上帝。上世紀(jì)的某一天,上帝為他們創(chuàng)造了一臺(tái)機(jī)器幫他們計(jì)算,這就是計(jì)算機(jī)。借助計(jì)算機(jī),他們可以很快地進(jìn)行加減乘除的運(yùn)算。這就是計(jì)算數(shù)學(xué)。
張老師的文章轉(zhuǎn)述完畢,看來(lái)張老師也同意這樣一種觀點(diǎn):數(shù)學(xué)學(xué)不好的學(xué)統(tǒng)計(jì),統(tǒng)計(jì)學(xué)不好的才學(xué)計(jì)算機(jī),這句話多少有點(diǎn)道理。確實(shí),很多的計(jì)算機(jī)研究領(lǐng)域并不需要高深的、抽象的數(shù)學(xué)知識(shí)。但是大家千萬(wàn)不要以為學(xué)計(jì)算機(jī)就可以輕視或忽略數(shù)學(xué)。關(guān)于計(jì)算機(jī)和數(shù)學(xué)的關(guān)系,我只想說(shuō)兩點(diǎn)。第一點(diǎn),數(shù)學(xué)很有用。數(shù)學(xué)對(duì)我們理解和使用數(shù)據(jù)結(jié)構(gòu)和算法有很大的幫助。數(shù)學(xué)中,不僅數(shù)值分析、集合論、概率統(tǒng)計(jì)與分析這些課程可以直接應(yīng)用到計(jì)算機(jī)相關(guān)應(yīng)用中,同時(shí),堅(jiān)實(shí)的數(shù)學(xué)基礎(chǔ)會(huì)給日后從事研究性質(zhì)的工作帶來(lái)巨大的幫助。如果你的數(shù)學(xué)學(xué)得非常好,你不僅擁有數(shù)學(xué)的知識(shí),更重要的是擁有數(shù)學(xué)的思維,而數(shù)學(xué)的思維對(duì)從事計(jì)算機(jī)職業(yè)來(lái)說(shuō)至關(guān)重要。
第二點(diǎn),如果從應(yīng)用的角度來(lái)理解數(shù)學(xué),數(shù)學(xué)很簡(jiǎn)單。我們來(lái)舉個(gè)例子。由一個(gè)最簡(jiǎn)單的問(wèn)題談起,我們要鋪正多邊形地磚,能夠使得拼接處沒(méi)有縫隙,正幾邊形能夠滿足這個(gè)要求?這個(gè)問(wèn)題可以化解成另外一個(gè)問(wèn)題,正多邊形的一個(gè)內(nèi)角的整數(shù)倍等于360度。我們繼續(xù)推導(dǎo)這個(gè)問(wèn)題,正n 邊形總可以分割成n -2的三角形,所以正n邊形內(nèi)角和等于 (n-2)times {{180}^{circ }}。
這樣,正n邊形的每個(gè)內(nèi)角就是
假設(shè)正n邊形恰好需要m個(gè)圍繞在一起而沒(méi)有空隙,那么就可以得到
經(jīng)過(guò)簡(jiǎn)單地推導(dǎo),最后可以得到(m?2)(n?2)=4,其中m和n必須為正整數(shù),經(jīng)過(guò)簡(jiǎn)單的口算,你就可以得到n只能是3,4,6。與之對(duì)應(yīng)的是三角形,正方形,和正六邊形。正八邊形好像是滿足要求,但是如果你嘗試鋪一下,就會(huì)發(fā)現(xiàn)這是不行的。也就是說(shuō),能夠無(wú)縫隙的平鋪一塊地方的正多邊形中,最大的就是正六邊形。通常情況下,邊數(shù)越多,周長(zhǎng)相等的情況下所占面積就越大。所以……所以你想到了什么沒(méi)有?蜂巢!沒(méi)錯(cuò),就是蜂巢。聰明的蜜蜂早就知道了這一原理,把自己的巢建成正六邊形,如圖1-14所示;另外,我們的手機(jī)采用的都是蜂窩網(wǎng),這回你知道為什么了吧!怎么樣,數(shù)學(xué)真的不難,而且非常有用吧。
既然正六邊形有如此優(yōu)良的特性,為什么我們超市里面裝牛奶的盒子都是正方形,而不是正六邊形的呢?這是因?yàn)榕D桃话愣际欠诺截浖苌?#xff0c;正方形可以保證你能很方便地抽取出來(lái)啊!那為什么不設(shè)計(jì)成圓形呢?因?yàn)榕D瘫仨毿枰诺奖窭?#xff0c;正方形可以保證最大限度地利用冰柜的空間啊!那為什么可樂(lè)瓶子都是圓的啊?因?yàn)橐话憧蓸?lè)都是用手拿著喝的啊!那為什么……。好了,為了系統(tǒng)回答你的所有問(wèn)題,我需要引入一門(mén)新的課程,這門(mén)課程叫做《軟件工程》。他包含了商業(yè)、溝通、管理、市場(chǎng)、開(kāi)發(fā)等方方面面。一個(gè)軟件產(chǎn)品,技術(shù)很重要,但不是全部。這一點(diǎn),蘋(píng)果的喬布斯應(yīng)該深有體會(huì),下面我就叨咕叨咕軟件工程這個(gè)東西。
圖1-14 蜂巢
1.5.2 軟件工程
對(duì)于軟件工程,有一句表?yè)P(yáng)它的話,那就是:“懂得軟件工程的程序員就不再是妓女了!”這句話來(lái)源于程序員圈內(nèi)用于自嘲的一個(gè)類(lèi)比,那就是程序員和妓女都是吃青春飯的。不過(guò)說(shuō)句實(shí)話,我對(duì)表?yè)P(yáng)軟件工程的這句話理解的并不是很透徹。
話說(shuō)回來(lái),軟件工程這東西,真的很重要。如果有一個(gè)產(chǎn)業(yè),大家都很努力工作,但是結(jié)果卻會(huì)很差,那就是軟件這個(gè)行業(yè)了。開(kāi)發(fā)一個(gè)軟件包含很多步驟,從需求設(shè)計(jì)與分析、系統(tǒng)設(shè)計(jì),到軟件實(shí)現(xiàn)、軟件測(cè)試、部署和維護(hù),其中每一個(gè)步驟又涉及到很多人,從用戶(hù)到銷(xiāo)售,從經(jīng)理到程序員,從架構(gòu)師到測(cè)試人員等。一個(gè)常見(jiàn)的情況就是程序員不了解用戶(hù),用戶(hù)也不了解程序員;大部分時(shí)候,用戶(hù)也不了解自己。這就造成了如圖1-15所示的一個(gè)項(xiàng)目悲催的一生。
圖1-15 一個(gè)軟件項(xiàng)目悲催的一生
說(shuō)到軟件工程,不能不提到CMM(軟件能力成熟度模型),這個(gè)是軟件工程和軟件管理的一個(gè)比較主流的模型。我曾經(jīng)聽(tīng)過(guò)一個(gè)故事,國(guó)內(nèi)的一個(gè)企業(yè)曾經(jīng)派一些資深的員工去印度一家公司學(xué)習(xí)CMM模型。學(xué)習(xí)一年回國(guó)以后,中國(guó)員工并沒(méi)有學(xué)會(huì)CMM,但是印度那家公司從此卻不用CMM,改用中國(guó)模式了!后來(lái)這個(gè)公司改變了戰(zhàn)略,第二次派了一批剛從學(xué)校畢業(yè)的學(xué)生去學(xué)習(xí),終于取得真經(jīng),修成正果。從這個(gè)故事中,大家得到了什么結(jié)論呢?
還有一個(gè)真實(shí)的案例那就是微軟公司,它開(kāi)發(fā)軟件的時(shí)候不用CMM進(jìn)行管理,而是使用開(kāi)發(fā)、測(cè)試、項(xiàng)目經(jīng)理三個(gè)團(tuán)隊(duì)互相配合的方式來(lái)進(jìn)行管理。
看來(lái)CMM這個(gè)東西也并不是傳說(shuō)中的那么神。就像炒菜一樣,只要好吃就行,沒(méi)必要偏得按照菜譜來(lái)。關(guān)于軟件工程,我基本上不懂,所以也只給大家介紹這么多了。
我個(gè)人的一個(gè)感覺(jué)就是,軟件工程這個(gè)東西很賺錢(qián),而且無(wú)論是從課本上,還是從課堂上,你都學(xué)不來(lái)。
總結(jié)
以上是生活随笔為你收集整理的《C语言点滴》一1.5 内功修炼的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《Arduino计算机视觉编程》一3.3
- 下一篇: 腾讯Android自动化测试实战3.1.