標籤:

數學不好的人適合學編程

說起數學,說多了都是淚。從小到大,數學都差。混到高中,還是漏中。高二時,聽數學老師說,學習計算機,數學很重要。我很是激動。雖然我想學好,但是不知道為什麼總是學不好。最後陰差陽錯,竟然上大學不是計算機專業(cnitedu.cn)。不說那麼多,說多了都是淚呀。淚崩了我。哈哈哈哈。

本科確實沒有上計算機,本科農學,學習農業各種技術,對於數學,要求不高,學了點學校自編的所謂的高數。然後學了統計學,學的很渣。似乎我覺得我數學就是沒有天賦,學不好吧。看到那些數學公式什麼的,恐數症啊我!實在是對計算機有興趣,後來還是慢慢不知不覺的就開始自學計算機了。後來還決定跨考計算機的研究生了。可能是導演不讓我的人生那麼順利吧,哈哈哈,沒考上。其實也是很自然的。時間不夠是主要一方面,難度確實很大,科目又多,儘管我花了很多力氣,還差很多。其中,最為刻骨銘心的是數學。因為農學沒有真正學過完整的高數。而全國計算機統考是要考數學A的。那麼我就得從頭到尾自學一遍。

看到前面的鋪墊,嘿嘿,到現在這裡,數學如何學,你猜得到嗎?因為課程多,時間緊,也就沒有時間去跟其他專業上課,太慢了。所以,這是一個問題,必須解決。怎麼辦?沒辦法,涼拌。那就全部自學咯。我不知道我哪來的勇氣,竟敢直接自學高數A!!甚至完全自學計算機!!不管怎麼樣,或許就是那一份天真和堅持吧,最大的動力就是興趣。有了計算機的興趣,我對數學一忍再忍,學的咬牙切齒,至今都歷歷在目。

我知道剛開始學數學,很多名詞都不懂,所以,我就先學一遍,熟悉所有名詞和基本概念。你也想得到,學了後面忘了前面,那是再平常不過的事了。本來數學就差了。我不是天才,我只是一份無畏的天真,就這樣,花了一段時間學了一遍。就看教科書,熟悉了一遍。而學習的地點就是圖書館,時間就是每天晚上。我可以把這段時間成為魔鬼時間。每次去圖書館時,都感覺一種強烈的恐懼和痛苦。但是我還是必須去學,不學,那麼就沒有希望,也沒有資格跟自己憧憬未來。所以,還是堅持學了。所幸,堅持下來了,學了一遍,總算是熟悉了,可是這才是剛剛開始。這個時候,很多機械專業等同學,也是在複習,而我才是學習一遍完畢而已,而他們已經複習一到兩遍了。我的天,我才剛剛自學完畢。效果,那不用說。我又不是天才,能怎麼樣,只能說我見過數學A的市面了。壓力山大山大的。後來也就開始做題,那一本複習資料做題,做到後面忘了前面,我也是沒有辦法,只能儘快多學點。這樣也就過完了一遍。最後就是做題,買了真題試卷,結果發現很多都不會做,動不了手。也就只有再複習複習。就這樣,稀里糊塗的又買了一本資料,比較薄的,練習做題。很行,有些題目還是能做了。

到考試結果出來時,考了75分的樣子,剛好及格的樣子。這樣也是對我學習數學的一個肯定吧。雖然不高,也算是沒有墊底,也是對我完全自學高數的一個肯定吧。有這個成績,對我來說,已經知足了。

而後來,我也總結出了為什麼我數學學不好了。一是記憶力不好,試卷有很多差不多的題目,可是不會做,雖然做過,但是記不住。如果你說不需要記住,那麼此時就是第二個,我的數學思維太差,運算能力太差了。這個是我自學計算機的過程中大量的思考總結出來的。我不能不說,這個是應試教育的失敗,成天就知道考試,而思維,沒有得到開發,因此,思維就很死,沒有創新,沒有真正的思維,而只有機械的套公式做題,就算有那麼點數學思維,也只是一些人對數學比較有天分。但是,我覺得這些都是可以培養出來的。只是老師都沒有培養罷了。

然而,計算機我也是完全自學的,然而,效果還不錯。考出的成績,和一般的計算機專業的學生差不多,只是我的其他各個科目沒有突出的,導致都是偏低。這個我們就不用關注了。寫這麼多,只是想告訴你,我數學很差,但是我計算機學的還是可以的。不敢說是大神,但是不也是爛尾貨。而在自學計算機的過程中,完全獨立自主,也讓我學到了老師沒法教的對於我一輩子都很有用的東西--學會了思考。

而在後面學習編程時,大量發揮了思考優勢,學習也會快多了且深入很多。當然,還不夠,我還要繼續完善。然而,在編程學習中和使用中,不是大量的使用數學做什麼。很重要的一點就是思維。我一個人開發過一些小軟體,沒有其他人的參與,各種功能也是實現了。不管是不是山寨的做法,但是至少都能夠完整的實現。這裡並沒有用什麼高深的技術,很多時候就是一種思維流程。

