為了成為優秀的程式設計師,我需要擅長數學嗎?

發表於2015-06-28

今天有很多年輕人或經驗不足的程式設計師在論壇發帖、在 Stack Exchange 網站問:「為了成為優秀的程式設計師,我需要擅長數學嗎?」,在我還年輕的時候,我也問自己同樣的問題。最近,我醉醺醺地、也是出於無聊,竟然 Google 了同樣問題,差不多有 10 多年沒有思考過這個問題了。在我瀏覽相關話題時,出現的答案模式被歸結為以下三個主要類別:

  • 需要
  • 不需要
  • 看情況

貌似「需要」和「不需要」經常帶有個人主觀偏見,反而顯得有點兒草率的反應綜合徵。因此我把精力更多地放在「看情況」的選項上,以確保「需要」被證明為一種更加普通的觀點。我決定就這個問題寫點兒東西,考慮到這一點,我的醉醺醺的念頭開始興奮起來,這將促使我不會再忽視它。為了成為一名優秀的程式設計師,一個人是否需要擅長數學的問題,可以從哲學和技術兩個方面解答。我打算堅持哲學層面。意識到它為什麼對我重要,是因為一個更年輕的我,為了找到基於不成熟和懶惰而萌生的「不需要」選項,將要投入更多的時間。

首先,我們必須嘗試建立擅長數學的資格。一個人可以在既定數學原理或建模方程上,明白全域性概念以適應情況,而另外一個人或許在數學的分析部分,比如長於計算、以及操作表示式和方程。在我看來,這兩種情況下,二者的平均數學能力都不錯。然而,在上面提到的兩個特徵上有著高度競爭力的一個人,可能成為被視作「擅長」數學的最佳候選人(記得把鳳毛麟角的約翰·馮·諾伊曼歸入精通數學的類別)。就我目前在大學數學課上觀察到的,那些真正擅長數學的人們不屬於大多數。這使得答案更加複雜,「看情況」選項的有效性得到了增強。

在「Hello World」和 C++ 的名字到處亂放、而不明白其所以然時,成為一名程式設計師的階段通常從掌握基礎的教程開始,例子通常包含了數學。設想一下,打算程式設計的某個人,將很可能自然而然地深究問題,開始懷疑數學在程式設計中能否發揮切實作用。

坐下來為了程式設計而程式設計,除了學習既定程式語言的語法和機制,不會摻雜太多目的。最終,程式設計是要解決問題,並在數字王國裡創新。通過為計算機程式設計,你想解決或創新什麼?如果你想編寫網頁或自動化任務的指令碼,數學不會起到較大作用。然而,如果你對圖形程式設計、開發業務和科學方面的應用有興趣,那麼數學在開發週期裡將發揮很大作用。

一旦你在特定領域有了客觀目標,問題就更多地變成了學習與該領域相關的數學。有了必需的數學,以及數學思維的強大基礎,就可以產出偉大的軟體。因此它真正取決於你想用程式設計完成什麼任務。不管怎樣,上面的說法不是要否定學習數學。在學習程式設計中,我已經注意到了一個地方,問自己是否應該學習新東西,是極端錯誤的。因為軟體開發根植於新技術的持續學習。

一個人為了成為優秀的程式設計師是否需要擅長數學,對於這個問題,我們現在考慮它的一個選項「需要」。對於不擅長的人而言,我建議他們看看數字計算機的歷史、以及那些推動機器革命的幕後人。數字計算和程式設計根植於數學。學習數學有助於提高問題解決的技巧和分析思維。是的,如果你想解決需要數學的、各種領域的複雜問題,那麼擅長數學對於優秀程式設計師而言,是不可或缺的。我儘量從不設限,當困難出現時,就勇往直前吧。

相關文章