- 論壇徽章:
- 0
|
本帖最后由 琳琳的小狗 于 2012-02-28 11:40 編輯
回復(fù) 30# OwnWaterloo
其實(shí)繞到最后,兄臺(tái)挖了個(gè)坑自己跳下去了。還記得最初的討論焦點(diǎn)么?導(dǎo)火索來(lái)自于《Ruby元編程》中作者有利用Ruby語(yǔ)法優(yōu)勢(shì)貶低其他語(yǔ)言(如C++、以及Lisp)的嫌疑,F(xiàn)在回頭看看,不正是以FP語(yǔ)言之長(zhǎng)來(lái)對(duì)比Ruby的短板么?
Ruby社區(qū)以Pragmatic為宗旨,屬于實(shí)戰(zhàn)派,相比Lisp這種學(xué)院派的風(fēng)格來(lái)說(shuō),的確是不太一樣(當(dāng)然,你也可以說(shuō)是因?yàn)镕P另類(lèi))。面向?qū)ο笳Z(yǔ)言之所以獲得大多數(shù)人的關(guān)注,其中最大的一個(gè)原因就是他盡力去模擬現(xiàn)實(shí)生活中的事物,比較符合人類(lèi)的心智模型,要不然FP這么優(yōu)雅高級(jí),怎么就流行不起來(lái)呢?lua還好點(diǎn),恕在下孤陋寡聞,還真沒(méi)在多少場(chǎng)合下見(jiàn)到Lisp的大規(guī)模應(yīng)用。俗話說(shuō)“工欲善其事,必先利其器”,就那我最熟悉的Web應(yīng)用開(kāi)發(fā),以及自動(dòng)化測(cè)試來(lái)講,使用Ruby這類(lèi)動(dòng)態(tài)語(yǔ)言才是最佳選擇。
感覺(jué)OO實(shí)在是被妖魔化了,如果真如某些人所言,那怎么有這么多語(yǔ)言都以此為賣(mài)點(diǎn)?比如javascript,還有風(fēng)頭正旺的Objective C,為何不搞成純FP呢?個(gè)人認(rèn)為,F(xiàn)P太過(guò)于抽象的思維是其受阻的最大原因,另一個(gè)原因就是源代碼的可讀性,Lisp那括號(hào)語(yǔ)法,以及前綴表達(dá)式,都給初學(xué)者帶來(lái)了不小的障礙。還記得SICP第一章的導(dǎo)言么?作者是這么說(shuō)的:“程序是寫(xiě)給人看的,機(jī)器順便執(zhí)行”。同樣的道理,映射到Ruby中來(lái),方法調(diào)用可省略括號(hào)、各種操作符比如加號(hào)的語(yǔ)法糖,無(wú)一不是為了實(shí)現(xiàn)整潔、易讀的代碼而設(shè)計(jì)的,《Ruby元編程》一書(shū)中指代的“程序員友好”就在這里。
至于我的回帖中引入Ruby實(shí)現(xiàn)的Lisp解釋器,僅僅只是想說(shuō)明,如果你愿意,使用這種帶有一定約束條件的內(nèi)部DSL,也是完全可以實(shí)現(xiàn)FP那些特性的。但是,可以歸可以,為什么沒(méi)人去這么干呢?這是個(gè)問(wèn)題。Rubyist一般都會(huì)采取最簡(jiǎn)單的辦法來(lái)實(shí)現(xiàn)手頭的任務(wù),如果開(kāi)發(fā)過(guò)程中,真要我去實(shí)現(xiàn)一個(gè)map,那我頂多這么做:- def map(operate, *args)
- args.shift.zip(*args).map {|pair| pair.reduce operate}
- end
- p (map :+, [1, 2, 3], [4, 5, 6], [7, 8, 9]) #輸出[12, 15, 18]
- p (map :push, [[1, 2],[3,4]], [5,6], [7, 8]) #輸出[[1, 2, 5, 7], [3, 4, 6, 8]]
復(fù)制代碼 的確,正如你說(shuō),利用了zip和reduce,但是就API的使用者而言,真的有區(qū)別么?拿BDD的理論來(lái)比擬,客戶(hù)是關(guān)注你軟件的內(nèi)部實(shí)現(xiàn)細(xì)節(jié),還是更關(guān)注于產(chǎn)品的功能和行為?
大乘佛藏經(jīng)雖然牛逼,可以普度眾生,還不是需要唐僧師徒一行遠(yuǎn)涉萬(wàn)里西天取經(jīng)么?同理,如果沒(méi)有人推廣傳授,F(xiàn)P可能永遠(yuǎn)都是實(shí)驗(yàn)室那些科學(xué)怪人們的小蜜,僅此而已。所以我倒是覺(jué)得,其他語(yǔ)言能借鑒其中好的思想,并將其應(yīng)用到實(shí)戰(zhàn)總來(lái),這絕對(duì)是有百益而無(wú)一害的好事情。他山之石可以攻玉,在Ruby社區(qū)這樣一個(gè)滿懷包容性、以及上進(jìn)心的生態(tài)環(huán)境中,作為其中的一員,我很欣慰。還是那句老話,切莫跑題,先拋棄成見(jiàn),就這本書(shū)的內(nèi)容進(jìn)行展開(kāi)討論吧:) |
|