數學特別差能學編程嗎?

陌小亮


如果這個問題放到十幾二十年前,答案是數學不好,真的不適合編程。但是現在時代變了,數學不好,照樣能把程序寫得很好,還可以以此為職業謀生。

很多年前,有一句很著名的話,叫做“程序就等於數據結構加算法”。不論是數據結構還是算法,都要涉及較強的邏輯思維和數學功底。那時候寫程序主要是面向過程的編程語言,以C語言為典型,確實對數學要求高。真的就是數據結構加算法。排序、查找這些基本問題都要費很大勁去實現。動不動就是鏈表、隊列、堆棧、二叉樹等等。聽著都頭疼!不會這些東西,都不敢說自己會編程。在遊戲的世界,對數學的要求更高,什麼座標變換、矩陣運算、插值、尋路等等都是必須要學的。

這是以前。現在不同了,面向對象佔據了主流,不再過分強調數據結構。現在編程的分工更細,各類類庫和框架層出不窮,不再像以前,排個序還得自己寫。現在基本的算法都有現成的庫,甚至就是標準庫(程序語言自帶)。現在多數人碼代碼,還很少聽說什麼鏈表、二叉樹之類的東西了。因為都用現成的庫了。也有把複雜數學問題交給數據庫的。數據庫集成了很多算法,比如B+樹,那麼這些複雜算法就再也不用去自己寫了,會數據庫查詢語言(比如SQL)即可。普通人自己寫,其效率也很難高過專業數據庫。而以前那個年代不同,什麼都要自己從輪子開始造,所以對數學要求不是一般的高。

剛提到的遊戲編程,也同樣如此,因為有了越來越成熟的遊戲引擎,它把複雜的數學運算,包括物理引擎都集成進去了,程序員重點關注業務邏輯和美工。若先提前準備好3D模型(美工乾的活),做一個簡單的3D漫遊也就十分鐘的事。而在以前,其難度不可想象。

以前處理一些內存數據得考慮如何安排內存,如何解決線程安全問題,現在乾脆直接放到內存數據庫(比如redis)拉倒。一切複雜的進程間通信、線程安全、分佈式、負載均衡都不再費勁考慮。

所以說,很多人認為數學不好就不能編程,那是因為過去確實這樣,因為慣性,這個想法就會影響到現在。事實上,今天,普通程序員對數學的要求已經大大降低了。

不過,數學對編程的重要性仍然有,而且在很多領域還非常高。剛不是提到了類庫、框架、遊戲引擎、數據庫嗎?這些東西總得有人寫吧,那對數學的要求不是一般的高。還有大數據、機器學習、圖像處理、密碼學、視頻編碼解碼,其底層部分沒有堅實的數學基礎幾乎寸步難行。

這和前面的觀點不衝突,因為社會分工越來越細了,有需要數學的編程,有不需要數學的編程,大家分工協作。這和過去不同,過去編程更加喜歡從輪子造起,而且一個人把所有程序全寫完,類似於小作坊。現在IT技術進步了,更多的是由小作坊變成了“手工工場”和“機器大工業”。

數學不好的人可以編程,只不過能從事的領域比較受限,要刻意迴避需要數學的編程技術(比如驅動開發、機器學習、數據庫引擎開發)。這就好比大家都說英語更要。萬一英語不好,那不要出國,不要進外企,不要搞高端技術不就好了嘛,大不了自己開個火鍋店(不要在老外多的地方開)。


犍為真人


可以,數學差可能在算法和核心代碼的驅動下不容易勝任,但是在業務代碼上還是可以勝任的,比如asp.net mvc,就是一些數據庫的sql語言操作,只要稍微瞭解就可以完成任務了,然後再加上界面等設計,你可以看看visual studio的官網,下載免費版的編譯器,工欲善其事,必先利其器,希望你進入編程世界


分享到:


相關文章: