SICP笔记 - 抽象的艺术 Aug 24, 2018 0. Overview 记得大二学C++的时候,老师对我们说面向对象最重要的就三点,抽象、继承与封装。但其实抽象却不是面向对象编程中特有的概念,抽象是编程世界最重要的概念之一,因为编程的过程其实就是使用编程语言描述现实世界的过程,而在这个过程中,最重要的过程之一就是对现实世界进行抽象,将其变成一个个抽象的模型。 1....
SICP笔记 - 递归与迭代 Aug 20, 2018 这篇文章会很简短,因为我只准备谈一个简单的问题,就是递归与迭代之间的转换技巧。在我看了80页SICP之后,我觉得我有必要记下这个技巧,很难想象我从前从来没有总结过这个技巧,只是模糊地思考。 (define (factorial n) (if (= n 1) 1 (* n (factorial (- n...
本文介绍了浏览器内置的 Intl.Segmenter API 的用法,以及 nango、docker-rollout、Web LLM 等工具和 SICP JavaScript 版、WebGPU 开发教程等资源。此外,还分享了语录和历史上的本周。
##函数式入门圣经——王垠力荐《The Little Schemer》 除了在知乎看到过一两次,首次正式得知《The Little Schemer》此书则是来自王垠的博客: Dan Friedman 是 Indiana 大学的教授,程序语言领域的创始人之一。他主要的著作《The Little Schemer》(前身叫《The Little Lisper》)...
以前学习过 MIT 6.00.1X, 也可以算是 SICP 的 Python 版. 在最近的开始的 SICP 学习中, 发现对 scheme 语法几乎为零, 用到再学的思路遇到了补上坎. 经常为了研究语法而打断思路. 所以工欲善其事, 必先利其器. 现在先暂停 SICP 的学习. 在网上可以很方便地找到这样一些关于 SICP 的有用资源, 在这里做一下罗列. SICP 解题集:...
目前从 1.2 开始做笔记, 之前的可能会, 也可能不会补上. 1.2 1.2.1 线性的递归和迭代 在各种常见语言的大部分实现的设计中, 对于任何递归过程的解释, 所消耗的存储量总与过程调用 数目成正比, 即使它所描述的计算过程从原理上来看是迭代的. 大部分语言中, 书写形式是递归, 但是处理逻辑是迭代的. 练习 1.9 #...
经过第四章元语言抽象的洗礼,我们已经能够深谙编译器内部的原理,核心就是eval-apply循环,只是说基于这个核心可以有各种延伸,像延迟求值、amb 不定选择求值、逻辑求值等等,有了这层的理解,我们应该能够透过各种花哨的语法糖,看出其本质来,像 Node.js 中的 Promise、 Python 中的 coroutine,都是 continuation 的一种应用而已。
本书的前三章分别讨论了数据抽象、过程抽象、模块化三种程序设计的技术,这些都是编程的问题,一直采用的是 Scheme 作为编程语言。如果遇到的问题更复杂,或者需要解决某领域的大量问题,有可能发现现实可用的语言(Lisp,或其他)都不够满意或不够方便,因此第四章主要就是讲述如何设计和实现一门新语言。
历时三个月,终于把第三章看完了。这三月发生了太多的意外,本文不打算说了,后面在写 2015 年终总结时再来谈谈这三个月的事情。如今回过头来看看第三章的内容,好像也不怎么难,只是内容涉及的面稍微广一些而已,下面来回顾总结一下第三章。
到今天为止终于把第二章看完了,相比于第一章,感觉难点少了些,这章主要是通过大量例子(主要有图形语言、区间运算、符号求导、集合的表示、通用型算术运算)来熟悉构造数据抽象的相关技能。下面来回顾总结一下第二章。
最近两个月除了工作之外,业余时间一直在研习sicp这本经典书。关于这本书的讨论有很多,像老赵写过SICP的书托,我觉得与其讨论这本书有没有读的价值,不如花上些,随手翻翻,如果感兴趣,就读下去;否则直接忽略即可。计算机理论发展到了现在,有太多太多经典需要我们去读了,恐怕我们这一辈子都无法读完,为什么不找你感兴趣的来读呢? 我这次建了个Github库来记录课后每一道习题与平时的所感所悟,希望对后...
SICP第二章里提到了一种用来画图的Lisp方言,用来演示数据抽象和闭包的表达能力(见http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-15.html#%_sec_2.2.4)。 最近尝试了下,发现soegaard同学已经在PLT...
完成下面两步后,将自动完成登录并继续当前操作。