為了成為優秀的程序員,我需要擅長數學嗎?

>>>  創業先鋒 眾人拾柴火焰高  >>> 簡體     傳統

本文是翻譯,版權歸原作者所有

原文:Do I Have To Be ‘Good’ At Math To Be A ‘Good’ Programmer?

作者(author):Nicholas Fazzolari

翻譯:臘八粥


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


  • 需要

  • 不需要

  • 看情況


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


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


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


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


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


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


CocoaChina 2015-08-23 08:56:42

[新一篇] 非死即生?剖析五年游戲大作的常青秘訣

[舊一篇] 吸引眼球的游戲ICON是如何設計的?
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表