都說計算機和數學關系緊密?
可以這樣說:學習計算機科學與技術專業、并掌握較好的軟件開發技能,并不要求數學知識非常豐富和堅深,但一定需要非常好的邏輯思維能力。請注意我所說的是這一專業,而非諸如計算機類里面的數據科學與大數據技術、智能科學與技術這些專業。
計科專業,實際上是圍繞著軟件研發技術這一領域,對計算機系統從電路、硬件、基礎軟件、軟件研發技術、算法的一個全覆蓋。其中的算法,是圍繞著數據結構而非諸如機器學習一類的算法。
作為一門工科專業,其要求側重于掌握技術、用技術開發系統,而非該技術的原理是什么。
那么,這些技術體系的基礎是什么呢?都是數學。比如,整個當前計算機系統的抽象模型是自動機理論、數理邏輯是數字電路的基礎之一、數據結構中的圖/樹等結構基于圖論等、編譯原理基于邏輯學和抽象代數等,甚至關系型數據庫也是基于集合論的。
上述數學知識點,在計科專業里有一門課程《離散數學》與之對應。而《離散數學》包含的知識點的基礎又是高數、線代、概率論。
所以,假設就是想掌握軟件開發技能,可以拋開這些數學基礎。甚至比如學數據結構,懂得如何構建一個“圖”的數據結構,不懂圖論也可以做到。這個過程,等同于“知其然”,至少能夠應付絕大多數的軟件開發任務。
但假設面臨一個沒有現成解決方案的問題,那么是否具備一定的數學知識就會表現出差異來?;蛘撸僭O是做計算機領域的科研(注意是科研、不是橫向項目!),比如可信計算等等,假設沒有扎實的數學基礎是沒辦法進行下去的。
最后還有一點:邏輯思維能力從哪里來?實際上學習數學,很大程度上是在鍛煉人的邏輯思維能力。
總結下吧:
1、假設就是想掌握軟件開發技能、找到一份不錯的工作、應付絕大多數的開發任務,不需要非常堅深的數學知識,但一定要具備很好的邏輯思維能力;
2、假設期望能夠有所創新、或者搞科研,那么繞不開數學;
3、學習數學是鍛煉軟件開發所需的邏輯思維能力的一種很好的手段。
最后,為避免爭議,再強調一次:上述均只針對計算機科學與技術這一專業,不包括數據科學、智能科學這類專業中的算法學習。對于這些算法,可以說數學就是核心。