如何评价或者学习SICP《计算机程序的构造和解释》?
其实很多时候所谓醍醐灌顶只是看到了他人眼中的世界。 以前每次看东西有这种感觉的时候总会想着“要是能早点看到这个该有多好，该少走多少弯路”，但反过来想想，它并没有给我的知识以爆发性的增长，只是给了我另一个角度。如果我没有之前的积累，接触到它的时候恐怕也不会有震撼的感觉。 言归正传，SICP确实称得上是一本好书，但其重要程度我觉得就见仁见智了。 还记得第一次读的时候是找师兄借的，那时候只会C++面向对象+过程式的那套东西，对于所谓函数式编程之类的是一窍不通。结果读起来有一种莫名其妙的感觉，没翻多少页就读不下去了（甚至连scheme的工具链都懒得装一下）。现在回想起来也情有可原，毕竟书里的一切描述都给人一种理所应当的感觉，就像抄数学题答案时看到“显然”二字时一样难受。 在又写了几年代码之后，我逐渐对函数式编程有了一些了解，也开始深入学习PL的知识。这个阶段的我就像发现了新大陆，对各种编程语言的认识也有了质的飞跃。 一次偶然的机会，我在公司的书架上看到了一本SICP。抱着玩味的心态我又重新翻了翻目录，却突然发现自己还挺想看这本书的。于是找了个时间，把几个最感兴趣的章节读了读，瞬间有了一种醍醐灌顶的感觉。 这次我倒是没有想着“要是早点读到就好了”，因为我很早以前就读过了，然而那时的我根本读不下去… 仔细想想，其实这次读了SICP之后我也没有获得新的知识，兴奋的原因是自己在学习过程中领悟出来的东西被形式化的写在了纸面上。这对我来说更像是一个总结，而非是成长。 SICP是典型的只讲是什么，不讲为什么的书。当你有结论之前，你读它只能知道结论是什么，当你得出结论后，你读它只能确认自己的结论是有效的，并且已经有人给出了相对严肃的定义。 所以我想说SICP是一本好书，但并非是一本必须的书。至于醍醐灌顶，增加的只是知识的广度，而知识的广度最大的作用在于降低与他人交流的成本。踏踏实实一步一个脚印才是最实在的。