-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

The Little Schemer:遞歸與函數式的奧妙

( 簡體 字)
作者:盧俊祥類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社The Little Schemer:遞歸與函數式的奧妙 3dWoo書號: 47086
詢問書籍請說出此書號!

缺書
NT售價: 325

出版日:6/1/2017
頁數:212
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121317255
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

譯 者 序
進入互聯網、移動互聯網時代,軟件開發方面的好書層出不窮,絕大部分是技術新、方法新。然而,本書很獨特,其出版于1995年,至今已有二十余年,而其前身The Little LISPer則出版于1987年,堪稱“古董”!
為什么一本老書還有出版的必要?因為“經典”!因為其內容揭示了計算的一般本質,其價值歷經時光的檢驗而含金量不減!其實本書已不用過多著墨加以介紹,其在廣大程序員心中早已豎起了一座豐碑。
我酷愛編程,也接觸過許多函數式編程語言,但沒有任何一種編程語言能夠像LISP那樣擅于通過直接和簡單的方式表達編程思維,不熟悉者迷惑于它的括號,而登堂入室者則能領略其精髓,最終游刃有余。本書只借助了Scheme編程語言的若干基礎元件,就演繹出了各種問題的解決方式——這就是最佳詮釋!
也許你在工作中不會用到Scheme,但是本書貴在作者深厚的編程積累,并能將豐富的經驗充分發揮到本書內容中。全書的每一步都不顯山露水,但最終驀然回首時,輕舟已過萬重山。探索計算本質的過程竟然如此巧妙,不禁讓人拍案叫絕——手中用的是Scheme的招式,而心中洞察到的卻是計算的內涵!
當其他編程書籍在討論大量Hack技巧、各種設計模式的運用、形形色色的語法糖變化的時候,本書無疑就像一部另辟蹊徑的武林秘籍,能大大增強習練者的內功。
作為一名有追求的程序員,這本書就是為你準備的。同時非常期待本書的姊妹篇The Seasoned Schemer。
參與本書翻譯工作的還有林長瑞、吳桐、朱建寶、周榮華、吳勝華、葉銘輝、李禧強、姚建峰、鄭秀玲。
感謝我的妻子和孩子,他們給了我很大的支持,小寶貝還給我帶來了許許多多的樂趣。同時還要感謝本書編輯張春雨,在他的鼓勵下,我的翻譯過程充滿愉悅。

盧俊祥
2017年6月

本序最初出現在The Little LISPer 一書的第二、三版中。經作者許可,特在此重現。
時光回到1967年,那時我報了一門攝影入門課程。包括我在內,大多數參加該課程的同學都憧憬著早日掌握創造性的攝影知識,希望自己有朝一日能成為又一個愛德華?韋斯頓 。第一天,老師詳細地列出了一長串這學期要掌握的技能點。其中一個關鍵技能是安塞爾?亞當斯(Ansel Adams)的“區域曝光法”——用于預先視覺化沖印數據(最終沖印的灰度),及從景物光線強度中獲取灰度。為了使用區域曝光法,還得學習曝光表用法以度量光線強度,以及通過曝光時間及顯影時間來控制圖像的灰度和對比度。反過來,這些技能又需要諸如膠片安裝、顯影、沖印和藥水調制等更加底層的技能來支持。你必須學會將感光材料的顯影過程程序化,以便在日后處理中獲得一致的效果。第一次實驗課是設法識別滑滑的顯影劑和刺鼻的定影液。
而要讓構圖更具創造性,則必須首先具備駕馭工具的能力。甚至在能力具備之前都不要去構思如何組織一張好照片。在工程領域,如同其他創造性藝術,必須學會分析以支持我們在各方面的努力。那些有關鋼材、揚塵以及大量數學方法等方面的知識,是計算構筑物屬性時需要的,缺失了這些知識就無法構建美觀而實用的橋梁。同樣,未深入理解如何“預先視覺化”編程生成的工序,則無法構造出卓越的計算機系統。
一些攝影師選擇8×10的黑白底片 ,而其他一些則選擇35mm的底片 。不同片幅類型的底片各有其優缺點。跟攝影一樣,編程也需要選擇稱心的語言。魔法編程語言Lisp屬于崇尚自由和靈活風格的程序員!Lisp最初的設想是作為理論輔助工具,用于遞歸理論及符號代數。時至今日,Lisp已發展成為一個軟件開發工具的大家族,魅力獨特、功能強大且異常靈活,為軟件系統的快速原型設計提供了全方位支持。與其他編程語言一樣,技術社區開發出龐大的抽象功能庫,Lisp則將這些功能連接起來。在Lisp的世界里,程序是一等數據,以參數方式傳遞,以值的方式返回,并存儲在數據結構中。這種靈活性極具價值,而最重要的是,其為形式化、命名以及精簡慣用法——工程設計中必不可少的常用使用模式,提供了機制保障。此外,Lisp程序能夠輕松操縱Lisp程序的表述——一個開發龐大結構的程序綜合 及分析工具(如交叉引用)的支持特性。
The Little LISPer一書以獨特方式闡述了Lisp創造性編程哲學里的精髓技法。全書借助大量實際訓練——掌握構建遞歸過程及操縱遞歸數據結構等技能所必要的實踐,相當巧妙地將知識組織起來,讓人絲毫感受不到學習的壓力。The Little LISPer一書對Lisp學習者的意義,不亞于哈農 手指練習或車爾尼 鋼琴研究對于鋼琴學生的意義。


