日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Functional Language

發(fā)布時(shí)間:2025/4/16 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Functional Language 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、What is functional language?

? ? 函數(shù)式語言(functional language)一類程序設(shè)計(jì)語言,是一種非馮·諾伊曼式的程序設(shè)計(jì)語言。函數(shù)式語言主要成分是原始函數(shù)、定義函數(shù)和函數(shù)型。這種語言具有較強(qiáng)的組織數(shù)據(jù)結(jié)構(gòu)的能力,可以把某一數(shù)據(jù)結(jié)構(gòu)(如數(shù)組)作為單一值處理;可以把函數(shù)作為參數(shù),其結(jié)果也可為函數(shù),這種定義的函數(shù)稱為高階函數(shù),程序就是函數(shù),程序作用在結(jié)構(gòu)型數(shù)據(jù)上,產(chǎn)生結(jié)構(gòu)型結(jié)果,從根本上改變了馮·諾伊曼式語言的“逐詞”工作方式。

2、Include:

純函數(shù)式編程語言:

強(qiáng)靜態(tài)類型:Concurrent Clean、Hask、Miranda

弱類型:Lazy K

非純函數(shù)式編程語言:

強(qiáng)靜態(tài)類型:F#、ML、OCaml、Scala

強(qiáng)動(dòng)態(tài)類型:Erlang、LISP、LOGO、Scheme、Clojure、Mathematica、R

弱類型:Unlambda

其他函數(shù)式編程語言:

APL、XSLT

3、Why popular?

(1)比起指令示編程函數(shù)式編程更加強(qiáng)調(diào)程序執(zhí)行的結(jié)果而非執(zhí)行的過程,倡導(dǎo)利用若干簡(jiǎn)單的執(zhí)行單元讓計(jì)算結(jié)果不斷漸進(jìn),逐層推導(dǎo)復(fù)雜的運(yùn)算,而不是設(shè)計(jì)一個(gè)復(fù)雜的執(zhí)行過程。

?

(2)并行。在函數(shù)式編程中,程序員無需對(duì)程序修改,程序就可以并發(fā)運(yùn)行。程序運(yùn)行期間,不會(huì)產(chǎn)生死鎖現(xiàn)象。原因是通過函數(shù)式編程所得到的程序,在程序中不會(huì)出現(xiàn)某一數(shù)據(jù)被同時(shí)修改兩次及以上的情況,同樣的,兩個(gè)不同的線程就更不用說了。由于函數(shù)式編程有這樣的優(yōu)點(diǎn),導(dǎo)致了程序員完全不用花費(fèi)精力去考慮增加某個(gè)線程帶來的并發(fā)問題。

?

在函數(shù)編程語言中,編譯器會(huì)分析代碼,辨認(rèn)出潛在耗時(shí)的創(chuàng)建字符串s1和s2的函數(shù),然后將他們并行的運(yùn)行。這樣的做法,是程序員在使用普通的命令式程序語言時(shí)不可能做到的。而使用函數(shù)式程序語言可以自動(dòng)的找出那些可以并發(fā)執(zhí)行的函數(shù)。

?

(3)單元測(cè)試。在函數(shù)式編程中,由于程序中的每一個(gè)符號(hào)都是final后的,所以這樣的函數(shù)不會(huì)產(chǎn)生副作用。這就導(dǎo)致了在某個(gè)地方產(chǎn)生修改,同時(shí)不會(huì)有函數(shù)修改過在自身范圍之外的變量或者狀態(tài)被另外的函數(shù)所使用。這就導(dǎo)致了函數(shù)的返回結(jié)果只是返回值。只有函數(shù)自身的參數(shù)才會(huì)影響函數(shù)的返回值,所以在編程的時(shí)候,對(duì)程序中的每個(gè)函數(shù)而言,程序員只需在控制它們的參數(shù),而不用在意函數(shù)自己點(diǎn)順序以及函數(shù)外部變量和狀態(tài)就能正確的編程。與函數(shù)式編程相比,命令式編程就沒有這樣的優(yōu)勢(shì)了,在檢查函數(shù)的返回值的同時(shí)程序員還必須檢查函數(shù)是否影響到了函數(shù)的外部狀態(tài)和變量。

?

