當前位置:首頁 » 編程軟體 » 函數是編程語言

函數是編程語言

發布時間: 2023-02-10 19:00:42

❶ 為什麼函數式編程沒有流行起來

但是對於很多編寫應用程序的編程人員來說,函數式編程仍顯得那麼陌生和遙遠。對此Confusion在tweakblog.net上發起了一場關於「為什麼函數式編程語言沒有流行起來」的大討論。Confusion認為函數式編程語言之所以沒有流行起來,原因是其文檔及示例都顯得過於復雜難懂,讓人望而卻步:軟體工程領域的一些權威對於函數編程(functional programming——FP)事實上不怎麼流行深表遺憾。支持者這一觀點的人通常責怪聽眾短視或其老闆無能,認為不同意他們意見的人根本不懂函數式編程為何物。而這反過來卻可能說明一點:他們沒有給出恰當的解釋。 我想限制FP語言被採用的實際原因是:真正吸引大家的是函數式編程語言的一些優點,但是這些優點並沒有被很好地闡述和示例。同樣,這些解釋和樣例在說服軟體工程師方面顯得非常失敗,因為它們沒有回答軟體工程師們在日常工作中所關心的問題。 接著Confusion用一個有關定義rece的例子進一步說明了這一點:(rece f x) nil = x (rece f x) (cons a l) = f a ((rece 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#重寫了一些老代碼,所寫的代碼也更加易於維護和擴展。 因此,它給了我們競爭優勢。或許說服不了大多數人對我們來說是好事:),我們已經擁有這一秘密武器了。 雖然大家看法各不相同,但是有一點可以看得出來,函數式編程特長和優點是大家有目共睹的。

❷ 如何打造「函數式」編程語言

嚴格的函數式語言是沒有變數的賦值行為,講究的是引用透明性,也就是說一個表達式返回一個值,那麼它永遠返回一個值,不會變。

函數式語言常常和遞歸聯系起來,這是因為一般的循環結構,除非 while(1) 這種死循環,都是和表達式的變動關聯起來的,比如說 while(n) 就是要不斷修改 n 的值直到 n == 0,在函數式語言中是必須避免的。

遞歸通過調用函數的參數不同,來達到數據的變動卻不破壞引用透明性。並且如果加入尾遞歸優化,那麼遞歸的性能和循環是等價的。

函數式語言另外一個特點,也是一個語言能自稱函數式的關鍵所在是,函數是「一等公民」,這是說能像操作數據一樣在函數中動態生成新的函數,可以將函數賦值給變數,可以把函數放到數據結構里,可以把函數作為參數和返回值。

達到這一個特性的語言都可以寬泛的稱作函數式編程語言,並不和過程式和面向對象沖突。

❸ C語言是函數式編程語言嗎

函數式編程是種編程範式,它將電腦運算視為函數的計算。函數編程語言最重要的基礎是 λ 演算(lambda calculus)。而且λ演算的函數可以接受函數當作輸入(參數)和輸出(返回值)。和指令式編程相比,函數式編程強調函數的計算比指令的執行重要。和過程化編程相比,函數式編程里,函數的計算可隨時調用。
所以說JavaScript算是函數式編程語言。

❹ 大家都學習或者使用過什麼函數式的編程語言啊

當然這些語言是純的函數式的編程語言,還有很多語言是命令式的,但是語言本身
的功能可以使用函數式的範式來編程,比如Python, Ruby, Lua等都可以做到。
其實C++也可以做到,不過要藉助第三方庫
函數式編程的意義遠大於函數式編程語言的本身。在這個多核要求多並行的時代,
體系結構)出現之前,學習函數式編程的思考和技術還是有著很長遠的意義的。

❺ 匯編語言和函數是什麼

匯編語言是相對於硬體(一般是單片機)的一種編程語言;而函數是在編程語言組合使用的一種可以調用的函數,這是二個完全不同的概念。
編程語言特別豐富,我們經常看到的有VB、VC、VF、C++、C#等等,這些語言中有內部函數,編程人員也可以自定義函數。
匯編語言是編程語言中的一種。

❻ javascript 是函數式編程語言嗎

javascript本身只是嵌入腳本,事實上不算語言,是HTML代碼中的部分內容,主要作用也是控制HTML代碼中元素在瀏覽器上的行為。

javascript支持C等函數語言的函數規范,可以用函數語言的概念的去理解和編寫。

javascript可以有不在函數裡面的語句,獨立的一兩個語句也是可以執行的,這是比C等函數語言更加靈活方便,有時候也因此變得更加復雜。

❼ 求科普什麼是函數式編程語言

實際上,函數式編程沒有一個嚴格的官方定義。嚴格上來講,函數式編程中的「函數」,並不是指我們編程語言中的「函數」概念,而是指數學「函數」或者「表達式」(例如:y=f(x))。不過,在編程實現的時候,對於數學「函數」或「表達式」,我們一般習慣性地將它們設計成函數。所以,如果不深究的話,函數式編程中的「函數」也可以理解為編程語言中的「函數」。

❽ 學編程語言會用到函數嗎

編程語言大多都有函數。函數是使得編程更加方便,只不過編程里的函數和數學中的函數有所不同,編程語言個自的函數也不一樣。

❾ Java函數式編程語言是什麼

函數式編程語言的核心是它以處理數據的方式處理代碼。這意味著函數應該是第一等級(First-class)的值,並且能夠被賦值給變數,傳遞給函數等等。
事實上,很多函數式語言比這走得更遠,將計算和演算法看得比它們操作的數據更重要。其中有些語言想分離程序狀態和函數(以一種看起來有點對立的方式,使用面向對象的語言,這通常會將它們聯系得更緊密)。
Clojure編程語言就是一個這樣的例子,盡管它運行於基於類的Java虛擬機,Clojure的本質是函數式語言,並且在高級語言源程序中不直接公布類和對象(盡管提供了與Java良好的互操作性)。

❿ C語言是函數式編程語言嗎

是的。C語言是面向過程的語言,也就是邏輯流程全部是由函數編寫的。它與面向對象的差別就是面向對象的操作都是由對象的方法編寫的,而面向過程的是依靠函數編寫的。
打個比方:寫個你去銀行存錢的程序
C語言:寫出存錢的函數,執行
面向對象:寫出一個對象(就是你),寫出一個方法(讓你會存錢),執行這個存錢的方法就行了

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:749
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:1012
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:718
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:878
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:774
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1127
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:351
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:229
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:911
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:875