sicp专题

sicp每日一题[1.38]

Exercise 1.38 In 1737, the Swiss mathematician Leonhard Euler published a memoir D e F r a c t i o n i b u s C o n t i n u i s De\ Fractionibus\ Continuis De Fractionibus Continuis, which included

资源向导之 SICP

Structure and interpretation of computer programs 课程主页: http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ PDF 英文版本的书籍:https://github.com/penguiner/sic

SICP学习笔记——丘奇计数与“数”的本质【脑洞大开】

丘奇计数与“数”的本质 学习SICP有一段时间了,对Lambda表达式以及过程为参数等特性的强大并没有概念,直到看到习题2.6中提到的丘奇计数(Church counting),才有种脑洞大开,恍然大悟的赶脚,便迫不及待的和大家分享一下——尼玛,原来“数”还可以这样玩! 首先,题目抛砖引玉,丢出了两个定义,一个是0的定义:   (define zero(lambda (f)(lambda (x)

SICP学习笔记之一迭代与递归(1)

SICP学习笔记之一迭代与递归(1)   最近开始学学习《SICP(计算机程序的构造和解释)》,不愧是当年MIT的教材,全本书都是干货,每个章节的每个小节都值得认真推敲,仔细思考,自我感觉收获很大。因此我把自己的学习过程通过系列博客分享给大家,望多多交流。   递归与迭代,是计算机算法的重要组成部分,我们都懂得简单的二叉树遍历与二分查找,但是很少有人深入思考二者之间的异同以及关系。这第一篇博客,

计算机程序的构造和解释(SICP)

计算机程序的构造和解释:原书第2版 又名: Structure and Interpretation of Computer Programs,Second Edition 作者: [美]艾伯森等 译者: 裘宗燕 ISBN: 9787111135104 页数: 473 定价: 45.0 出版社: 机械工业出版社 装帧: 平装 出版年: 2004-2-1 简介

《计算机程序的构造和解释》-SICP(2):用高阶函数抽象

;下面的问题是,我们之前是通过不断猜测点来找到一个数的平方根的。现在我们学了不定点fixed-point,我们可以让它来找平方根,其实就是x^2=y,x=y/x,转化成求f(x)=y/x这个函数的不动点。怎么做呢?;先写好fixed-point函数:(define tolerance 0.00001)(define (fixed-point f first-guess)(define (clo

《计算机程序的构造和解释》-SICP(1):函数式编程思维杂谈

目前sicp看到第三章节,前两章完成了90%的习题,第三章看了一半。这篇文章主要是些杂谈,可能会有些抽象。后面的系列文章会更具体的讲解。SICP这个写作项目,大概会持续至少半年。 先讲讲函数式思维和面向对象,软件设计的一些关系 这本书其实是讲,当一个系统越来越复杂时,怎样管理系统的复杂度。有三个方法,抽象,组合,DSL(领域特定语言)。抽象和组合可以更好地封装代码。让下层的实现细节不会影响到上

【小黑送书—第十一期】>>如何阅读“计算机界三大神书”之一 ——SICP(文末送书)

《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,简记为SICP)是MIT的基础课教材,出版后引起计算机教育界的广泛关注,对推动全世界大学计算机科学技术教育的发展和成熟产生了很大影响。这本书的第1版于1984年出版,第2版于1996年出版,至今已被全世界100多所大学采用为教材,其中包括斯坦福大学、普林斯顿大学、牛津

书籍强烈推荐:“计算机界三大神书”之一 ——SICP

文章目录 1. 书籍推荐2. 粉丝福利3. 自主购买 1. 书籍推荐   《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,简记为 SICP)是MIT的基础课教材,出版后引起计算机教育界的广泛关注,对推动全世界大学计算机科学技术教育的发展和成熟产生了很大影响。这本书的第1版于1984年出版,第2版于19

SICP解读指南:深度阅读 “计算机领域三巨头” 之一(文末送书)

🌈个人主页:聆风吟_ 🔥系列专栏:Linux实践室、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 书籍介绍1.1 SICP侧重点1.2 SICP章节介绍 二. 书籍推荐2.1 书籍介绍2.2 推荐理由2.3 粉丝福利 参与活动方式文末详见。 📋前言 《计算机程序的构造和解释》(Structure and Interpreta

如何阅读“计算机界三大计算思维神书”之一 ——SICP

《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,简记为SICP)是MIT的基础课教材,出版后引起计算机教育界的广泛关注,对推动全世界大学计算机科学技术教育的发展和成熟产生了很大影响。这本书的第1版于1984年出版,第2版于1996年出版,至今已被全世界100多所大学采用为教材,其中包括斯坦福大学、普林斯顿大学、牛津大学

SICP学习 - 序

1.三类需要关注的对象:人的大脑、计算机程序的集合以及计算机本身。 2.惯用法 3.研究和构造它们(程序),能使人更加深刻的理解与任何模型的程序设计有关的程序组织问题。计算机本身也可以这样模拟。请想一想,最新的物理开关元件在量子力学里建模,而量子力学又由一组微分方程描述,微分方程的细节行为可以由数值去近似,这种数值又由计算机程序所描述,计算机程序的组成。。。。。。

NUS CS1101S:SICP JavaScript 描述:前言、序言和致谢

前言 原文:Foreword 译者:飞龙 协议:CC BY-NC-SA 4.0 我有幸在我还是学生的时候见到了了不起的 Alan Perlis,并和他交谈了几次。他和我共同深爱和尊重两种非常不同的编程语言:Lisp 和 APL。跟随他的脚步是一项艰巨的任务,尽管他开辟了一条优秀的道路。尽管如此,我想重新审视他在这本书的原始前言中所做的一条评论(请阅读他的前言,它紧随在这个前言之后,然后再

NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算

原文:5 Computing with Register Machines 译者:飞龙 协议:CC BY-NC-SA 4.0 我的目标是表明天堂机器不是一种神圣的生命体,而是一种钟表(相信钟表有灵魂属性的人将制造者的荣耀归功于作品),因为几乎所有多种运动都是由一种最简单和物质力量引起的,就像钟表的所有运动都是由单一重力引起的。 ——约翰内斯·开普勒(致赫尔瓦特·冯·霍恩堡的信,1605

NUS CS1101S:SICP JavaScript 描述:三、模块化、对象和状态

原文:3 Modularity, Objects, and State 译者:飞龙 协议:CC BY-NC-SA 4.0 变化中安宁 (即使它在变化,它仍然保持不变。) ——赫拉克利特 变化越大,越是相同。 ——阿方斯·卡尔 前面的章节介绍了构成程序的基本元素。我们看到了原始函数和原始数据是如何组合成复合实体的,我们也了解到抽象对于帮助我们应对大型系统的复杂性是至关重要的。

NUS CS1101S:SICP JavaScript 描述:一、使用函数构建抽象

原文:1 Building Abstractions with Functions 译者:飞龙 协议:CC BY-NC-SA 4.0 心灵的行为,其中它对简单的想法施加其力量,主要有以下三种:1.将几个简单的想法组合成一个复合的想法,从而形成所有复杂的想法。2.第二个是将两个想法,无论是简单的还是复杂的,放在一起,并将它们放在一起,以便一次看到它们,而不将它们合并成一个,从而获得它们所有

SICP 笔记 Lec2b Compound Data Part 3 Part 4

Lec2b 复合数据Compound Data Part 3 41" - 56" 从有理数类比到用二维坐标来表示点的位置,而两个点即可表示一个线(向量)。 1. 引入Closure(闭包)的概念 我的理解: 所有的object可以被“完整”地封装,作为其他object的一部分。这个过程可以无穷无尽地进行下去,其所有的性质不会损耗。 即“道生一,一生二,二生三,三生万物”。 (如fortan就

介绍《SICP读书笔记》

对SICP - 《Structure and Interpretation of Computer Programs》早有耳闻,但是总认为此书老旧,没有学习的价值,现在回想起来自己很是幼稚。每个人在知识面前应该保持足够的谦卑,此书评价这么高说明其中的内容定有学习的价值。回想刘未鹏在自己的博客中曾经提到基于比较的排序与信息论之间存在关系时,发现高德纳前辈在其《计算机程序设计的艺术》一书中早就云淡风轻

SICP学习笔记及题解—构造过程抽象(三)

主要内容 高阶过程:以过程为参数和/或返回值的过程 lambda 表达式 let 表达式 用过程作为解决问题的通用方法 求函数的 0 点 求函数的不动点 返回过程值 过程是语言里的一等公民 (first-class object) 1.3.1高阶过程 过程是抽象,一个过程描述了一种对数据的复合操作,如求立方过程:(define (cube x) (* x x x

sicp 习题2.32

这题真的不会 参考了一下别人的: (define (subsets s)(if (null? s)(list null)(let ((rest (subsets (cdr s))))(append rest (map (lambda(x) (cons (car s) x)) rest)))))和换零钱问题的思路是一样的,对于一个集合的所有子集的集合,可以分为两部分,含有第一个元素和不含第一个元素

sicp 习题2.31

(define (square-tree tree) (tree-map square tree))(define (tree-map square tree)(map (lambda (tree)(if (pair? tree)(tree-map square tree)(square tree)))tree))(define square (lambda (x) (* x x)))

sicp 习题2.30

(define (square-tree lst)(cond ((null? lst) nil)((not (pair? lst)) (square lst))(else (cons (square-tree (car lst)) (square-tree (cdr lst))))))(define (square x) (* x x)) run: > (square-tree (list

sicp 习题2.27

(define x (list (list 1 2) (list 3 4))) 上面的list 原来其实就是一个二叉树,但是初次学习,看了40分钟竟然也没有意识到。 最后还是看了看题解,二叉树的遍历而已。  lisp的一个表几乎就可以表示许多数据结构,链表,二叉树,甚至图。 这和其他语言真的很不一样。 下面是代码: #lang planet neil/sicp(define x (

sicp 习题2.24 2.25

它的盒子图形如下: (1 (2 (3 4))) ((2 (3 4)))[*]---------------> [*]| || |v v (2 (3 4)) ((3 4))1 [*]---------------> [*

sicp 习题 2.23

#lang planet neil/sicp(define lst (list 57 321 88))(define thing (lambda (x) (newline) (display x)))(define (for-each thing lst)(cond ((not (null? lst))(thing (car lst)) (for-e

sicp 习题2.22

Louis 的两种方法都不对,第一种方法list 的顺序反了,第二种方法最后构造出的是一个表头为空,后面是值的序对。  list 应该表头就是第一个元素。 正确的迭代方法: (define (square-list items)(define (iter things answer)(if (null? things)(reverse answer) ; change 当最后迭代