當前位置:編程學習大全網 - 編程語言 - 為什麽函數式編程沒有流行起來?

為什麽函數式編程沒有流行起來?

但是對於很多編寫應用程序的編程人員來說,函數式編程仍顯得那麽陌生和遙遠。對此Confusion在tweakblog.net上發起了壹場關於“為什麽函數式編程語言沒有流行起來”的大討論。Confusion認為函數式編程語言之所以沒有流行起來,原因是其文檔及示例都顯得過於復雜難懂,讓人望而卻步:軟件工程領域的壹些權威對於函數編程(functional programming——FP)事實上不怎麽流行深表遺憾。支持者這壹觀點的人通常責怪聽眾短視或其老板無能,認為不同意他們意見的人根本不懂函數式編程為何物。而這反過來卻可能說明壹點:他們沒有給出恰當的解釋。我想限制FP語言被采用的實際原因是:真正吸引大家的是函數式編程語言的壹些優點,但是這些優點並沒有被很好地闡述和示例。同樣,這些解釋和樣例在說服軟件工程師方面顯得非常失敗,因為它們沒有回答軟件工程師們在日常工作中所關心的問題。 接著Confusion用壹個有關定義reduce的例子進壹步說明了這壹點:(reduce f x) nil = x(reduce f x) (cons a l) = f a ((reduce f x) l)……這很抽象,多數人並不熟悉。可是,FP語言的文檔只包含了這類非常數學化的例子。難道沒有人寫壹個用來證明FP強大功能的寵物店的例子嗎?這才是我們大多數人的常規工作。 對於Confusion的這壹看法,引來了眾多讀者的討論,大家就這壹問題紛紛發表了自己的看法。 RayNbow對於FP例子過於抽象的看法就表達了不同意見:斐波納契數列(Fibonacci )的例子(還有階乘)通常被用作說明語言語法的具體例子。因為函數式編程語言以函數為中心,還有什麽更好的方法展示如何定義它們的麽?妳可以把斐波納契數列和階乘的例子看作函數世界的Hello World。 Tubbie認為FP的特長就在於計算方面,因此編寫數據庫或用戶界面應用的程序員根本不需要使用它:FP支持者之所以展示計算例子,是因為FP擅長此道。問題是大多數程序員每天編寫的大多數代碼都是關於與數據庫、用戶界面等交互的,並不包含復雜的數學運算或算法。FP語言是非常不同的的語言,如果只解決邊界條件問題,就不需要學習它。 Dooievriend非常贊同Tubbie的說法:……我很喜歡函數式語言,它非常適合解決要解決復雜的運算問題。……但是關於用它來構建GUI並訪問數據庫,我沒有任何思路。對我來說,只在復雜和經常變化的問題出現時,才會用到FP,但它是嵌入到其他語言中使用。這是FP語言應被使用的方式,我至少知道Mercury是這麽用的…… 有不少人表示同意Dooievriend的這壹說法,他們認為只有混合了命令式語言(imperative languages )與函數式語言(Ffunctional languages )才能做到兩全其美。就函數式語言沒有很好的說明和例子這壹說法,雖然Morton也表示同意,但是他並不認為FP沒有流行起來:……我沒覺得FP不流行。我經常發現同事在代碼中使用了函數模式,可是他們自己都沒有意識到。現在也很難找到不支持FP的語言。在Java和.Net都開始支持FP概念的時候,妳們居然還擔心FP不流行。 Alex更是現身說法,說自己已經把函數式編程當作了“秘密武器”:妳的意思是還沒人寫出壹篇能讓人信服的說明函數編程好處的文章嗎? …… 我和我的團隊已經用F#開發了壹個穩定的、現實的、商用的業務應用,而且已經被大公司買走了。函數式編程最成功之處是,根據任務的特性,代碼量可以減少4到10倍,對此我十分確信,因為我們用F#重寫了壹些老代碼,所寫的代碼也更加易於維護和擴展。 因此,它給了我們競爭優勢。或許說服不了大多數人對我們來說是好事:),我們已經擁有這壹秘密武器了。 雖然大家看法各不相同,但是有壹點可以看得出來,函數式編程特長和優點是大家有目***睹的。

  • 上一篇:為什麽說可編程控制器是工業控制計算機,與計算機控制系統比,plc有那些優點?
  • 下一篇:p5.js鼠標交互如何實現並使用
  • copyright 2024編程學習大全網