好在還有Amdahl's law存在,事實(shí)也證明除去一些特定的應(yīng)用場(chǎng)景,自動(dòng)編譯為支持多核并行的函數(shù)式程序并不快多少,而轉(zhuǎn)化為純函數(shù)程序的成本卻高出不少。同時(shí)大多數(shù)純函數(shù)語言都帶有學(xué)術(shù)性質(zhì),對(duì)于大連華為云存儲(chǔ)軟件開發(fā)團(tuán)隊(duì)并不友好。再加上JVM 和.NET CLR 對(duì)于多核都做出了一些回應(yīng)。因此除去一些計(jì)算密集型應(yīng)用,純函數(shù)語言并沒比面向?qū)ο蠛枚嗌佟?
值得一提的是,由消息傳遞風(fēng)格發(fā)展出來的Actor模型,利用操作系統(tǒng)的進(jìn)程/線程特性,在一個(gè)合理的粒度上很好地利用了多核的能力,簡(jiǎn)化了來訪系統(tǒng)通過大屏幕發(fā)布的程序編輯開發(fā)方法。雖然第一個(gè)著名的實(shí)現(xiàn)是Erlang的Actor系統(tǒng),但是由于消息傳遞風(fēng)格和面向?qū)ο竽P拖嗳ゲ贿h(yuǎn),很快就在各種面向?qū)ο笳Z言中有了類庫支持。雖然利用當(dāng)代函數(shù)語言的語法特性,Actor可以實(shí)現(xiàn)得更簡(jiǎn)潔,但是對(duì)象對(duì)于副作用和狀態(tài)的封裝更好地解決了在并發(fā)環(huán)境下對(duì)于大連華為云存儲(chǔ)軟件開發(fā)共享狀態(tài)的操作,反而有了更好的發(fā)展。
以上,我們看了函數(shù)式語言中兩個(gè)新的發(fā)展以及圍繞這些發(fā)展的一些“對(duì)象v.s.函數(shù)”的討論。致遠(yuǎn)服軟認(rèn)為:http://www.soft8.com.cn/正如本文一開始所說,對(duì)象技術(shù)作為一種工程實(shí)踐,其發(fā)展總是依托于其他更基本的計(jì)算模型的演化。函數(shù)語言的發(fā)展,使得我們對(duì)于對(duì)象有了更深更好的認(rèn)識(shí)和理解。而對(duì)象作為函數(shù)的“方便的接口”,總會(huì)在發(fā)展中讓我們更加便利地享有函數(shù)式和其他計(jì)算模型發(fā)展的成果。
回到本文最開始的討論,函數(shù)的發(fā)展的確會(huì)使一些對(duì)象技術(shù)消亡,但也會(huì)產(chǎn)生新的對(duì)象技術(shù)。或許更好地理解和掌握函數(shù)、類型系統(tǒng)才是真正掌握對(duì)象技術(shù)的捷徑,也未可知。
徐昊,ThoughtWorks 中國區(qū)首席技術(shù)專家,ThoughtWorks 全球技術(shù)策略顧問(TAB), TW 中國首席咨詢師,BJUG(Beijing Java User Group)和AgileChina 創(chuàng)始人。他從2003年起開始實(shí)踐極限編程等敏捷方法,2005年開始,多次以敏捷教練的角色幫助國內(nèi)外多個(gè)團(tuán)隊(duì)實(shí)施極限編程、Scrum和FDD等敏捷方法,敏捷交付和敏捷項(xiàng)目管理經(jīng)驗(yàn)極為豐富。目前他主要致力于大連華為云存儲(chǔ)軟件開發(fā)團(tuán)隊(duì)(300~500人)內(nèi)的敏捷實(shí)踐和管理再造以及企業(yè)級(jí)技術(shù)應(yīng)用趨勢(shì)和技術(shù)戰(zhàn)略的研究。