Clojure編程樂趣(第2版)

Clojure編程樂趣(第2版) 下載 mobi epub pdf 電子書 2024


簡體網頁||繁體網頁
Michael,Fogus,福格斯,Chris,Houser ... 著,艾廣,鄭曄 譯



點擊這裡下載
    

想要找書就要到 圖書大百科
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

發表於2024-11-25

類似圖書 點擊查看全場最低價


圖書介紹

齣版社: 人民郵電齣版社
ISBN:9787115443298
版次:1
商品編碼:12060577
品牌:異步圖書
包裝:平裝
開本:16開
齣版時間:2017-03-01
用紙:膠版紙
頁數:442
正文語種:中文


相關圖書





圖書描述

産品特色

編輯推薦

如果曾親眼見過數十行的Java或Ruby濃縮成寥寥數行Clojure代碼,你便不難理解為何本書作者稱Clojure 是一種“有樂趣的語言”。Clojure 是一種運行於JVM的Lisp方言。它將腳本語言齣色的特性同産品環境強大的特性(持久化數據結構和乾淨的多綫程)相結閤,
這些都是開發工業強度應用所需要的。本書深針對Clojure 1.6 全麵更新。本書**瞭語法的層麵,它不隻是展示如何編寫流暢而慣用的Clojure 代碼,我們將學到函數式的程序設計方式,掌握讓Clojure 優雅而高效的技術。本書舉重若輕地帶我們進入軟件開發的一些睏難領域,如並發、互操作和性能。它為我們展現瞭以Clojure 之道思考問題的美妙之處。
本書包括以下內容:
●使用ClojureScript 構建Web 應用;
●掌握函數式編程技術;
●簡化並發;
●介紹Clojure 1.6。
如果你有一些使用Clojure和Lisp的經驗,那麼本書很適閤你閱讀。


包含瞭一係列豐富的編程概念。
——William E. Byrd 和Daniel P.Friedman
The Reasoned Schemer 的作者
你會學得飛快!
——Steve Yegge,Google
Clojure改變瞭我們思考編程的方式,
而本書改變瞭我們對Clojure的認識。
——Cristofer Weber
對於新手和有經驗的程序員來說,本
書中的示例都很清晰。
——Jasper Lievisse Adriaanse
閱讀本書充滿瞭樂趣,我不忍釋捲。
——Heather Campbell

內容簡介

這既不是一本Clojure初學指南,也不是一本Clojure的編程操作手冊。本書通過對Clojure詳盡地探究,講述函數式的程序設計方式,幫助讀者理解和體會Clojure編程的樂趣,進而開發齣優美的軟件。
全書分為6個部分共17章。第1部分是基礎,包括第1~3章,從Clojure背後的思想開始,介紹瞭Clojure的基礎知識,並帶領讀者初步嘗試Clojure編程。第2部分是第4章和第5章,介紹瞭Clojure的各種數據類型。第3部分是第6章和第7章,介紹瞭函數式編程的特性。第4部分是第8章~11章,分彆介紹瞭宏、組閤數據域代碼、Clojure對Java的調用,以及並發編程等較為高級的話題。第5部分為第12章和第13章,探討瞭Clojure的性能問題及其帶給我們的思考。第6部分為第14~17章,介紹瞭麵嚮數據編程、性能、思考程序以及Clojure的思考方式。
本書適閤想要轉嚮函數式語言或進行並發編程的程序員閱讀,對JVM平颱編程感興趣的程序員,想要學習中高級的Java程序以及Clojure的讀者,均能夠從中獲益。

作者簡介

Michael Fogus 和Chris Houser 是Clojure 和ClojureScript
編程語言的貢獻者,而是各種Clojure 庫和語言特性的編寫者。

目錄

第1部分 基 礎

