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