(4)沒有額外作用。副作用是指的是函數(shù)內(nèi)部與外部互動(dòng)。比如,函數(shù)在自身內(nèi)部可以對(duì)函數(shù)以外的其他變量進(jìn)行修改,這樣就會(huì)產(chǎn)生其他結(jié)果。在函數(shù)式編程中,想要達(dá)到這樣的目的就必須讓函數(shù)自身要保持獨(dú)立。在函數(shù)式程序語言中,所有的功能的結(jié)果就是一個(gè)返回值,不存在其他的行為,包括對(duì)外部變量的修改。

?

(5)不修改狀態(tài)。在函數(shù)式編程中,程序語言在使用中是會(huì)不修改變量的,它的一個(gè)特性可以使得函數(shù)式編程語言區(qū)別于其他的程序語言。在其他類型的語言中,變量是用來保存狀態(tài)的。由于函數(shù)式編程不修改變量,導(dǎo)致了這些狀態(tài)不能存在于變量中。那么,函數(shù)式編程語言保存狀態(tài)的方法是使用參數(shù)來保存,遞歸方法是最好的例子。由于采用了遞歸方法,函數(shù)式編程語言在運(yùn)行速度上相對(duì)于其他語言較慢,所以,速度不夠快是函數(shù)式編程語言長(zhǎng)期不能廣泛使用的主要原因。

?

(6)引用透明。在函數(shù)式編程中,引用透明指的是運(yùn)行函數(shù)的時(shí)候,函數(shù)的沒一個(gè)步驟都不會(huì)不牽連到函數(shù)的外部變量或狀態(tài),而是只依賴于函數(shù)輸入的參數(shù),相同的參數(shù)輸入總會(huì)得到相同的函數(shù)返回值。而在其他類型的語言中,函數(shù)的返回值不僅僅與函數(shù)的參數(shù)傳入有關(guān),也與當(dāng)前的系統(tǒng)狀態(tài)有關(guān)。在不同的系統(tǒng)狀態(tài)的情況下,函數(shù)的返回值不同。

?

(7)代碼部署熱。在以前,假如想在Windows上安裝更新,安裝之后重啟計(jì)算機(jī)是必須進(jìn)行的步驟,可能還不只一次的重啟。即使是僅僅安裝了一個(gè)小的軟件也不能免于重啟的步驟。一些特殊的系統(tǒng),比如電信系統(tǒng),這樣的系統(tǒng)必須保證任何時(shí)間都在運(yùn)行。因?yàn)槿绻谙到y(tǒng)更新時(shí)緊急撥號(hào)失效,就可能造成很大的損失。最理想的情況是在完全不停止系統(tǒng)任何組件的情況下,達(dá)到更新相關(guān)的代碼的目的。這樣的想法在命令式編程中是不可能的。對(duì)函數(shù)式的程序,所有的狀態(tài)即傳遞給函數(shù)的參數(shù)都被保存在了堆棧上,這使的熱部署輕而易舉。實(shí)際上,所有我們需要做的就是對(duì)工作中的代碼和新版本的代碼做一個(gè)差異比較,然后部署新代碼。其他的工作將由一個(gè)語言工具自動(dòng)完成。 函數(shù)式編程語言相對(duì)于其他編程語言具有以下意義:首先,函數(shù)式編程語言的代碼十分簡(jiǎn)單,加快了開發(fā)的速度。并且由于在使用函數(shù)式編程語言時(shí),程序員會(huì)大量使用到函數(shù),從而減少了重復(fù)的代碼,因而程序比較短。其次,函數(shù)式編程語言更加接近我們使用的自然語言,程序員在學(xué)習(xí)和使用它的時(shí)候更加快捷容易。函數(shù)式編程語言的自由度很高,十分接近自然語言寫出的代碼。另外,函數(shù)式編程語言的代碼管理更加方便。函數(shù)式編程不會(huì)對(duì)外部產(chǎn)生依賴,也不會(huì)修改外界的狀態(tài)。程序員只需把指定的參數(shù)給函數(shù),相同的參數(shù)其返回的結(jié)果必定是相同的。另外,函數(shù)式編程語言還支持并發(fā)編程,這就使得程序員在進(jìn)行函數(shù)式編程時(shí)完全不用考慮死鎖的問題,因?yàn)樗揪筒恍薷淖兞?#xff0c;所以就不存在鎖線程的問題。最后,函數(shù)式編程語言的代碼支持代碼熱升級(jí)。

轉(zhuǎn)載于:https://www.cnblogs.com/schhz208/p/10467991.html

總結(jié)

以上是生活随笔為你收集整理的Functional Language的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。