gcd(206, 40) -> gcd(40, 6) -> gcd(6, 4) -> gcd(4,2)->gcd(2,0) 总共4次递归调用,每次递归做一次取余数运算。
昨天晚上进行了第一次直播,效果不是很好,一方面可能是准备不足,ppt 内容上下文衔接不够;另一方面是没有定位好受众人群,对于没有看过 SICP 的同学来说可能不知道我再说什么,离我的初衷相差甚远 不过我觉得也还行
他的推荐词说: SICP是一本无论如何都应该去仔细阅读的书。 其实,在2013年,我还在ThoughtWorks时,就曾经和同事一起整理了一份ThoughtWorks读书雷达,在编码实践象限中推荐了SICP。 有人不无夸张但相当在理地说:自SICP以降,无并发的编程没有任何新鲜问题;如果你觉得自己有了新发现,要么是SICP已经写过只是你不知道,要么是你想错了。 这一段是熊节的推荐。 ——于是,我买了中文版的SICP,却从来没有翻开它;我在GitBook下载了LFE(Lisp Flavored Erlang)版本的SICP,却从来不曾点开它。我将它藏起来了,貌似珍藏,实则逃避。 有多少会熟练编写C++、Java、C#、Scala、JavaScript、Ruby、Python语言的人,又读过SICP呢?
大家好,又见面了,我是全栈君 SICP 2.15 是接着 题目 2.14 的, 题目 2.14中提到了Alyssa设计的区间计算模块在并联电阻计算时会出现故障,这个问题是Lem发现的。
本章节将介绍有关计算过程(computational process)的知识。计算过程是存在于计算机里的一类抽象事物。在其演化过程中,这些过程会去操作一些被称为数据(data)的抽象事物。而人们则会创造程序(programs)来指导这些过程。在正常工作的计算机里,一个计算过程将精密而准确地执行相应的程序。
自 1984 年出版以及 1996 年的第二版以来,SICP 已被世界各地的大学和学院采用为教材,包括新加坡国立大学(NUS),该校于 1997 年引入了基于 SICP 的入门课程 CS1101S。 将 SICP 改编为 JavaScript 对将第二版 SICP 改编为 JavaScript(SICP JS)的工作始于 2008 年的 NUS,CS1101S 于 2012 年转换为 JavaScript 使用 SICP JS 的资源 SICP JS 的 MIT Press 网页链接到了这本书的用户支持。 如果你已经了解原始的 SICP,那么你可能会喜欢看到熟悉的思想以新的形式呈现,并且可能会欣赏书的网页上提供的在线比较版本,其中 SICP JS 和 SICP 可以并排查看。 SICP JS 是一个软件项目,除了书籍项目。我们在 2008 年从原作者那里获得了书籍来源。早期的 SICP JS 工具链是由刘航开发的,并由冯飘飘进行了改进。
# err.py s = '0' n = int(s) print 10 / n $ python -m pdb err.py > /Users/michael/Github/sicp/err.py(2 -> s = '0' 3 n = int(s) 4 print 10 / n [EOF] 输入命令n可以单步执行代码: (Pdb) n >/Users/michael/Github/sicp /err.py(3)<module>() -> n = int(s) (Pdb) n >/Users/michael/Github/sicp/err.py(4)<module>() -> print 10 输入命令q结束调试,退出程序: (Pdb) n ZeroDivisionError: 'integer division ormodulo by zero' >/Users/michael/Github/sicp 运行代码,程序会自动在pdb.set_trace()暂停并进入pdb调试环境,可以用命令p查看变量,或者用命令c继续运行: $ python err.py >/Users/michael/Github/sicp
这个题目很大,而我只想谈谈自己对于《SICP》的一点思考。 《SICP》的全名是《Structure and Interpretation of Computer Programs》,中文译名《计算机程序的构造与解释》。 《SICP》里有很多示例代码,我一开始老看着别扭,今天我对这个别扭的原因进行了深入的思考。 但是在《SICP》中并非如此,由于Scheme支持函数式编程,抽象粒度更细(以函数为单位,而不是对象或者类),所以作者是站在一个很高的抽象层面上看待问题,理清问题的脉络,很快地给出一个原型,这个原型已经解决了问题 《SICP》的精髓在于合理的抽象和管理复杂度,我觉得这也是编程和软件工程的精髓。
如果有人对SICP感兴趣,那么就组成另一个“SICP讨论班”,等等。 3 终于,搞事开始了。在各个群里面发了广告,新建了一个群。加群的有不少,但大概多半是看看热闹玩一玩的。 最终票选出4本书:CSAPP、SICP、Intel汇编语言程序设计、C语言。前两本书高年级的票数比较多,讨论班就安排在一区;后两本书大一的票数比较多,讨论班就安排在了二区。 我没看过SICP,也参加了SICP的讨论班,准备尝试学一学。 CSAPP和SICP的讨论班的时间是连着的,因为还要给他们开咖啡店的门,所以索性我就两个讨论班都参加一下——CSAPP只负责旁听,SICP参与分享。 选了参加SICP讨论班的同学,有的甚至不清楚SICP说了个啥——那天SICP讨论班算上我只有3个人参加,一个同学问我,“学这个语言有什么用”?说实话我愣了一下。
Show Notes • Structure and Interpretation of Computer Programs (SICP)[1] • MIT/GNU Scheme[2] • 主播最早用的配置 RSS[11] • 喜马拉雅[12] • Apple Podcasts[13] 引用链接 [1] Structure and Interpretation of Computer Programs (SICP ): https://mitpress.mit.edu/sites/default/files/sicp/index.html [2] MIT/GNU Scheme: https://www.gnu.org
electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/ 译者还创建了一个GitHub提供了一系列的教辅资料,包括SICP github链接: https://github.com/DeathKing/Learning-SICP 如果你在学习中存在问题,译者还专门构建了答疑版块,你可以在板块中提出你的疑惑。 最后,文摘菌再次给出GitHub链接: https://github.com/DeathKing/Learning-SICP 【今日机器学习概念】 Have a Great Definition
胶囊结构的自供电心内起搏器(SICP),用于基于纳米发电机技术从心脏运动中收集生物力学能量。 该装置可以通过输送导管通过静脉途径放置在右心室中。 SICP 集成了能量收集单元 (EHU) 和电源管理单元 (PMU) 以及起搏器模块 (PM)。 SICP 可以通过 EHU 为其 PMU 充电。 SICP 可以有效地转换生物机械能转化为电能体内能量提供稳定的动力。用于猪模型中的心跳起搏时间超过三周。 电容器的电压在 9000 秒内从 0 V 充电到 3 V,与体内 SICP 的电输出相同。 植入前后的心电图和血压信号,没啥影响 随着心脏周期性的生理收缩和舒张,小球在SICP中自由运动,电信号表现出一定的波动性。推测电信号的波动也可能受到血流的影响。
Youtube: Mike Zamansky (Hunter College professor)[8] • B站:金色飞贼小米[9] •主播的推荐 • vc-msg[10] 显示当前行的 git 信息 • SICP 金色飞贼小米: https://space.bilibili.com/314984514 [10] vc-msg: https://github.com/redguardtoo/vc-msg [11] SICP : https://github.com/jiacai2050/sicp [12] 530146104: https://jq.qq.com/?
我们建议至少学完 SICP 的前三章,并完成配套的习题。如果需要额外的练习,可以去解决一些小的程序设计问题,比如 exercism。 中文翻译新增: 关于 SICP 国内视频观看地址 MIT 的免费视频课程(中英字幕) Brian Harvey 开设的 SICP 课程(英文字幕) Scheme 学习的相关资源参见:https://github.com 课程,以及配套的书籍 《Composing Programs》,这本书 “继承自 SICP” 但使用 Python 讲解。 如果你觉得 SICP 过于难,试试 《Composing Programs》。 为什么你们还在推荐 SICP? 先尝试读一下,有些人觉得 SICP 让人神魂颠倒,这在其他书很少见。如果你不喜欢,你可以尝试其他的东西,也许以后再回到 SICP。 为什么你们还在推荐龙书?
前几天在公众号调查了下“对自己编程影响最大的一本书是什么”,答案基本不出我所预料:SICP、HTDP、 K & R C、Hackers and Painters 占据上风。 我曾经花了好几年时间去读 SICP,大概读了三四遍,仔细钻研里面的每一道习题,收获也颇丰,对各种语言现象(递归、CPS、惰性求值、非确定性计算与流处理)、编译器、可计算行问题等有了深刻认识。
Emacs • 用 Emacs Lisp 开发的微信小程序:redraiment/wechat.el[4] • 推荐 • Emacs Keyboard Macros[5] • 《计算机程序的构造和解释》(SICP Macros: http://www.gnu.org/software/emacs/manual/html_node/emacs/Keyboard-Macros.html [6] 《计算机程序的构造和解释》(SICP
分五章:构造过程抽象,构造数据抽象,模块化、对象和状态(涉及并发),源语言抽象,寄存器机器里的计算(编译器如何工作) 环境 OS X下使用IDE DrRacket及其语法插件#PLaneT neil sicp.plt 在文件头使用 #lang planet neil/sicp 声明语言类型 ? list1> <list2>) ; Map (map <list> <process>) (reduce <list> <process>) ---- http://mitpress.mit.edu/sicp
视频则推荐伯克利大学 Brian Harvey 的 SICP 课程。建议至少学完 SICP 的前三章,并把练习题做完。 如果你觉得 SICP 的课程太难,可以选择 How to Design Programs。 传送门: https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html https://archive.org/details
对于没有计算机科学基础知识的程序员或初学者来说 一上来就看龙书 虎书是行不通的 全是理论知识 看得想睡觉 我还试过看网易云大学计算机专业的编译原理课程 也是看得一头雾水 看到80多讲就看不下去了 另外 SICP (计算机程序的构造和解释)这本很多人推荐的书其实并不适合初学者 前3章和后面几章难度差别有点大 可能是自己水平不行 看SICP解释器和编译器那两章也是看不懂 虽然强迫自己看完 但是最后还是不懂编译原理到底是怎么回事
就得优化 X,Y 与函数 F(X, Y),很少有书的内容能同时着重集中在这三点上,但有一本书做到了——Structure and Interpretation of Computer Programs (SICP 在阅读 SICP 之前,你也许能通过调用几个函数解决一个简单问题。 但阅读完 SICP 之后,你会学会如何将问题抽象并且分解,从而处理更复杂更庞大的问题,这是编程能力巨大的飞跃,这会在本质上改变你思考问题以及用代码解决问题的方式。 ? 此外,SICP 的教学语言为 Scheme,可以让你初步了解函数式编程。更重要的是,他的语法十分简单,你可以很快学会它,从而把更多的时间用于学习书中的编程思想以及复杂问题的解决之道上。 如果你觉得 SICP 就是搞不定,也不要强迫自己,先跳过,继续走常规路线:开始读 The Elements of Computing Systems 吧,它会教会你从最基本的 Nand 门开始构建计算机