這些創(chuàng)新與計算機編程的關(guān)系是什么?考慮一下Eric Raymond對黑客這個詞的定義别厘,也是任何有理想有抱負黑客的愿景:通過追求極致完美虱饿,也許是非常耗時的工作,產(chǎn)生真正的產(chǎn)品。那在這個意義上氮发,應用數(shù)學家已經(jīng)是一百多年的工業(yè)黑客了渴肉。
畢竟,計算機的發(fā)明是為了解決數(shù)學問題爽冕,而不是為了實現(xiàn)編譯器或文字處理器仇祭。計算機輔助解決社會問題--在工程、采礦颈畸、農(nóng)業(yè)乌奇、運輸和國防方面--在過去七十年里為社會提供了巨大的價值。我敢猜測有幾十萬億美元眯娱,如果你把打敗德國算在計算機輔助密碼分析的成就中礁苗,把日本投降算在數(shù)值計算的成就中,那么其價值是不可估量的徙缴。
然而寂屏,這些類型的數(shù)學 "黑客 "卻很少被我們偉大的黑客文章作者提及。我認為原因是 "黑客文學 "往往是由Lisp程序員主導的娜搂,而Lisp程序員往往對應用數(shù)學一竅不通迁霎。雖然我很感激我們有這么多Lisp程序員寫得很好的文章,但我認為他們往往對計算機編程是什么和應該是什么描繪得很是有歪曲的百宇。讀Raymond考廉、Graham和Yegge(都是自稱Lisp黑客的人)的文章,人們會有這樣的印象:編程的最終目的是使一個程序比之前的任何程序都更強大携御,通常是通過增加抽象層昌粤。這被稱為 "Lisp編程學派"。
還有一個學派啄刹,多年來在文章中沒有得到很好的體現(xiàn)涮坐,但它無疑對經(jīng)濟產(chǎn)生了更大的積極影響。我認為Dr. Adam Rosenberg對這一學派做了很好的總結(jié)誓军,他自稱是工業(yè)數(shù)學最后的幸存者袱讹。Fortran學派的程序員并不把數(shù)學看作是給極其專業(yè)計算機應用的高級工具,而是把計算機看作是做數(shù)學的高級工具昵时。從歷史上看捷雕,F(xiàn)ortran學校的程序員往往在工業(yè)界或政府中更有技術(shù)傾向的部門(NASA、國防部等)工作救巷。他們經(jīng)常被Lisp程序員嘲笑,因為他們對遞歸一無所知句柠。(關(guān)于一篇諷刺文章浦译,請看《真正的程序員不使用PASCAL》棒假;如果你認為這種諷刺不公平,請看《Dr. Rosenberg’s Style Guide》)精盅。
我認為淆衷,這種嘲諷應該是反過來的。與Fortran傳統(tǒng)(它不僅 "把人送上月球"渤弛,并在銀行、通信等領(lǐng)域?qū)嵤╆P(guān)鍵的基礎(chǔ)設(shè)施起到關(guān)鍵作用)相比甚带,Lisp的文化幾乎是故意無視數(shù)學的她肯。這種無知被所有關(guān)于形式主義的討論和對Lambda算式的敬禮所掩蓋,Lambda算式與《神學概要》一樣鹰贵,是一個封閉的計算宇宙晴氨,對觀察到的世界沒有什么啟示。
為了理解Lisp文化是如何積極地延續(xù)對數(shù)學的無知碉输,請考慮任何函數(shù)式編程文本中對遞歸的傳統(tǒng)介紹籽前。它有幾個變體:計算斐波那契數(shù),或計算階乘敷钾。
通常教科書上的解決方案是遞歸的:首先計算感興趣的數(shù)字枝哄,然后計算之前的數(shù)字,再計算之前的數(shù)字阻荒,以此類推挠锥,直到達到 "基本情況",有一個確定的解決方案侨赡。這是一個經(jīng)典的說教式編程例子蓖租,展示了遞歸方法的所謂效用。
"高級 "討論可能會考慮工程方面的因素羊壹,如尾部調(diào)用行為蓖宦,或?qū)Y(jié)果進行記憶的可能性。
但在這些討論中油猫,你很少能找到相關(guān)的數(shù)學考慮稠茂。如果目標是計算斐波那契數(shù)或階乘,適當?shù)慕鉀Q方案不是遞歸函數(shù)情妖,而是數(shù)學知識主慰。
一個斐波那契數(shù)計算的C語言實現(xiàn):
long int fib(unsigned long int n) {
return lround((pow(0.5 + 0.5 * sqrt(5.0), n)-
pow(0.5 - 0.5 * sqrt(5.0), n)) /
sqrt(5.0))。
}
不需要遞歸(或循環(huán))鲫售,因為從17世紀起就有了分析性的解決方案共螺。同樣,如果有必要計算階乘情竹,應該教會程序員利用系統(tǒng)的log-gamma函數(shù)藐不,就像下面的C代碼那樣。
long int fac(unsigned long int n) {
return round(exp(lgamma(n+1))。
}
同樣雏蛮,只要知道階乘實際上是伽馬函數(shù)(歐拉第二積分)的一個特例涎嚼,就不需要遞歸了。(對數(shù)伽馬的實現(xiàn)通常是一個多項式近似挑秉,需要恒定的時間來評估)法梯。
日更130天 - (翻譯)The Mathematical Hacker(上
日更129天 - (翻譯) C語言學習中的數(shù)學知識簡要說明
日更128天 - (翻譯) 編程是否需要數(shù)學(下)
日更127天 - (翻譯) 編程是否需要數(shù)學 (上)
日更126天 - 知識付費是士力架還是人參果
日更125天 - 整理下自己的手機,別讓它碎片化了我們的生活
日更124天 - 打造自己小環(huán)境
日更123天 - 杠桿
日更122天 - 收入的四個象限
日更121天 - 時光穿梭犀概,回顧和展望
前日更120天索引