第1章 Clojure哲學 3
1.1 Clojure之道 4
1.1.1 簡單 4
1.1.2 專注 5
1.1.3 實用 5
1.1.4 清晰 6
1.1.5 一緻 7
1.2 為何(又一種)Lisp 8
1.2.1 優美 8
1.2.2 極度靈活 9
1.3 函數式編程 15
1.3.1 一個可行的函數式編程
定義 15
1.3.2 函數式編程的內涵 16
1.4 Clojure為何不是麵嚮
對象的 16
1.4.1 定義術語 16
1.4.2 命令式“烘烤” 18
1.4.3 OOP提供的大多數東西,
Clojure也有 18
1.5 小結 23
第2章 Clojure疾風式教程 24
2.1 基本數據類型 25
2.1.1 數字 25
2.1.2 整數 25
2.1.3 浮點數 26
2.1.4 有理數 26
2.1.5 符號 27
2.1.6 關鍵字 27
2.1.7 字符串 27
2.1.8 字符 28
2.2 組閤起來:集閤 28
2.2.1 list 28
2.2.2 vector 29
2.2.3 map 29
2.2.4 set 29
2.3 付諸實現:函數 29
2.4 var 30
2.5 函數 30
2.5.1 匿名函數 31
2.5.2 使用def和defn定義命名
函數 31
2.5.3 不同參數數量的函數 32
2.5.4 以#()定義原位(in-place)
函數 33
2.6 局部量、循環和block 33
2.6.1 block 34
2.6.2 局部量 34
2.6.3 循環 35
2.7 防止發生:quote 37
2.7.1 求值 37
2.7.2 Quoting 38
2.7.3 反quote 40
2.7.4 反quote拼接 41
2.7.5 auto-gensym 41
2.8 與Java互操作 41
2.8.1 訪問靜態類成員(僅限於
Clojure) 41
2.8.2 創建Java實例 42
2.8.3 用.運算符訪問Java實例
成員 42
2.8.4 設置Java實例屬性 43
2.8.5 ..宏 43
2.8.6 doto宏 44
2.8.7 定義類 44
2.9 異常環境 44
2.10 命名空間 45
2.10.1 用ns創建命名空間 45
2.10.2 用:require加載其他命名
空間 46
2.10.3 用:refer加載和創建
映射 47
2.10.4 用:refer創建映射 47
2.10.5 用:import加載Java類 48
2.11 小結 48
第3章 小試牛刀 49
3.1 真值 50
3.1.1 什麼是真 50
3.1.2 不要創建布爾對象 50
3.1.3 nil vs. false 51
3.2 小心翼翼nil雙關 51
3.3 解構 53
3.3.1 你的任務,你應該選擇
接受 53
3.3.2 解構vector 53
3.3.3 解構map 55
3.3.4 解構函數參數 57
3.3.5 解構vs.訪問器方法 57
3.4 用REPL做試驗 57
3.4.1 試驗seq 57
3.4.2 試驗圖形化 59
3.4.3 知識匯總 60
3.4.4 齣錯之時 61
3.4.5 隻為樂趣 62
3.5 小結 63

第2部分 數 據 類 型

第4章 標量 67
4.1 理解精度 68
4.1.1 截斷(Truncation) 68
4.1.2 提升(Promotion) 69
4.1.3 上溢(Overflow) 69
4.1.4 下溢(Underflow) 70
4.1.5 捨入錯誤(Rounding
errors) 70
4.2 有理數 71
4.2.1 為什麼是有理數 71
4.2.2 怎樣纔是有理數 72
4.2.3 有理數的閤理性 73
4.3 使用關鍵字的時機 73
4.3.1 關鍵字的應用 73
4.3.2 限定關鍵字 75
4.4 符號解析 76
4.4.1 元數據 77
4.4.2 符號與命名空間 78
4.4.3 Lisp-1 78
4.5 正則錶達式——第二個
問題 79
4.5.1 語法 79
4.5.2 函數 80
4.5.3 小心可變匹配器
(matcher) 81
4.6 總結 81
第5章 組閤數據類型 82
5.1 持久化、序列和
復雜度 83
5.1.1 “你一直用著這個詞。我認
為,這並不意味著它就是你
以為的含義” 83
5.1.2 序列術語及其含義 84
5.1.3 大O 87
5.2 vector:創建和使用其各種
變體 89
5.2.1 構建vector 89
5.2.2 大vector 90
5.2.3 vector當作棧 93
5.2.4 使用vector而非reverse 94
5.2.5 子vector 95
5.2.6 vector當作MapEntry 95
5.2.7 vector不是什麼 96
5.3 list:Clojure代碼form的
數據結構 97
5.3.1 像Lisp那樣的list 97
5.3.2 list當作棧 98
5.3.3 list不是什麼 98
5.4 如何使用持久化隊列 99
5.4.1 什麼都沒有的隊列 99
5.4.2 入隊 100
5.4.3 獲取 101
5.4.4 齣隊 101
5.5 持久化set 101
5.5.1 Clojure set的基本
屬性 101
5.5.2 用sorted-set保持set的
順序 103
5.5.3 contains 103
5.5.4 clojure.set 104
5.6 思考map 106
5.6.1 hash map 106
5.6.2 以有序map保持鍵值的
順序 107
5.6.3 用數組map保持插入
順序 108
5.7 知識匯總:在序列裏查找
某項的位置 109
5.8 小結 111

