最近更新: 2007-05-29

計算的形式真是多樣化

昨天我還在跟人討論「寫程式需不需要懂數學」。我主張數學家和程序員同樣運用邏輯與代數概念進行思考。差別在於數學家用數學式記述思考過程,程序員用程式語言記述思考過程。僅此而已。不過我發現在討論這問題時,就連我自己也陷入數學指的是某一種記述形式的框框。這只能怪國內的記憶式數學教育方式太成功,以致於我們都默認數學的記述形式只有固定一種了。

為什麼我會發覺自己陷入形式的框框呢?這是因為我偶然看到一段影片展示了圖形式乘法(Easy Graphical Multiplication Trick)。它會呈現的形式,比電腦程式更不像我們這些人所認定的數學形式。但是他們說這是「建構式數學」。他們沒有因為這種形式不夠「優雅」,就說這麼做的人不懂數學。同理,我們又為何要喋喋不休地討論是否一定要用我們所習慣的數學形式思考與記述才能寫出效率高的程式?

樂多舊網址: http://blog.roodo.com/rocksaying/archives/3366505.html

樂多舊回應
未留名 (#comment-20383973)
Tue, 09 Feb 2010 09:47:37 +0800
最早的programming language為FORTRAN (Fomula Translation), 只是為了在scientific computing中加速數學的運算。到1960年左右的ALGO (Algorithm),加入了流程控制得以實現演算方法.

至於數學跟程式語言的關係,可以拿中國的九章中的雞兔同籠跟國高中課本中的題目來比,現在的人應該認為後者的思考過程較簡單,雖然是同樣的命題。
同樣地,程式的開發過程中,有些部份是要用數學來推導較方便, 有些部份則是用programming language中的flow control來思考較直覺。就好像要用C來推三角函數的題型,還不如用數學符號來的方便吧?當然可以說用Matlab也一樣,但是Matlab提供的函式也是從數學借來的。

至於圖形式乘法,會覺得它呈現的形式比電腦程式更不像我們這些人所認定的數學形式,是因為我們早就將programming language改成human readable, 所以才會覺得優雅。在你的program叫實際的硬體(CPU or ASIC)運算時,他們有可能也是這樣算的,因為它們的世界中,這樣的作法才是elgant... (maybe for power, area, timing, etc).

不同的Model, 提供不同的思維。 這是我的補充。