天天看點

《Clojure資料分析秘笈》——3.1節引言

本節書摘來自華章社群《clojure資料分析秘笈》一書中的第3章,第3.1節引言,作者(美)eric rochester,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視

第3章

使用并發程式設計管理複雜度

3.1 引言

設計和建立一個計算機系統是一個均衡行為:不斷地添加特性和功能并保持代碼簡單和系統性能合理。資料分析系統也是如此。事實上,資料分析系統問題更糟糕。通常而言,資料隻是部分一緻,在開始分析之前需要采取多種政策來抽取有用資料。

這會導緻問題失控。

clojure中也有并發消息處理系統—建構于stm之上的agent。agent包含狀态資訊,通過向其發送函數消息來并發更新狀态。stm與agent一起提供了一種将程式設計為可維護且易了解結構的方式。

之是以這些都起作用是因為所有的本地clojure資料結構都是不可變的。它們不能被改變。由于處理不可變資料,盡管在高并發的環境下stm也可以保證其事務的一緻性和安全性。這些保證很有用,因為它們可以幫助我們分析并解釋資料和程式,并且幫助管理正在建構的系統的複雜性。

需要注意的是,并發(concurrent)描述了程式按什麼樣的架構來工作。每個程序可能做不同的事情。人們期望并發會提升速度,但是并發通常隻是組織程式、将涉及不同任務的程式的各個組成部分分離并去耦合的一種好方式。如果你不停地做同一件事情并且想做得更快,那就是并行(parallelism)。我們将在第4章中學習與其相關的方法。

繼續閱讀