杰拉德?杰伊?薩斯曼
劍橋(美國,馬薩諸塞州)


前  言
為了給Scheme二十周年慶祝生日,我們第三次修訂了The Little LISPer,這次我們把書名改為更貼切的The Little Schemer,并增寫了姊妹篇:The Seasoned Schemer。
程序接受數據并產生數據。程序設計需要徹底理解數據;好的程序會反映出所處理數據的結構。大多數的數據集合,并由此延伸到大多數程序,都是可遞歸表示的。遞歸是依據自身定義對象或解決問題的方法。
本書的目標是引導讀者學習遞歸思維模式。我們首先需要確定與遞歸概念搭檔的語言。這里有三種相對明確的選擇:自然語言,如英語;形式化的數學語言;或者是編程語言。自然語言易產生歧義、不嚴謹且有時候拖沓冗長。這可能在人們日常交流時沒什么問題,但對于簡明闡述遞歸這樣的嚴謹概念,這些特征就容易出問題。數學語言則與自然語言相反:其僅通過一些符號就能表述強大的形式化概念。但很不幸,除非接受過數學專業訓練,否則一般人理解不了數學語言。技術與數學的結合帶給了我們第三種選擇—幾乎是最理想的選擇:編程語言。我們相信編程語言是表達遞歸概念的最佳方式。編程語言像數學那樣,具備將形式化含義賦予一系列符號的能力。但又不同于數學,可以直接體驗編程語言—可以運行本書中的程序,觀察其行為,然后修改它,再看看修改效果。
Scheme大概是用來講解遞歸概念的最佳編程語言。符號化是Scheme的天然特質—程序員不必過多考慮所用語言符號與計算機表述形式之間的關聯。遞歸是Scheme的天然計算機制;主要的Scheme編程任務是創建(可能的)遞歸定義。Scheme程序主要用于交互—程序員可以立即運行代碼并觀察結果。此外,至本書結束時,我們收獲的最大感悟應該是:Scheme程序結構與程序所操縱數據之間是直接對應的 。
雖然Scheme程序可以以一種非常形式化的方式來描述,但理解Scheme并不需要特別的數學知識。實際上,本書基于一個Scheme兩周“速成”介紹課程的講義整理而成,該課程針對那些沒有編程經驗且不喜歡數學的學生。這些學生中有許多人正準備從事公共事務方面的工作。我們的信條是:用Scheme遞歸地編寫程序本質上是簡單的模式識別(Pattern Recognition)。由于我們唯一關心的是遞歸編程,因此我們僅在Scheme的幾個招式上下功夫:car、cdr、cons、eq?、null?、zero?、add1、sub1、number?、and、or、quote、lambda、define以及cond。事實上,我們選擇了完美的Scheme編程語言—我們的程序才能如此簡潔。
The Little Schemer和The Seasoned Schemer并未涉足應用編程領域,但掌握書中的概念則為你打開了理解計算本質的大門。
閱讀須知
你應該具備文字閱讀能力,識得數字,還要會數數。
致謝
我們要感謝眾多貢獻者及他們為本書第二、三版提供的幫助。感謝Bruce Duba、Kent Dybvig、Chris Haynes、Eugene Kohibecker、Richard Salter、George Springer、Mitch Wand和David S. Wise的無數次討論,為全書內容構思提供了思路。感謝Ghassan Abbas、Charles Baker、David Boyer、Mike Dunn、Terry Falkenberg、Rob Friedman、John Gateley、Mayer Goldberg、Iqbal Khan、Julia Lawall、Jon Mendelsohn、John Nienart、Jeffrey D. Perotti、Ed Robertson、Anne Shpuntoff、Erich Smythe、Guy Steele、Todd Stein和Larry Weisselberg在草稿階段提供了許多重要意見。尤其感謝Bob Filman反復審核并提出深刻而尖銳的批評。最后,感謝Nancy Garrett、Peg Fletcher和Bob Filman為設計與TeX排版做出的貢獻。
最新的第4版受惠于Dorai Sitaram的Scheme排版程序—無比智能的SLATEX。Kent Dybvig的Chez Scheme讓Scheme編程變得非常愉快。真誠感謝Shelaswau Bushnell、Richard Cobbe、David Combs、Peter Drake、Kent Dybvig、Rob Friedman、Steve Ganz、Chris Haynes、Erik Hilsdale、Eugene Kohlbecker、Shriram Krishnamurthi、Julia Lawall、Suzanne Menzel Collin McCurdy、John Nienart、Jon Rossie、Jonathan Sobel、George Springer、Guy Steele、John David Stone、Vikram Subramaniam、Mitch Wand以及Melissa Wingard-Phillips的批評與建議。
讀者指南
閱讀本書切勿走馬觀花、一味圖快。請仔細閱讀,金玉珠璣分散在書中各個角落。本書很重要,重要的書至少讀三遍。閱讀時做到一步一個腳印。在未完全理解一章之前,不要嘗試跳到下一章。問題按難度遞增排序;解決不了早先的問題,后面的問題則將更難回答。
本書以對話方式組織內容,涉及Scheme程序的樣例趣談時,對話將在你(讀者)和我們(作者)之間進行。請盡可能動手試驗閱讀到的樣例代碼。獲取Scheme是一件很容易的事。盡管在不同Scheme實現之間存在微小語法差異(主要是特殊名稱和特定函數方面的拼寫),但Scheme語法基本上是一致的。接下來要玩轉Scheme,還得定義本書引入的atom?、sub1和add1:

