Web開發經典叢書:Clojure高級編程 (Professional Clojure) Web开发经典丛书:Clojure高级编程

Jeremy Anderson, Michael Gaare, Justin Holguin, Nick Bailey, Timothy Pratley

  • 出版商: 清華大學
  • 出版日期: 2017-06-01
  • 定價: $299
  • 售價: 8.5$254
  • 語言: 簡體中文
  • 頁數: 247
  • 裝訂: 平裝
  • ISBN: 7302471118
  • ISBN-13: 9787302471110
  • 相關分類: JVM 語言
  • 此書翻譯自: Professional Clojure
  • 立即出貨 (庫存=1)

買這商品的人也買了...

商品描述

作為一門現代Lisp方言,Clojure專為支持並發和Java兼容
性而設計,能提供眾多開發人員孜孜以求的解決方案。憑借
通用性和諸多功能,Clojure日益受到企業級應用開發人員(尤
其是那些希望遠離命令式編程加速工作流程的開發人員)的青
睞。本書條理清晰,緊貼實際介紹Clojure的用法,為職業程
序員提供完備參考。本書首先介紹函數式編程基礎知識,此
後重點講解與Clojure相關的特定主題,並從專業Clojure貢獻
者的角度提出諸多見解。資深Clojure人才日益緊俏,這本精
品指南將助你迅速蛻變為Clojure專業開發人士。
主要內容
◆ 探討函數式編程與面向對象編程之間的差異,分析
Clojure如何消除這種差異
◆ 討論快速反饋循環中聲明式編程所用的REPL流程
◆ 演示如何使用ClojureScript來設計和開發反應式網頁
◆ 介紹Clojure的特性、性能與功能,並討論使其成為一門
重要語言的通用兼容性
◆ 涵蓋Web服務、測試和Datomic數據庫等主題,是完備的
專業指南和教程
◆ 從專家程序員和Clojure貢獻者的角度,提出應用開發的
實用見解

海報:

作者簡介

作者:Jeremy Anderson 

Jeremy Anderson就職於美國密歇根州的Code Adept,這是一家提供高品質軟件交付的諮詢公司,業務涵蓋軟件開發、敏捷教導與培訓服務。Jeremy是一名Clojure愛好者,對多種Clojure庫的開發都有貢獻。Jeremy對向用戶提供編程培訓極為熱心,並作為志願者在當地中學協助講授計算機課程。
Michael Gaare就職於美國一家提供金融技術服務的初創公司NextAngles,擔任平台技術負責人。從2012年起,Michael就採用Clojure開發專業的Web服務、數據處理系統與各種庫(而非框架)。Michael愛好參加歌劇演出,大部分閒暇時間都與妻子和兩個女兒度過。
Justin Holguín在美國波特蘭的Puppet Labs擔任軟件工程師,負責Clojure後端服務的開發。Justin熱愛函數式編程,對高級類型系統、基於屬性的測試等能夠提高軟件穩定性的技術情有獨鍾。
Nick Bailey是一名Clojure愛好者,也負責Clojure java.jmx庫的維護。Nick在總部位於美國加州的DataStax擔任軟件架構師,使用Clojure開髮用於管理分佈式數據庫的企業級軟件。Nick從2010年起開始接觸Clojure,並由此成為這門語言的擁護者。
Timothy Pratley從2008年起開始使用Clojure,是這門語言的貢獻者和倡導者。Timothy目前就職於美國舊金山的Outpace Systems,負責開發基於Clojure、ClojureScript和Clojure Android的解決方案。Timothy已有15年的專業軟件開發經驗,接觸過許多編程語言、框架和數據庫,熱愛Clojure、Datomic數據庫、結對編程(pair programming) ,喜歡思考。

目錄大綱

第1章保持初學者的心態

1.1函數式思維
1.1.1以值為導向
1.1.2從遞歸的角度考慮問題
1.1.3高階函數
1.1.4擁抱惰性
1.1.5當變動成為必需時
1.1.6Nil雙關
1.1.7函數式Web 
1.2改進面向對象編程
1.2.1利用defmulti實現多態調度
1.2.2使用deftype和defrecord定義類型
1.2.3協議
1.2.4reify 
1.3可持久化數據結構
1.4塑造語言
1.5小結

