码迷,mamicode.com
首页 > 其他好文 > 详细

C开发者眼中的SICP学习

时间:2014-10-26 00:28:28      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:sicp

谈谈自己看SICP的一些体会


第一章  构造过程抽象

这一章其实和C语言完全等价, 不打算深入学习LISP的完全可以快速略过。 基本上没有什么大的价值。

这一章最核心的价值就是下面3句话, 理解了这一章就算看完了。

语言的原型系统
·如何组合
·如何提供高层抽象


这3句话是所有语言的核心。 基本上适用所有人。 为什么有人3天学会Java, 有人3年。 关键就在你是否深入理解语言的这3点。

学习任何语言都是直接奔这个主题。所以,有些查字典的完全可以跳过。任何语言, 3天足够入门了。

后面的递归和迭代, 和C没多大区别, 不打算复习算法的完全可以跳过不看。高阶函数, C的函数指针稍微呕心了点,也凑合着能替代。

闭包, 用下面呕心的结构也能凑合替代。

typedef  stClosureFunc {

void * ctx;

void* pFunc;

} ClosureFunc

总而言之, 不打算深入学习lisp的第一章1-2个小时可以快速略过。对实际开发能力没什么大的帮助。(如果想转Lisp开发, 还是有必要花1-2个月做做题)


第二章  

前面的数据抽象, 和C的玩法也没啥区别, 基本没看的价值。关于数据表示, 个人觉得用树表示复杂数据,理论上是没啥问题, 但按照KISS原则,

有点装B过头了。这方面,最喜欢和欣赏的还是Perl, 从语言的角度来说, 数组, 列表, hash表应该是基本元素。

第二章主要要学的是2.3符号系统。不过,C基本不提供, 一直打算靠C混饭吃的, 也可以不看。


从书举得例子,基本上可以感到明显的理论派风味, 这话在国内基本就是骂人的了。

事实上, 你要是面试人,人人都会说要抽象,要分层。 有核心价值的是, 你如何判断抽象是对的,是合理的, 分层是对的,是合理的。

这个,在实际项目中才是有价值的。 满怀欣喜,做完习题,信心满满, 给个实际项目一干, 设计还是个渣渣。


第三章 关于序列化,这个在实际C项目中也大量用, 基本是共通技术。关于流, 想法很新, 但个人虽然做的是信号处理系统, 但还没看到谁用过。

C用的更多是Unix系统的管道思想, 或者消息队列思想。 消息队列事实上是序列化和流技术的结合。


前面3章基本上是娱乐, 实际价值不大。 第4章, 讲的是解析器实现。 采用的是自上而下风格。这基本上是将递归发展到极致了。

去年自己一直在研究编译器, 有些不一样的体会。 但,看的时候,一直有点疑惑, 没看到词法分析,不知道是不是lisp语言没词汇要求,还是自己没看懂。

有限状态机等正则表达式概念不知道lisp是如何体现的。另一个很遗憾的问题,是书中完全没有性能分析。完全是面向学生, 这方面比龙书差太多了。

现实的,真想做编译器,还是扎实学龙书才是正途。


后面的第5章, 感觉也差不多。用来感受下不同的实现方式还是有点价值。但, 不打算学lisp的话还真不见得有多大工程价值。


整体来说, 这本书最值得学的是第5章, 对理解计算机模型本质有些帮助。 前面1-3完全没深入意义。第4章稍微可以看看。

当然, 打算C转Lisp的, 则完全要花3-6个月把4-5章 深入学习了。



C开发者眼中的SICP学习

标签:sicp

原文地址:http://blog.csdn.net/levinjoe/article/details/40458311

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!