(define atom?
(lambda (x)
(and (not (pair? x)) (not (null? x)))))

試一試(atom? (quote ())),看看其是否返回#f,以驗證Scheme正確定義了atom?。實際上,該概念同樣適用于諸如Common Lisp這樣的現代Lisp方言。在Lisp中要以函數方式定義atom?:

(defun atom? (x)
(not (listp x)))

此外,你可能還需要對書中的程序進行稍加修改。典型的,只是做個別變化。框格注釋 會給出程序試驗的建議。“S:”打頭的注釋代表Scheme相關內容,“L:”打頭的注釋代表Common Lisp相關內容。
第4章我們會通過3個運算函數:add1、sub1和zero?來開發一個基本的算術程序。由于Scheme并未提供add1和sub1,因此需要借助內建的加減基本元件來定義它們。進一步的,為了避免沖突,程序的加減法必須以不同的符號:+和—來分別實現 。
本書不涉及任何形式化定義。我們相信你可以構建自己的定義,并因而記住及理解這些定義,這樣的效果比我們一口口喂給你吃要好。但在你出山之前,需確保自己徹底理解了Scheme的五法十誡 。學習Scheme的鑰匙是“模式識別”。Scheme十誡心法指出了具體模式。在本書的早期,一些概念出于簡單起見講解得比較淺顯;但隨著內容的深入,將適時展開描述。你應該也知道,雖然全書講的是Scheme,但Scheme自身應用的廣泛性,可不是我們用介紹性文字就能夠清晰闡述的。在掌握了本書內容之后,就可以著手閱讀與理解更加全面且高級的其他Scheme書籍了。
我們的大量示例都跟食物有關,這里有兩個原因。首先,食物比抽象符號更形象(你如果正在節食,顯然不適合讀這本書,開玩笑)。我們希望各種食物能夠幫助你理解示例及相關概念。其次,我們打算亂一下你的心智。我們知道學習之路總是充滿各種沮喪,一點點障礙將有助你保持清醒。
你可以整裝待發了。祝你好運!希望你好好享受荊棘旅程中的激情挑戰。

祝你胃口大開!


丹尼爾?弗里德曼
馬提亞?費雷森
內容簡介:

本書是一本久負盛名的經典之作,兩位作者Daniel P. Friedman、Matthias Felleisen在程序語言界名聲顯赫。全書介紹了Scheme的基本結構及其應用、Scheme的五法十誡、Continuation-Passing-Style、Partial Function、Y-Combinator、Interpreter等內容,并通過這些內容闡述了計算的一般本質。本書沒有什么理論性描述,所有概念都蘊含在獨特的引導式一問一答過程中,這種方式讓讀者對程序大師運用熟稔的程序方法來駕馭概念的能力嘆為觀止。
通過閱讀本書,可以讓讀者領略遞歸的奧妙、函數式編程風格的魅力。閱讀完畢會有一種意猶未盡的感覺。
本書適合所有程序員閱讀,特別是函數式編程愛好者。好好享用!

目錄:

第1章 玩具總動員 2
第2章 處理,處理,反復處理…… 14
第3章 用cons構筑恢宏 32
第4章 數字游戲 58
第5章 我的天!都是星星 80
第6章 如影隨形 96
第7章 朋友及關系 110
第8章 Lambda終結者 124
第9章 ……周而復始…… 148
第10章 值是什么 174
幕間休息 192
索引 194
序: