关键字:Scheme,递归,编程
推荐:★★★
难度:★
豆瓣链接:https://book.douban.com/subject/1632977/
想想这本书已经是很久以前读的了。
它的内容已经想不起来了,但是行文特点还是记忆犹新。
还好这本书还没有中译版的,不然又成了中西文化杂交的产物了,不伦不类。
其实,读了不少原版书以后,就慢慢感觉到了一种套路。
中文书,偏重实用,讲述某个先进的工具如何使用。
原版书(American),偏重思考和总结。
这可能是对世界的态度不同所致,各有利弊。
择其善者而从之,其不善者而改之。
科学方法,是从国外传进来了,理解他们的思维习惯很有必要。
观察,假设,预测,检验,重复,科学和工作无不沿着这一套路进行。
本书简化了这个流程,全书采用问答=>定理的方式进行。
就像一本薄薄的Q&A手册似的。
本书在难度上属于入门级,并没有介绍scheme一些难以理解的特性。
比如continuation和macro。
所以,任何喜欢学习的人,无论基础怎样只要足够耐心都可以读完。
但这并不是说它是简单的,你一定知道易学和简单完全是两码事。
学会用递归解决问题,是学习scheme的第一步,也是学习函数式编程的第一步。
个人以为,这是一个把某个问题转换为更小规模问题的过程。
而其他语言中,人们倾向于直接思考问题的迭代解决思路。
其实,从更高的角度来说,递归像是在归约问题,迭代像是在从头开始。
所以,用递归提供解决思路,然后再转换为迭代实现,是很好的一种思考方法。
另外,介绍scheme语言特性的书真的很少,因为人们只是把scheme当做工具来使用。
更有一些人认为scheme没有语法。
怎么说呢,scheme相当于曲别针,虽然简单,但是内涵丰富,是智慧的结晶。
你不觉得曲别针是天才之作吗?
好吧,你还是学习“大型”语言吧。