數學對 Programming 的重要性
數學為科學之母,當然電腦科學更是依賴數學的基礎,以前的 Programming 可都是對當時的技術領域都有充分的認知,要自己設計 logic gates、自己 layout、自己寫 monitor、kernel、driver,自己開發應用程式,以前 Bell Lab 有一群這樣的高手 (不然 UNIX 是怎麼來的?),不過隨著 Programming 的複雜度日增與軟硬體的分工趨近成熟,現在很多 Programming 還真的是 for Dummies 的,好像什麼學問都不必碰,然後就可以組合積木一樣 (我沒有說這樣不好)。
在我從事目前的工作以前,也是抱持類似的想法。以前我遇過最需要數學基礎的項目,大概就是電腦圖學,以及花好幾周 trace JPEG codec 的過程,除此之外,的確只需要中學數學就可作多數的 Programming。現在很多軟體元件都是黑盒子,尤其像是 codec 一類的,幾乎都是特定組織與廠商維護,作為系統整合,只要會呼叫 API 即可,然後產品一個接著一個問世,比方說多媒體手機、VoIP phone、Set-Top Box 等等,不過,如果真的去探討系統效能或潛在的缺陷時,這些黑盒子很多時候是問題所在,但問題不在於 vendor 本身,甚至也不在 solution 中,相反地,就是一味認為這些是黑盒子,在沒有理解其運作原理與設計上的限制前提下,徒然重組並整合,就釀成潛在的問題。
該怎麼解決?首先當然是弄懂這些黑盒子,雖然不需要從零到有去實做,但是至少要懂這些原理,感謝我現在的老闆給我這個機會,可以仔細檢視 video / audio / speech coding 的數學原理與規範,並且著手針對硬體平台作最佳化。有一段時間,沒有讀過工程數學的我,被迫演繹一個又一個的數學式,整天抱著離散時間系統一類的書籍苦 k (其實昨天寫 blog [
技術本身與道德無關;它沒有是非對錯] 時,我還是在算數學),但最後還是達到階段性的目標,記得有廠商聽到我們在一樣的硬體平台上,video frame 與 QC 就是大幅超越他們的實測值而驚訝不已,讓我掩不住嘴角的微笑,其實我沒有作什麼卓越的改良,我只是發揮演算法的特性並作調整罷了,因為我懂那些原理。
對岸的孟岩寫了兩篇以數學教育為主軸的文章,很值得一讀:
我知道工程數學很重要,但是為何我以前大學念到三年級,還是沒有認真去念,以至於工作一段時間,才因為需要去作深入的效能最佳化,陸續接觸呢?其實我有修過工程數學,而且有 pass,但是我根本就無法回憶,因為當時只是考前一晚,用力背公式與題型,就去應試了,如今,回想自己在短暫大學生涯的無知,以及離開學校沒有再作加強的遺憾,孟岩的這席話讓我很有感覺:
我們不否認有一些天生的數學人才,能夠遨遊於大段的、完全抽象的數學論述之中而氣不長出,面不改色,但是對於更多的人來說,完全脫離開現實世界經驗去直接把握現代數學知識,至少是並不容易。然而這並不意味著這些「普通」人不能夠掌握數學,不能夠用好數學——他們僅僅是需要更符合他們認知習慣的、從具體到抽象的、循序漸進的、「正常」的引導方式。一般由職業數學家寫成的數學教材,往往以一種自我陶醉的方式天馬行空,普通讀者很難跟得上,從而也就很難學的懂。本來可以掌握數學的很多人,就這樣被吞噬了。而當這種高高在上的純數學的著作方式遭到質疑時,數學家們卻又總是忙不迭地聲明數學的獨立性、抽象性與高高在上的地位,以為辯護,似乎這種拒人於千里之外的風格是為了維護數學之神聖地位的必須。我們設想,若格鬥家傳授格鬥術時,不以教授學生為中心,而以格鬥之真實為理由對學生飽以老拳,則即使那學生是數學天才,也必定會在鼻青臉腫之下感到憤懣。而很多數學天才們編寫教材時卻拒絕以讀者為中心,拒絕了教育讀者的義務,並以這種拒絕為榮耀,豈非咄咄怪事?須知,數學或許是宇宙間唯一神聖的,但對於教材作者來說,讀者的利益至少也是同等神聖的。
屈指算算,自己在 IT 產業翻滾也有段時間了,有時候也會脫口說:「六年前我在設計 xxx 的時候就遇到這種問題...」一類倚老賣老的話,但是,我真的懂了嗎?不,一無所知,而我也到最近,才知道工程數學可以解決這麼多問題,微分方程與 Euler expansion formula 是如此的美妙,許多電子工業的原理就是從這些定理與方法輾轉並建構的。正所謂「少壯不努力,老大徒傷悲」,年華已逝的我,只能在孤寂的夜晚,努力地研讀這些 textbook,不過,如果當時我在修工程數學的時候,就能知道這一系列看似抽象、看似數學的「遊戲」,以及笨重難懂的 formula,其實是這麼地貼近我們,並賦予 IT 產業無限的價值,我想,今天我不至於如此哀怨。
無論如何,面對浩瀚的知識與無窮的學問,我終於學會了謙卑,並真誠地尋求與真理的共鳴:數學對 Programming 的重要性實在難以言喻,並且,數學也真的給予我們強大的力量。
由 jserv 發表於 February 26, 2006 09:37 PM