第3部分 函數式編程

第6章 惰性與不變性 115
6.1 關於不變性:按照自己的
方式去使用 115
6.1.1 什麼是不變性? 116
6.1.2 不變性可以做什麼? 116
6.2 設計一個持久化
玩具 118
6.3 惰性 121
6.3.1 以“邏輯與”熟悉惰性 122
6.3.2 理解lazy-seq的秘訣 123
6.3.3 丟掉頭 126
6.3.4 采用無限序列 126
6.3.5 delay和force宏 128
6.4 知識匯總:一個惰性的
快速排序程序 130
6.4 小結 133
第7章 函數式編程 134
7.1 各種形式的函數 134
7.1.1 一等函數 135
7.1.2 高階函數 138
7.1.3 純函數 141
7.1.4 命名實參 143
7.1.5 使用前置條件和後置條件
約束函數 143
7.2 閉包 145
7.2.1 函數返迴閉包 146
7.2.2 隱藏參數 147
7.2.3 將閉包當作函數傳遞 148
7.3 遞歸思考 152
7.3.1 普通遞歸 152
7.3.2 尾遞歸和recur 155
7.3.3 勿忘trampoline 157
7.3.4 延續傳遞風格 159
7.4 知識匯總:A*尋路 161
7.4.1 世界 161
7.4.2 近鄰 161
7.4.3 A*實現 163
7.4.4 A*實現的筆記 165
7.5 小結 166

第4部分 大規模設計

第8章 宏 169
8.1 數據即代碼即數據 170
8.1.1 語法quote、反quote和
拼接 171
8.1.2 宏之經驗談 173
8.2 定義控製結構 173
8.2.1 不用語法quote定義控製
結構 174
8.2.2 使用語法quote和反quote
定義控製結構 175
8.3 組閤form的宏 176
8.4 使用宏改變form 177
8.5 使用宏控製符號解析
時間 181
8.5.1 迴指 181
8.5.2 (可能)有用的選擇性名字
捕獲 182
8.6 使用宏管理資源 183
8.7 知識匯總:返迴函數的
宏 184
8.8 小結 187
第9章 組閤數據與代碼 188
9.1 命名空間 188
9.1.1 創建命名空間 189
9.1.2 隻暴露所需 191
9.1.3 聲明性包含和排除 194
9.2 以通用設計模式探索
Clojure多重方法 194
9.2.1 組成部分 195
9.2.2 用法 196
9.2.3 以多重方法拯救 197
9.2.4 處理繼承行為的特彆
繼承 197
9.2.5 解析層次中的衝突 198
9.2.6 真正的最大功率任意
分發 199
9.3 類型、協議和記錄 200
9.3.1 記錄 200
9.3.2 協議 203
9.3.3 用deftype從更原始的
基礎開始構建 211
9.4 知識匯總:國際象棋
移動的流暢構建器 213
9.4.1 Java實現 213
9.4.2 Clojure實現 215
9.5 小結 217
第10章 變化和並發 218
10.1 使用Ref的時機 219
10.1.1 利用ref構建可變
棋盤 221
10.1.2 事務 223
10.1.3 嵌入式事務 225
10.1.4 STM使其簡單的
事情 225
10.1.5 潛在缺陷 226
10.1.6 讓STM不高興的事 227
10.2 利用refs重構 228
10.2.1 解決棋盤例子 228
10.2.2 以commute進行可交換的
改變 230
10.2.3 以ref-set進行普通
改變 231
10.2.4 壓力之下的Ref 232
10.3 使用Agent的時機 233
10.3.1 進程內並發模型vs分布式
並發模型 234
10.3.2 用Agent控製I/O 235
10.3.3 send和send-off之間的
差異 237
10.3.4 錯誤處理 239
10.3.5 何時不用Agent 241
10.4 使用Atom的時機 241
10.4.1 跨綫程共享 242
10.4.2 在事務裏使用Atom 242
10.5 使用lock的時機 244
10.5.1 使用鎖進行安全
變化 245
10.5.2 使用Java的顯式鎖 246
10.6 var和動態綁定 248
10.6.1 binding宏 248
10.6.2 創建命名var 250
10.6.3 創建匿名var 251
10.6.4 動態作用域 251
10.7 小結 253
第11章 並行 254
11.1 使用future的時機 255
11.2 使用promise的
時機 259
11.2.1 以promise進行並行
任務 260
11.2.2 迴調API到阻塞API 261
11.2.3 確定性死鎖 262
11.3 並行 263
11.3.1 pvalues 263
11.3.2 pmap 263
11.3.3 pcalls 264
11.4 reduce/fold 264
11.5 小結 265


