SICP - "计算机程序的结构和解释"
相同的解释会很好
有人可以解释Metalinguistic Abstraction
SICP确实推动了可以将代码和数据视为同一件事的观点.
我之前在考虑通用图灵机(UTM的输入只是程序的表示)或冯·诺伊曼架构(其中单个存储结构同时包含代码和数据)时理解了这一点,但是SICP使这个想法更加清晰.Scheme(Lisp)在这里提供了帮助,因为程序的语法与一般列表的语法完全相同,即S表达式.
一旦你拥有代码和数据的"等价",突然间很多事情变得容易了.例如,您可以编写具有不同评估方法的程序(惰性,非确定性等).以前,我可能认为这需要扩展编程语言; 实际上,我可以自己将它添加到语言中,从而允许核心语言最小化.作为另一个例子,您可以类似地实现面向对象的框架; 再次,这是我可能天真地认为需要修改语言的东西.
顺便提一下,我希望SICP更多地提到一件事:类型.在编译时进行类型检查是一件了不起的事情.面向对象编程的SICP实现没有这个好处.
我没读过那本书呢,我只是看了看视频课程,但它教会了我很多.作为一等公民的功能对我来说是令人兴奋的.执行"变量"对我来说是一件非常新鲜的事情.看完这些视频后,我现在看到JavaScript和编程一般都发生了很大的变化.
噢,我想我撒了谎,真的让我吃惊的是,+是一个功能的东西.
我认为真的很酷的是评估延迟的流。我认为有关生成素数的事情确实很整洁。就像“ PEZ”分配器一样,神奇地分配了序列中的下一个填料。
我认为关于SICP的最令人惊讶的事情是看到实际需要很少的基元来制作图灵完整的语言 - 几乎任何东西都可以从几乎没有任何东西构建.
由于我们正在讨论SICP,我将在http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/上插入视频讲座的标准插件,这是最好的介绍计算机科学你可以在20个小时内获得.