函式式程式設計

2021-04-16 18:44:58 字數 779 閱讀 1334

最近在看一些關於js方面的東東,除了些ajax的基本應用,還了解了些函式式程式設計(fp)的東東。雖然以前也玩過幾天lisp的,不過因為當時完全對fp的東西沒有概念,壓根就不知道原來這是list那一族最大的特性之一(另外我知道的還有個是gc,orz...),光注意那些詭異的「表」去了。

總結一下,傳統上認為fp的兩大特點乙個是高階抽象,乙個是惰性求值。這兩個詞聽起來都有點學術化,好像是在搞數學研究。高階抽象實際上說的是函式的抽象以及分解能力,這個應該很符合程式語言設計中很重要的可組合性的要求。惰性求值當然是為了效能了,實際上現在每次寫&&,||這些邏輯運算的時候都要考慮下怎麼寫會高效一點,不過在函式式程式設計中用處就更明顯了。

fp實際上是個很老的概念,最近逐漸變得火熱的乙個原因是因為多核處理器的發展。雙核出來之後,四核八核跟進得很快,可以預計16、32核應該也不是很遙遠的幻想。但是在軟體開發裡面實際上真正能夠發揮這些cores的應用並不多,實際上多執行緒程式設計一直都還是件很複雜的事情。儘管每個developer都少都知道點關於create thread/process以及sync同步的技巧,但是那些真正迫切需要多執行緒的複雜應用裡面多執行緒實際上發揮的作用很有限。主要原因也是在語言和工具一級並沒有很好的支援多執行緒,再加上現在的**往往還要跟物件導向的封裝扯在一起,而oo和fp本身就是屬於兩種差異很大的程式設計風格,所以導致對運算過程的分解非常困難,如果再考慮到難以預料的同步問題,通常會直接導致dev放棄使用多執行緒的方案。函式式程式設計在這個問題上有先天的優勢,高階抽象,無***這些正好是解決問題的良藥。也難怪現在各大語言都在fp上面打主意。。。

居然盡然已經有快三個月沒有更新blog了,實在慚愧~~

函式式程式語言python 函式式程式設計

函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...

函式式程式設計

維基百科 函式式程式設計 英語 functional programming 或者函式程式設計,又稱泛函程式設計,是一種程式設計范型,它將計算機運算視為數學上的函式計算,並且避免使用程式狀態以及易變物件。函式程式語言最重要的基礎是 演算 lambda calculus 而且 演算的函式可以接受函式當...

函式式程式設計

map函式 將序列中的元素全部傳遞給乙個函式 print map map str,range 10 filter函式 可以基於乙個返回布林值的函式對元素進行過濾 def fun x return x.isalnum seq print filter filter fun,seq 使用lambda優化...