cs python课程 加州大学_如何看待Berkeley开设的CS61A:SICP in Python课程?

SICP Python 描述 中文版​wizardforcel.gitbooks.io

开始我看的是sicp裘宗燕老师翻译的第二版,但是lisp自己毕竟不了解且过于抽象,进展缓慢(并且之前拿起方向sicp多次),在看到有python版本,并有国内翻译版本之后,看起来比较顺利。

因为自己对python还算了解,所以,python中译本看的津津有味,如果是看lisp版本被lisp的一致性所惊艳,那么python版本会让你可以更快的了解这本书中的内容,全书的核心内容是各种抽象,递归,如何以小的函数逐渐组成大的系统,在第三章,作者甚至带你演示了如何只用python的函数实现面向对象,当你看到生成类的函数需要字典作为参数的时候,或许你就明白了为什么vue的options也是个字典。为什么要有data和method,vue的data相当于__init__(虽然这么说不是很对),vue的method就是类的各种方法(这不是废话),(当你看到作者甚至可以用序列(元组)和函数实现字典的时候,对于状态的把握,约束系统的实现,不由得叹为观止。)当你理解了类和对象内部的字典(实际上python对象就有__dict__),知道字典有get方法的时候,对于python中__setitem__的实现,对于如何元编程中如何访问不存在的方法,就了然于胸了,甚至可以联想到Ruby的method_missing方法,以及据说JavaScript的创始人是lisp的拥泵,JavaScript中的面向对象系统就是基于函数实现的啊。

这个时候也就可以理解,即便c和c++在语法层面没有面向对象的支持,但是,仍然可以实现面向对象,噫吁嚱,技近乎道啊。

在第4章解释语言的构造和解释的时候,虽然没有说什么AST,但是,有了前面树形的数据抽象和过程抽象的铺垫,了解基于树来解析语言,也就水到渠成了。以前看《python算法权威指南》的时候,对于数在语言解析中的应用,见猎心喜,叹为观止,但是实在是不懂。这本书真的讲解的非常透彻了,这些内容本身就具有一定的抽象性和复杂性,所以一次看完不太现实,我也是在地铁上和早上的赖床时间看完python版本的,现在虽然大脑会了,但是里面的代码还不能完全手写出来,所以我还需要二刷,三刷,但是如果你有时间,可以慢慢看起来,用python实现,用java实现,用JavaScript实现,甚至用c++实现,用任何你熟悉的语言实现,一定会大有收获的。我不是计算机专业的学生,也不是智商高的人,都能有所收获,相信哪些计算机专业的孩子们收获更大。

书中讲了简易计算器语言的实现,logo语言的实现,那么你再去看Babel中AST的编程的时候就事半功倍了。

作为少儿编程从业者,这些也许在教孩子的时候不会讲,但是这本书给我带来的对语言的底层理解,可以让我设计更好的课程,把编程的本质更好的传达给孩子,抽象,小的部分组合成大的部分,这种思维之美,而不是画个图,整个游戏,花里胡哨的,什么是编程区别于其他学科特有的思维,什么是计算思维,这本书带给我的惊喜太多了。路漫漫其修远兮,吾将上下而求索。(ps:我有师范背景和近8年公立学校教学经验)。

官方的说法是,现在人们已经不需要从底层实现一些功能了,因为现在的语言很成熟了,所以采用了更为广泛使用的python。无论是lisp也好看,python也好,都着重于用简单的形式,通过组合构造复杂的系统,看起来纷繁的系统,无不起于毫末,sicp带你领略语言的本质,打开语言的黑箱,让你从更高的抽象层级上看待编程语言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值