當前位置:才華齋>設計>網頁設計>

JavaScript 函數語言程式設計實踐

網頁設計 閱讀(2.71W)

函數語言程式設計簡介

JavaScript 函數語言程式設計實踐

說到函數語言程式設計,人們的第一印象往往是其學院派,晦澀難懂,大概只有那些蓬頭散發,不修邊幅,甚至有些神經質的大學教授們才會用的程式設計方式。這可能在歷史上的某個階段的確如此,但是近來函數語言程式設計已經在實際應用中發揮著巨大作用了,而更有越來越多的語言不斷的加入諸如 閉包,匿名函式等的支援,從某種程度上來講,函數語言程式設計正在逐步“同化”指令式程式設計。

函數語言程式設計思想的源頭可以追溯到 20 世紀 30 年代,數學家阿隆左 . 丘奇在進行一項關於問題的可計算性的研究,也就是後來的 lambda 演算。lambda 演算的本質為 一切皆函式,函式可以作為另外一個函式的輸出或者 / 和輸入,一系列的函式使用最終會形成一個表示式鏈,這個表示式鏈可以最終求得一個值,而這個過程,即為計算的本質。

然而,這種思想在當時的硬體基礎上很難實現,歷史最終選擇了同丘奇的 lambda 理論平行的另一種數學理論:圖靈機作為計算理論,而採取另一位科學家馮 . 諾依曼的計算機結構,並最終被實現為硬體。由於第一臺計算機即為馮 . 諾依曼的程式儲存結構,因此執行在此平臺的程式也繼承了這種基因,程式設計語言如 C/Pascal 等都在一定程度上依賴於此體系

到了 20 世紀 50 年代,一位 MIT 的教授 John McCarthy 在馮 . 諾依曼體系的機器上成功的實現了 lambda 理論,取名為 LISP(LISt Processor), 至此函數語言程式設計語言便開始活躍於電腦科學領域。

函數語言程式設計語言特性

在函數語言程式設計語言中,函式是第一類的物件,也就是說,函式 不依賴於任何其他的物件而可以獨立存在,而在面向物件的語言中,函式 ( 方法 ) 是依附於物件的,屬於物件的'一部分。這一點 j 決定了函式在函式式語言中的一些特別的性質,比如作為傳出 / 傳入引數,作為一個普通的變數等。

區別於指令式程式設計語言,函數語言程式設計語言具有一些專用的概念,我們分別進行討論:

匿名函式

在函數語言程式設計語言中,函式是可以沒有名字的,匿名函式通常表示:“可以完成某件事的一塊程式碼”。這種表達在很多場合是有用的,因為我們有時需要用函式完成某件事,但是這個函式可能只是臨時性的,那就沒有理由專門為其生成一個頂層的函式物件。