计算能力是人类大脑*让人兴奋的特性之一这个观念直接促生了与众不同的《The Little Schemer:递归与函数式的奥妙》。作者以极大的热情、幽默及易于理解的风格阐述抽象概念,为乐于探索计算本质的人们打开一扇崭新的思考之门。
《The Little Schemer:递归与函数式的奥妙》将计算作为小学和高中算术与代数知识的扩展,并加以阐述。其以递归函数的方式介绍编程,简要讨论计算机所能发挥的作用。作者通过独特的编程语言、有趣的各式食物来描述这些抽象概念。
多年来,《The Little Schemer:递归与函数式的奥妙》各个版本一直是广受欢迎的LISP教程。它还出版了法语版和日语版(现在终于有了中文版),已被广泛证明广受欢迎。
內容簡介:
本书是一本久负盛名的经典之作,两位作者Daniel P. Friedman、Matthias Felleisen在程序语言界名声显赫。全书介绍了Scheme的基本结构及其应用、Scheme的五法十诫、Continuation-Passing-Style、Partial Function、Y-Combinator、Interpreter等内容,并通过这些内容阐述了计算的一般本质。本书没有什么理论性描述,所有概念都蕴含在独特的引导式一问一答过程中,这种方式让读者对程序大师运用熟稔的程序方法来驾驭概念的能力叹为观止。 通过阅读本书,可以让读者领略递归的奥妙、函数式编程风格的魅力。阅读完毕会有一种意犹未尽的感觉。 本书适合所有程序员阅读,特别是函数式编程爱好者。好好享用!
關於作者:
Daniel Paul Friedman(生于1944)是布卢明顿印第安那大学的计算机科学教授。他重点研究编程语言,他是编程语言领域著名作家。 他的写作风格与传统图书的风格有很大不同,更吸引人,更易于让读者接受。Matthias Felleisen是计算机科学家。他在德国长大,21岁移居到美国。Matthias Felleisen在位于波士顿的美国东北大学计算机与信息科学学院任职。此前他已获得美国印第安纳大学,莱斯大学博士学位。Felleisen的课题兴趣包括编程语言,软件工具,程序设计,等等。在20世纪90年代,Felleisen推出了以对初学者教学程序设计原理,探索使用Scheme语言的PLT和TeachScheme!
卢俊祥程序员;译者,爱读书;武当二十八式太极拳。微博:@2gua。个人网站:http:www.2gua.info。知乎专栏:https:zhuanlan.zhihu.comguagua
序
本序最初出现在The Little LISPer 一书的第二、三版中。经作者许可,特在此重现。
时光回到1967年,那时我报了一门摄影入门课程。包括我在内,大多数参加该课程的同学都憧憬着早日掌握创造性的摄影知识,希望自己有朝一日能成为又一个爱德华?韦斯顿 。第一天,老师详细地列出了一长串这学期要掌握的技能点。其中一个关键技能是安塞尔?亚当斯(Ansel Adams)的区域曝光法用于预先视觉化冲印数据(最终冲印的灰度),及从景物光线强度中获取灰度。为了使用区域曝光法,还得学习曝光表用法以度量光线强度,以及通过曝光时间及显影时间来控制图像的灰度和对比度。反过来,这些技能又需要诸如胶片安装、显影、冲印和药水调制等更加底层的技能来支持。你必须学会将感光材料的显影过程程序化,以便在日后处理中获得一致的效果。第一次实验课是设法识别滑滑的显影剂和刺鼻的定影液。
而要让构图更具创造性,则必须首先具备驾驭工具的能力。甚至在能力具备之前都不要去构思如何组织一张好照片。在工程领域,如同其他创造性艺术,必须学会分析以支持我们在各方面的努力。那些有关钢材、扬尘以及大量数学方法等方面的知识,是计算构筑物属性时需要的,缺失了这些知识就无法构建美观而实用的桥梁。同样,未深入理解如何预先视觉化编程生成的工序,则无法构造出卓越的计算机系统。
一些摄影师选择810的黑白底片 ,而其他一些则选择35mm的底片 。不同片幅类型的底片各有其优缺点。跟摄影一样,编程也需要选择称心的语言。魔法编程语言Lisp属于崇尚自由和灵活风格的程序员!Lisp最初的设想是作为理论辅助工具,用于递归理论及符号代数。时至今日,Lisp已发展成为一个软件开发工具的大家族,魅力独特、功能强大且异常灵活,为软件系统的快速原型设计提供了全方位支持。与其他编程语言一样,技术社区开发出庞大的抽象功能库,Lisp则将这些功能连接起来。在Lisp的世界里,程序是一等数据,以参数方式传递,以值的方式返回,并存储在数据结构中。这种灵活性极具价值,而最重要的是,其为形式化、命名以及精简惯用法工程设计中必不可少的常用使用模式,提供了机制保障。此外,Lisp程序能够轻松操纵Lisp程序的表述一个开发庞大结构的程序综合 及分析工具(如交叉引用)的支持特性。
The Little LISPer一书以独特方式阐述了Lisp创造性编程哲学里的精髓技法。全书借助大量实际训练掌握构建递归过程及操纵递归数据结构等技能所必要的实践,相当巧妙地将知识组织起来,让人丝毫感受不到学习的压力。The Little LISPer一书对Lisp学习者的意义,不亚于哈农 手指练习或车尔尼 钢琴研究对于钢琴学生的意义。