第2章Clojure的快速反饋循環

2.1REPL驅動開發
2.1.1REPL在Leiningen中的基本操作
2.1.2通過nREPL實現遠程REPL 
2.1.3REPL在實際程序中的應用
2.1.4REPL與編輯器的連接
2.2代碼重載
2.2. 1從REPL重載代碼
2.2.2自動重載代碼
2.2.3編寫可重載的代碼
2.3小結

第3章Web服務

3.1項目總覽
3.2構成Web服務的元素
3.2.1庫,而非框架
3.2.2HTTP 
3.2 .3路由
3.2.4JSON端點
3.3示例服務
3.3.1創建項目
3.3.2其他命名空間
3.3.3默認中間件
3.3.4存儲協議
3.3.5處理函數
3.3.6中間件
3.3.7路由
3.4部署
3.4. 1使用Leimngen 
3.4.2編譯Uberjar或Uberwar 
3.4.3託管
3.5小結 

4章測試

4.1clojure.test測試基礎
4.1.1with—test宏
4.1.2deftest庫
4.1.3are 
4.1.4使用基境
4.2測試策略
4.2.1數據庫測試
4.2.2Ring處理函數測試
4.2.3採用with—redefs實現模擬/存根
4.2.4重新定義動態var 
4.2.5採用vcr—clj實現錄製和重放
4.3度量代碼質量
4.3.1採用cloverage度量代碼覆蓋率
4.3.2採用kibit和bikeshed進行靜態分析
4.3.3將依賴置於掌控之中
4.4其他測試框架
4.4.Iexpectations 
4.4.2speclj 
4.4.3Cucumber 
4.4.4kerodon 
4.5小結

第5章採用ClojureScript開發反應式網頁

5.1ClojureScript與眾不同
5.2ClojureScript初探
5.2.1創建新的ClojureScript項目
5.2. 2採用Figwheel實現快速反饋
5.2.3創建組件
5.2.4數據建模
5.2.5響應事件並處理狀態變更
5.2.6理解錯誤和警告信息
5.2.7命名空間佈局
5.2.8樣式
5.2.9表單輸入與表單處理
5.2.10導航和路由
5.2.11HTTP調用:與服務器進行通信
5.2.12拖放
5.2.13發布
5.3Reagent進階
5.3.1形式1:返迴向量的函數
5.3.2形式2:返 組件的函數
5.3.3形式3:返回類的函數
5.3.4序列與鍵
5.3.5自定義標記
5.3.6反應
5.3.7對樣式的註釋
5.4Devcards的測試組件
5.5與JavaScript的互操作性
5.6一種語言,一種慣用法,多個平台
5.7Closure編譯器和Closure庫淺析
5.8採用DataScript處理建模狀態
5.9在瀏覽器中使用core.asyne 
5.10小結

第6章Datomic數據庫

6.1Datomic基礎
6.1.1為何選擇Datomic?
6.1.2Datomic數據模型
6.1.3查詢
6.1.4事務
6.1.5索引:將數據切實綁定在一起
6.1.6Datomic的獨特架構
6.2對應用數據建模
6.2.1任務跟踪器應用的示例模式
6.2.2實體id和分區
6.3Datomic的ClojureAPI 
6.3.1基本設置
6.3.2在REPL中小試牛刀
6.4採用Datomic構建應用
6.4.1用戶函數
6.4.2賬戶函數
6.4.3任務函數
6.4.4部署
6.4.5局限性
6.5小結

第7章性能

7.1何為性能?
7.2性能優化的前提:選擇正確的數據結構
7.3基準測試
7.3.1測定低速模塊的時間
7.3.2採用Criterium測定高速模塊的時間
7.3.3採用測試選擇器進行性能測試
7.4並行
7.5記憶化
7.6內聯
7.7利用瞬態機制安全地處理變動
7.8性能分析
7.9利用類型提示避免反射
7.10Java標誌
7.11數值計算
7.12小結