當前位置: 華文問答 > 數位

作為程式設計師,你在編程時吃了哪些數學的虧?

2015-02-09數位

因為不懂數學蠢事兒沒少幹啊,說幾件刻骨銘心的!

1. 用正規表式驗證 XML 檔: 經常用正規表式驗證字串格式,遇到 XML 自然也是照方抓藥(由於年少無知,不知道有 DTD 這類東西),可是正則表達無論怎麽寫都會出現合法的 XML 無法透過驗證的情況。 理解了自動機理論和形式語言後才知道這樣的正規表式是寫不出來的!!! ,後來面試程式設計師的時候凡是簡歷寫著「精通正規表式」的人我就會問這個問題^_^

2. 不懂線性代數就開發 3D 套用: 第一次接觸 3D 圖形開發,需求很簡單,使用者開啟一 3D 模型,然後用滑鼠可以拖動旋轉。先看 Direct3D 文件,矩陣?還相乘?好像上學學過,座標怎麽都是四維的?完全不懂,最後用官方範例連改帶猜勉強過關。看書惡補知識, 最後理解了線性空間、仿射空間才理解了 3D 圖形的原理。附帶著把傅立葉變換一類的東西也理解了,都是線上性空間裏折騰嘛。

3. 亂用操作符多載: 折騰 3D 圖形開發的時候見到有人在 C++ 裏用操作符多載計算矩陣、向量,覺得很高大上,原來一大堆程式碼現在變成了一個數學運算式。自己也照葫蘆畫瓢,結果是一大堆程式碼變成了一大堆難以理解的程式碼。 現在知道了代數結構的概念,想想當時操作符多載不考慮公理和定律是多麼蠢的一件事 。下圖來自 Apple WWDC 的軟體開發課程,我當年就是這樣幹的-_-!

順便說,我不認同「上學學好數學會對以後編程有幫助」這樣的觀點,因為沒有被問題折磨過,直接去學解決問題的方法是不會有久旱逢甘霖的感覺的。