唯一值得反复阅读的计算机科学书籍?

2024-11-16

作者推荐了一本他认为是计算机科学领域开创性著作的书籍——《计算机程序的构造和解释》(SICP)。这本书深刻地影响了他的职业生涯和研究兴趣。SICP的特别之处在于,它以编程的核心元素为基础,探讨了广泛的主题,包括lambda抽象、高阶计算、复杂数据结构、模块化、流、惰性求值、解释器和编译器构造等等。此外,书中将所有概念都放在Scheme语言框架内进行讲解,使各个概念之间能够相互联系,层层递进。作者还强调了SICP对于计算机科学本质的清晰理解,即将其视为一种程序化的认识论,关注“如何做”而非“是什么”。最后,作者认为SICP经受住了时间的考验,至今仍然具有很高的参考价值。

阅读更多
未分类 SICP

C++ 模板宏编程与 Lisp 宏的比较

2024-11-16

本文比较了 C++ 模板宏编程和 Lisp 宏。C++ 模板主要用于生成类型的类版本,也可用于在编译时进行值计算,例如计算阶乘。然而,模板的使用受到限制,其本质上是一个函数式编程子集,且模板语言与普通 C++ 代码的编写方式差异很大。相比之下,Lisp 宏功能更强大,可以像普通函数一样访问整个语言,并且可以对语法进行抽象,扩展语言本身。Lisp 宏的编写方式也更接近普通 Lisp 代码,更容易理解和使用。

阅读更多
未分类 宏编程

我对 SETF 的理解有误

2024-07-29

本文作者反思了自己对 Lisp 语言中 SETF 宏的错误理解。作者最初认为 SETF 的第一个参数是一个定位表达式,返回要更新的位置,第二个参数是新的值。但实际上,SETF 是一个宏,它在编译时查看其第一个参数的结构,并使用它来分派给一个方法。作者详细解释了 SETF 的工作原理,并提供了一些例子说明其灵活性。最后,作者得出结论:SETF 是宏、合成函数名和泛型函数的高度结构化使用,展示了 Lisp 语言的强大功能。

阅读更多
未分类 SETF