而編程也是分很多層次的。當然也有完全用數學編程的。像各種數學分析、搜索引擎、科學計算等都是純數學思維計算的,像這種層次的,我今生無緣研究了。因為我的數學,淚呀。

不過不用沮喪,我們開發軟體,並不是都是做這些數學計算的。雖然會用到數學計算,但是根本就不用我們去寫這些演算法。各個大神寫好了庫,供我們使用,這樣我們就可以實現很多牛叉的功能,但是我們卻不需要懂這些演算法如何實現的。

普通的編程,基本都是使用這個庫使用那個庫或者這個框架那個框架的。我們需要學的,就是懂計算機就行了。怎麼說呢?學習計算機相當於是文科,或者是半文半理的。各種書中,大量的不是講如何計算一個東西,而是講計算機如何運作,比如計算機組成原理,以及人們如何去實現人容易理解的東西,又可以讓計算機好實現的,比如數據結構。而編程方面,也是講,如何與計算機交流,比如寫代碼。所以,計算機算是一個「機文」學科,而不是人文學科,更不是數學類學科。而在計算機這個領域裡,所有的演算法,多數是基於生活的基於非數學的演算法,比如進程調度磁碟調度等等。學了這些後,你會發現,你可以更好的理解生活,而不是遠離生活,而數學剛好相反,數學把世界抽象化了,抽象成了一個公式,我們無論如何也不能接受生活就是一個公式,對吧。

與計算機打交道,其實就需要懂計算機。平常我們使用計算機時,點點滑鼠,就是打交道了。不過這個是很表面的,這樣根本就不算懂計算機。而真正懂計算機,應該是學了編程之後,才能真正了解計算機。編寫代碼就是與計算機交流很接近的層次了,最為接近的就是寫機器代碼了,不過,現在應該會寫的不多了吧,或者根本就沒有了。

編程里的各種語法,通過編譯器解釋,最終轉化為計算機能懂的語言,我們就實現了與計算機對話。就好比我們請一個翻譯,與國外人交流一樣。要想交流的很好,你就要懂他的世界文化。所以,你要懂計算機組成原理、要懂得電子電路,要懂得操作系統,如果這些都不懂,連進程線程都不知道,你敢說你懂么?這些是很基礎的技術,同時也是所有計算機都有的特點,所以,不管是什麼計算機,現今的計算機都具備這些特點。而我們要學這些東西,都不是數學,甚至與數學扯不上關係,雖然是有數學在服務於計算機,但不等於,數學不好就學不好計算機的說法。

而聽到很多人說,數學很牛叉的人,計算機一定會學的很牛叉。我看不見得。計算機不等於數學。只不過,數學好的人,對於理解各種演算法會快一些,僅此而已。而計算數學不好,這些演算法也是可以容易理解的,關鍵是看時間花的夠不夠,基礎扎不紮實。

對於平常的開發來說,會使用庫,理解庫的整個機制,用不上什麼演算法,都是一些邏輯思維流程。我們平時自己寫的小演算法,其實也是平時寫多了,想多了,就有了積累,以後再需要的時候,也就是溫故知新罷了。而學習計算機恰好可以鍛煉你的思維,計算機里集合了大量的大師的思維,簡直就是人類智慧的寶庫,只要你有興趣學,堅持學,你也會有所成就,而如果只是為了找份工作,那就是另當別論了。不過也就是學學一些框架和庫的使用罷了。而真正要學好,還是要提高自己的思維,吸收能吸收的任何思維優點,為我所用!這就是所謂的站在巨人的肩膀上面,而不是使用巨人寫出的東西你拿來用。最有用的是那一套思想,這才是最有價值的,只有站在巨人思想的巔峰,你才會是另一個巨人,當然,不是巨人怪,哈哈哈。

當然,我也只不過是很普通的人,只是因為我的一段寶貴的經歷,讓我學到了很多東西,在這裡將這些經驗分享給你,並不是什麼了不起的,只是想給你一份啟發罷了。同時也是給你一份鼓勵,看到我那麼渣的數學,依然時堅持在軟體開發行業活了兩年之久,還會更長,學習計算機的基礎也比較紮實,我想你也不會再為數學不好而疑惑重重吧,至少你數學還比我強哦。

加油吧,我只能說到這了。剩下的路,靠你自己堅持和奮鬥。不過,我一直在這裡,為你打氣,因為我還在不停的努力,力求有所成就!共勉吧,同志!

推薦閱讀:

[數據結構]表達式樹——手動eval()
Matplotlib中控制子圖的間距
C++中關於跨平台中子線程式控制制的一些心得(2):用於線程的同步的Async容器
偽·從零開始學Python - 2.1 面向過程的程序設計簡述
JS中的閉包為何會產生副作用,即閉包只能取得包含函數中任何變數的最後一個值?

TAG:編程 |