MIT教授John McCarthy於1958年設計出Lisp語言,Lisp實踐了Lambda Calculus,使得Lambda Calculus可以在von Neumann電腦上執行。之後,MIT的人工智慧實驗室在1973年開發出Lisp machine硬體,等於是將Lambda Calculus的機器實踐出來了! 長期以來,函數編程欠缺主流語言的支援,只能偏安一隅,藏身在學術界。而學術界,喔!這你也是知道的,總是有辦法把簡單的東西,講解得相當精確(而抽象),讓人敬畏(而摸不著邊際)。欠缺書籍文章淺顯正確的介紹,導致函數編程依然躲在象牙塔中,無法走入主流商業軟體的世界。
然而,真正讓FP無法被接受的原因可能是「執行效率」。傳統上,函數式編程語言的效率確實比命令式(Imperative)編程語言來得差,這在商業系統上是不能接受的。命令式語言讓我們用貼近馮紐曼架構(van Neumann Architecture)機器的方式寫程式,因為比較低階,所以效率會相對較高;而函數式編程語言卻使用較高階的數學抽象,所以效率比較低。
但是這個原因卻有了變化。過去十多年來,連Java這種龜速語言都能席捲世界,顯然我們對於「跨平臺」和「反微軟」的重視,已經超越「執行效率」;而在Java流行十年後的今天,我們有了新的衡量標準:「簡單」「快速開發」的要求,比其他因素都更重要,因為現在軟體的複雜度已經到了我們無法忍受的地步,而IT產業的競爭也比以往激烈許多。
想要讓程式「簡單」「快速開發」,就要用比較高階的抽象,因此函數式編程會比命令式編程更適合現在的開發環境。這些年來硬體以及編譯技術的進步,讓函數式編程語言的效率及執行速度,也已經不再是昔日的吳下阿蒙。
全文>>
沒有留言:
張貼留言