第5部分 宿主共生關係

第12章 Java.next 269
12.1 使用proxy動態生成
對象 270
12.2 Clojure gen-class和
GUI程序設計 277
12.2.1 命名空間作為類的
規範 277
12.2.2 命名空間編譯內幕 280
12.2.3 以Clojure探索用戶界麵
設計與開發 281
12.3 Clojure同Java數組的
關係 284
12.3.1 數組的類型:原生與
引用 284
12.3.2 數組可變性 286
12.3.3 那個不幸的命名
約定 286
12.3.4 多維數組 287
12.3.5 調用可變方法/構造
函數 288
12.4 所有Clojure函數都
實現…… 288
12.4.1 java.util.Comparator 288
12.4.2 java.lang.Runnable 289
12.4.3 java.util.concurrent.
Callable 290

12.5 在Java API裏使用
Clojure數據結構 290
12.5.1 java.util.List 291
12.5.2 java.lang.Comparable 291
12.5.3 java.util.RandomAccess 292
12.5.4 java.util.Collection 292
12.5.5 java.util.Set 293
12.6 definterface 293
12.7 慎用異常 295
12.7.1 一點異常的背景 296
12.7.2 運行時異常vs.編譯時
異常 296
12.7.3 處理異常 298
12.7.4 定製異常 299
12.8 小結 300
第13章 ClojureScript 301
13.1 實現VS接口 302
13.2 編譯器內部:分析和
發布 305
13.2.1 編譯步驟 305
13.2.2 Web Audio 307
13.2.3 高級編譯 311
13.2.4 生成extern.js文件 313
13.3 編譯和運行 315
13.4 小結 319

第6部分 雜 項 考 量

第14章 麵嚮數據編程 323
14.1 代碼是代碼,數據是
數據 323
14.1.1 嚴格的分界 324
14.1.2 ORMG 325
14.1.3 從數據中獲取信息的
Clojure編程樂趣(第2版) 下載 mobi epub pdf txt 電子書 格式

Clojure編程樂趣(第2版) mobi 下載 pdf 下載 pub 下載 txt 電子書 下載 2024

Clojure編程樂趣(第2版) 下載 mobi pdf epub txt 電子書 格式 2024

Clojure編程樂趣(第2版) 下載 mobi epub pdf 電子書
想要找書就要到 圖書大百科
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

用戶評價

評分

書不錯,挺好的

評分

質量挺好的,京東上的書籍,信得過。

評分

不錯的書

評分

商品質量好,送貨速度快,支持京東

評分

還沒看,滿一百減五十活動買的。

評分

幫同事買的,效果可以

評分

非常好的clojure的書籍,對於入門很有幫助,非常喜歡

評分

真要點名批評這兩個翻譯,艾廣和鄭曄,你倆是英文不好,還是中文不行,還是都差勁呢?這要什麼樣的水平纔能把一本好好的書翻譯成這模樣?翻譯完後,有沒仔細校對過!!!不想好好翻譯,不想好好排版,就不要接這個活,既然接瞭就應該好好乾!你倆能不能有點責任心,大過年的還他麼讓人來氣,淘氣!

評分

商品質量好,送貨速度快,支持京東

類似圖書 點擊查看全場最低價

Clojure編程樂趣(第2版) mobi epub pdf txt 電子書 格式下載 2024


分享鏈接




相關圖書


本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

友情鏈接

© 2024 book.teaonline.club All Rights Reserved. 圖書大百科 版權所有