-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
微型Lisp解釋器的構造與實現 版權信息
- ISBN:9787568082457
- 條形碼:9787568082457 ; 978-7-5680-8245-7
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
微型Lisp解釋器的構造與實現 本書特色
中國人自己實現和維護的開源項目,成功將Haskell的Parsec解釋器移植到Java和Scala。
微型Lisp解釋器的構造與實現 內容簡介
本書從零開始,將Haskell的Parsec解釋器移植到Java和Scala,并通過詳細的程序實例,深入淺出地介紹了組合子邏輯這個函數式編程的基本范式,給讀者展示了Parsec組合子的原理、實現和應用。閱讀本書,讀者不但可以掌握Parsec解釋器的實現方法,而且可以加深對Parsec組合子的理解。本書也可以作為學習Java和Scala編程語言的補充教材。
微型Lisp解釋器的構造與實現 目錄
第1章 環境準備
1.1 準備Java開發環境 4
1.2 準備Scala開發環境 6
1.3 JISP項目 6
1.4 SISP項目 7
第2章 開始構建簡單的解釋器
2.1 Hello REPL 10
2.2 Read Print Loop 13
2.3 算術表達式 14
第3章 數值解析
3.1 回顧 21
3.2 識別數值 24
3.3 前綴表達式 28
3.4 表達式求值 29
第4章 文本解析
4.1 文本和文本字面量 50
4.2 轉義字符——在字符串中包含字符串 51
4.3 整合解釋器 57
第5章 解釋器環境
5.1 命名作用域 59
5.2 變量定義 62
5.3 “不可變”命名 70
第6章 語句塊和結構化編程
6.1 do 74
6.2 let 78
第7章 邏輯運算和比較運算
7.1 邏輯判定true?和false? 86
7.2 比較運算 95
第8章 邏輯分支
8.1 if的實現 106
8.2 cond的實現 112
第9章 定義函數
9.1 具名函數和匿名函數 120
9.2 遞歸與循環 124
9.3 靜態綁定、動態綁定與閉包 134
第10章 List和Quote
10.1 Quote 148
10.2 宏和宏編程 154
10.3 LIST 156
10.4 工具函數 158
第11章 內置函數和解釋器模塊 177
第12章 Parsec的原理和組成
12.1 狀態管理 183
12.2 算子 191
隨書代碼 225
后記 226
微型Lisp解釋器的構造與實現 節選
我是一個任性的人,急躁而缺少規劃,總是為了興趣沖動地投入大段人生。我慶幸自己生活在一個好時代,有程序員這樣有趣的工作可以做,有方便的現代生活和發達科學技術。 我做的很多事,都遠遠超出了我*初的想法。當初,我只是想學一些方便、優雅的編程語言,可以讓懶惰的我更自如地表達思考成果,并完成工作。后來,我又希望自己能夠學會一些基本的編譯器知識,包括代碼的解析技術。這兩個方向的學習把我神奇地引向了組合子。 這是一個有趣的方向。回頭看看,這個領域并沒有我*初想象的那么神奇,它可以說是一個很特定的編程模式,能漂亮地解決一些問題,但是它并不是萬能的,也有很多它不能優雅地解決的問題。 在我們那個年代非常熱門的函數式編程同樣如此,它有不小的價值,但也不是銀彈,并不比流行的編程語言更“高級”。如今我*喜歡的、*常用的編程技術,都不是“純粹的”函數式的或面向對象的,它們都是精彩的組合體。 感謝發明這些編程語言和技術的同行,他們創造了這么多有用且有趣的東西,讓我不僅僅限于日常的業務開發,更能在編程中找到樂趣,指引我思考是否有更好的工作方式。計算機科學家和天才工程師對“純粹”的追求,貢獻了很多有價值的思想,進而才有了我現在喜愛的各種工具。 年輕時,我曾幻想在學習編程的過程中建立“思想”。現在,工作二十幾年后,我甚至不確定是否還有這種想法,但是我很確定,我找到了很多樂趣。 此時此刻,我才發現完成這本書的感受是“我做了一件有趣的事”。 寫這本書時,我盡量使用樸素的語言,不帶任何情緒。但是我希望它可以給讀者帶去樂趣。這本書介紹了一個有趣的編程范式,可以通過精巧的設計,實現對復雜信息模式——尤其是文本——的分析和處理。 初學者學習了Java或Scala的語法后,可以把這本書當作補充教材。它完整地實現了一個精巧卻相對簡單的項目,可以讓讀者在不依賴額外復雜框架和技術工具的情況下,完整地體驗一個軟件項目的全過程。編寫這個解釋器需要的Parsec組合子庫也是由常規代碼構成,它簡單到我們可以在書中討論如何從零構造。 這本書也可以作為有經驗同行的一本業余讀物。我喜歡看一些有趣的手工作品,例如木制計算機、樂高積木拼出的復雜機械裝置、蔚為壯觀的多米諾骨牌等。我覺得這本書也可以算在此列——我們可以用“常規”的編程技術實現通常認為需要專業工具構建的文本(甚至任意信息“串”)分析程序。它不僅有用,而且還很有趣。 這本書的寫作靈感來自著名的Haskell教材《Write Yourself a Scheme in 48 Hours》。我在自己使用的編程語言中實現了Parsec組合子庫,然后實現了若干微型LISP解釋器。在回顧開發過程時寫了這本書。通過實現LISP解釋器講解組合子技術、介紹函數式編程的方式是從那本書里借鑒的。我不是偉大的先行者,我只是一個吟游詩人,站在前人走過的路上,努力向后來者述說沿途的風景。如果有讀者從中收獲了知識和技巧,找到了共鳴和樂趣,那就是我的榮幸了。 有幸寫完這本書,要感謝妻子多年來對我的包容和支持。我為了興趣做了太多任性的事,花了太多時間學習一些工作中不太可能用到的編程技術。 本書的編輯徐定翔老師,是我多年來選購和閱讀技術書籍時非常信任的人。因為徐老師的工作,我讀到了很多精彩的書籍,學到了很多知識。這次能夠與他合作出版這樣一本書,是我的榮幸。
微型Lisp解釋器的構造與實現 作者簡介
劉鑫 資深程序員、架構師,2000年畢業于蘭州大學數學系,從事軟件開發工作二十多年,參與過電子商務、政務、網絡游戲、互聯網服務、移動應用等多個領域的軟件項目開發。近十年來,致力于將Haskell的Parsec解釋器移植到Go、Swfit、Rust、Javascript、Python、Scala、Java等編程語言中,主要成果包括基于Scala 2.x的Jaskell Core Parsec和基于Java 8的Jasekll Parsec Java 8。這些成果均已應用于實際軟件開發,收到了良好的效果。
- >
伯納黛特,你要去哪(2021新版)
- >
隨園食單
- >
人文閱讀與收藏·良友文學叢書:一天的工作
- >
經典常談
- >
唐代進士錄
- >
有舍有得是人生
- >
名家帶你讀魯迅:朝花夕拾
- >
企鵝口袋書系列·偉大的思想20:論自然選擇(英漢雙語)