為什麼會有函式式程式設計?

時間 2021-05-05 21:07:49

1樓:Jason Hu

這個問題就是跟問「為什麼會有數學,數學是為了解決什麼問題」是乙個意思。

基於lambda calculus的語言比基於TM的語言具有更數學含義。實際上,任一形式邏輯系統都對應一種函式式語言。相反,基於TM的語言自成一系,並無法繼承數學和邏輯系統裡的知識架構。

另外,基於TM的程式語義也很成問題。

2樓:

物件導向的程式設計以類為中心。乙個專案裡有很多物件,每個物件有很多狀態(資料)和行為(函式)。這些物件的互動會改變對方的行為和狀態,物件還可以擁有其它物件,進而衍生出無窮的組合,導致程式變得複雜,處於不確定狀態。

函式式程式設計是為了解決不確定性。乙個函式,無論何時何地,給乙個輸入,它的輸出永遠確定,不受其它影響。如果乙個函式是乙個積木,函式式程式設計就是搭積木

但天下沒有沒費的午餐。函式式程式設計有著優良的特性,但是這也限制了它的使用範圍,希望一切確定只是一種理想。

物件導向的程式設計還是主流。程式是對真實問題的建模,我們唯一確定的就是它具有不確定性。

3樓:蔣甬杭

按我學習Python的經驗,函式式程式設計是一套程式設計框架,就像樂高積木一樣,語言提供了一套比簡單的運算和條件判斷更高一層的運算元,比如迴圈、分支、笛卡爾積之類,讓程式設計者可以在更接近問題的地方進行程式設計:只要把各個元件按照需要組裝起來。

SQL是乙個例子,裡面的表連線、求和、排序、計數等功能都是運算元,這些運算元雖然用更底層的變數、迴圈等也能實現,但容易出錯,也浪費開發精力。

為什麼說函式式程式設計和命令式程式設計等價, 它們怎樣相互轉化

時空是一體 本體 的統一的,函式式 命令式是一體 本體 的統一的。圖1圖2 上面兩個圖是計算機裡的物件空間和物件的運動軌跡,這兩種有限集合圖可能是同乙個圖。被cpu執行緒驅動的主體物件沿著紅線行走,前乙個圖是主體觀察到的左手邊的世界,後乙個圖是主體觀察到的自己右手邊的世界。一致的世界,所有地方都一致...

函式式程式設計immutable data是不是本質上效能就差點?

個人認為是的,而且開發起來好像也更加麻煩,如果要更新值,那麼完了還要把原來的 replace 掉,甚至要把所有有關聯的地方都要做一次 update.意義是什麼?就為了乙個所謂的無隱患 copy 如果說的不對,還希望大家指出正確使用方式。 navegador 它不一定就得真正的去 malloc.只要在...

想要理解函式式程式設計的思想,最好用哪種函式式程式語言入門?

SML虐我千百遍,我待SML如初戀 上學期上了CMU 15150,差一點就拿C了好驚險。SML作為教學用還是很不錯的,因為理論方面比較完善。SML裡有個概念叫totality。有了這個totality可以證明很多theorem。這個是Haskell做不到的 Scheme Standard ML Ha...