我們這些碼農(nóng)做事都是很拖拉的。每天例行報(bào)到后,先來點(diǎn)咖啡,看看郵件還有RSS訂閱的文章。然后翻翻新聞還有那些技術(shù)網(wǎng)站上的更新,再過一遍編程論壇口水區(qū)里那些無聊的論戰(zhàn)。最后從頭把這些再看一次以免錯過什么精彩的內(nèi)容。然后就可以吃午飯了。飯飽過后,回來盯著IDE發(fā)一會呆,再看看郵箱,再去搞杯咖啡。光陰似箭,可以回家了……
(在被眾人鄙視之前)我唯一想說的是,在這些拖拉的日子里總會時(shí)不時(shí)讀到一些不明覺厲的文章。如果沒有打開不應(yīng)該打開的網(wǎng)站,每隔幾天你都可以看到至少一篇這樣的東西。它們的共性:難懂,耗時(shí),于是這些文章就慢慢的堆積成山了。很快你就會發(fā)現(xiàn)自己已經(jīng)累積了一堆的收藏鏈接還有數(shù)不清的PDF文件,此時(shí)你只希望隱入一個杳無人煙的深山老林里什么也不做,用一年半載好好的消化這些私藏寶貝。當(dāng)然,我是說最好每天還是能有人來給送吃的順帶幫忙打掃衛(wèi)生倒垃圾,哇哈哈。
我不知道你都收藏了些什么,我的閱讀清單里面相當(dāng)大部分都是函數(shù)式編程相關(guān)的東東:基本上是最難啃的。這些文章充斥著無比枯燥的教科書語言,我想就連那些在華爾街浸淫10年以上的大牛都無法搞懂這些函數(shù)式編程(簡稱FP)文章到底在說什么。你可以去花旗集團(tuán)或者德意志銀行找個項(xiàng)目經(jīng)理來問問1:你們?yōu)槭裁匆xJMS而不用Erlang?答案基本上是:我認(rèn)為這個學(xué)術(shù)用的語言還無法勝任實(shí)際應(yīng)用??墒?,現(xiàn)有的一些系統(tǒng)不僅非常復(fù)雜還需要滿足十分嚴(yán)苛的需求,它們就都是用函數(shù)式編程的方法來實(shí)現(xiàn)的。這,就說不過去了。
關(guān)于FP的文章確實(shí)比較難懂,但我不認(rèn)為一定要搞得那么晦澀。有一些歷史原因造成了這種知識斷層,可是FP概念本身并不難理解。我希望這篇文章可以成為一個“FP入門指南”,幫助你從指令式編程走向函數(shù)式編程。先來點(diǎn)咖啡,然后繼續(xù)讀下去。很快你對FP的理解就會讓同事們刮目相看了。
什么是函數(shù)式編程(Functional Programming,F(xiàn)P)?它從何而來?可以吃嗎?倘若它真的像那些鼓吹FP的人說的那么好,為什么實(shí)際應(yīng)用中那么少見?為什么只有那些在讀博士的家伙想要用它?而最重要的是,它母親的怎么就那么難學(xué)?那些所謂的closure、continuation,currying,lazy evaluation還有no side effects都是什么東東(譯者:本著保留專用術(shù)語的原則,此處及下文類似情形均不譯)?如果沒有那些大學(xué)教授的幫忙怎樣把它應(yīng)用到實(shí)際工程里去?為什么它和我們熟悉的萬能而神圣的指令式編程那么的不一樣?
我們很快就會解開這些謎團(tuán)。剛才我說過實(shí)際工程和學(xué)術(shù)界之間的知識斷層是有其歷史原因的,那么就先讓我來解釋一下這個問題。答案,就在接下來的一次公園漫步中:
更多建議: