1. 程式人生 > >我們為什麼需要函數語言程式設計

我們為什麼需要函數語言程式設計

1.如果你需要編寫優秀的併發程式

在如今這個裝置已經進入多核的時代,學習如何編寫健壯的併發程式碼已經不再是一個候選項了。函數語言程式設計提供一個思考併發的正確原則,並且催生了幾個更高級別的併發而讓併發工作更加簡單。編寫健壯的併發程式碼不再只是少數聰明人的遊戲。

2.大多數程式只是在進行資料的管理

當你每天接收TB級別的資料,當你需要清洗、儲存PB級別的資料並且需要對它們進行分析時,任何有關物件方面的開銷對你來說都是難以接受的。儘管ORM和物件中介軟體在面向物件時代大受好評,因為我們可以通過直接操作業務物件從而儘量避免與SQL語句打交道。然而,它們效能開銷在這個資料時代日漸被放大。或許在一個小團隊裡面,效能和儲存並不是一個問題,然而,無論在什麼團隊,團隊敏捷性始終是所有團隊需要考慮的問題。試想一下,在日復一日,年復一年地程式增強中,團隊如何保持靈活?團隊如何讓程式碼儘可能地保持簡介?函數語言程式設計能夠直接地與基本資料集合打交道,最低限度地減少工作中物件模型的開銷,同時還能避免複製以及促進重用。

3.函數式程式設計更加模組化

OOP的出現讓許多人認為他們終於找到了一個建立可重用元件,大大減低成本和開發時間。然而,事實並不像人們想象的那麼美好。絕大部分成功的可重用的庫僅僅只是JDK、Spring框架等。剩下的那些我們需要的程式碼,我們不斷地在一個工程接著一個工程去重寫。物件的近乎無限的靈活性實際抑制了重用的潛力,因為在物件與物件如何進行互聯我們都沒幾條統一的標準。其實,物件歸根結底也只是資料的集合,這麼看來,我們就找到一條更好的比物件低層次的標準抽象的路。這些標準就是基本集合如list、map和set以及一些原生的型別像數字定義明確的域概念(例如,金錢在金融應用)。總而言之,函數語言程式設計定義了更加有用、容易重用、組合以及測試的抽象。

4.更快的工作效率

在開發週期越來越短的今天,敏捷開發越來越被重視。函數語言程式設計能夠使我們在需求不斷改變、特定領域知識理解出現錯誤地情況下能夠快速而從容地面對。

5.回歸簡單

函數語言程式設計是為了對抗偶發複雜性(accidental complexity)而作出的反擊,這種複雜性是我們認為新增上去的,而不是問題域的固有複雜性。 以上筆記來自 《Functional Programming for Java Developers》作者Dean Wampler  第一章Why Funtinal Programming?