`
superhj1987
  • 浏览: 206171 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

《七周七语言》读后感

 
阅读更多

在微博上看到Robbin老大推荐《七周七语言》一书,去豆瓣上查了一下发现大家对这本书的评价也是非常高,于是就想着去读一下。书买了之后由于找工作一直没有来得及看,随着前段时间把工作定了,就着手对这本书的学习了。从书名来看,顾名思义就是讲了七种不同的编程语言。自己浏览了一下目录,心里也大致衡量了一下,对于这七种语言,我觉得我以后会用到的或者说是能去学的应该也就Ruby、Scala两个,所以就计划大体地浏览一下这七门语言,先有个大概的了解就好。这样每天利用上午的两个小时,一共大约两周的时间,大体把这本书看完了。

 

这本书一共讲了四种编程范型:面向对象编程、原型编程、约束-逻辑编程、函数式编程。面向对象编程有Ruby和Scala;原型编程是Io;约束-逻辑编程是Prolog;函数式编程有Scala、Erlang、Clojure、Haskell。对于这几种编程范型,书里面最后一章进行了很好的总结,在这里也就不重复了。

 

在阅读这本书的过程中,经常会在看到某个语言的某个特性时让自己有种狂喜的感觉,让自己感到特别兴奋,有一股强烈的冲动去学习它、去运用到实际中。自己在这过程中也产生了一些想法,思考了一些问题。

 

书的一开始是Ruby那一章。其实几年前就曾听闻Ruby on rails的威名,也知道ItEye就是使用的这个技术,知道Ruby以注重程序员效率为主。之前花了点时间进行了学习,但一直没有一个练手的项目,所以也就停留在似懂非懂的地步。这次看这一章,第一感觉仍然是惊喜于Ruby语法的灵活。写Ruby代码就觉得是在说话一样,而且各种方式都可以,让人非常舒服。另外,Ruby的纯面向对象和动态类型特性都极大地提高了编程效率。对于Ruby在性能、并发方面的弱点,随着现在硬件性能的提高以及Ruby自身的改进,已经越来越不是问题。

 

对于Io这个语言,自己很陌生,是第一次听说。不过它的原型编程,自己曾在JavaScript中接触过。Io的另一个特色是万事万物皆消息,这个东西确实挺新颖,在处理并发的时候使用actor发送消息、处理消息能达到不错的效果。此外,它的future让我想起了Java中的FutureTask和Future,不知道Java是不是参考Io的。这个机制在多线程环境中也是个很不错的方案。

 

Prolog,也是第一次听说,更是第一次听说声明式编程语言和逻辑编程语言。貌似只要描述一个事实和推论,就能写出解决很多难题的程序来。里面对于数独和八皇后问题的编码解决,让我真的是叹为观止。此外,自己也第一次知道了尾递归优化这个技术,对于递归调用,这个优化的确能够大大节省内存占用。但是真的对于这种语言很不适应,也就没太仔细地看。不过,不得不承认的是DSL语言在特定领域确实是无可比拟的。

 

Scala,一门混合编程语言,算是面向对象语言与函数式语言之间的桥梁。其运行于JVM之上,加上对函数式编程的支持,使得很多基于Java开发的系统可以在之前的基础上进行改进,极大地提高了编程效率。而且其使用val关键字声明值不可变的变量以及其actor使用了线程池的方式都是对并发不错的解决方案。看到这个语言,我强烈地感觉Scala是一个能够取代Java的高级语言,也特别想去学习一下。也有了计划去进一步接触和使用。

 

Erlang,这个语言之前看到过,知道是一个针对并发的编程语言。不过看了书才知道其是基于Prolog而来的。其“就让它崩溃”的错误处理策略显得非常健壮,另外并发方面采用的是开销极小的轻量级进程也是一个优势。最让我惊叹的是它的列表解析功能,一个典型的例子就是能够轻易的向一个列表中加入新的属性。

 

Clojure,又一个陌生的语言,一个JVM上的Lisp实现,也就是一个Lisp方言。对于Lisp自己也是从未接触过。不过从Lisp字面上的意思来看就是一个列表语言,即取列表第一个元素作函数,其余元素做参数。另外就是在Lisp中数据即代码、代码即数据。这里最让我惊异的是其采用事务内存STM和原子来解决并发问题,算是一个亮点。此外,使用延迟计算解决斐波那契数列和阶乘问题以及Clojure-Java互操作对Java语言的扩展也都是很突出的优势。

 

最后一个语言Haskell是一个纯函数编程语言,也是本书一个让自己看了很久也没搞明白的语言。可能是对于函数式编程自己就是个小白的缘故吧。不过好歹是弄明白了柯里化的意思,也看到了惰性计算的好处。此外,对其中的monad这个为了弥补函数式编程在命令式风格编程方面的缺陷采用的技术,自己看了好几遍还是很迷糊。书上说这是Haskell的精髓,弄懂这个能学到很多东西。自己打算以后有时间再回过头来好好研究一下这个东西。

 

总之,这本书确实是一本不可多得的好书,值得好好研读一下。强烈推荐!

分享到:
评论
3 楼 turingbooks 2012-11-23  
我发啦http://www.ituring.com.cn/article/details/17881,希望以后你可以来图灵社区发表文章!会有奖励哦!
2 楼 superhj1987 2012-11-21  
turingbooks 写道
祝阅读愉快,可以把您的这篇读后感发表调图灵社区哦! 我帮您发也可以

这本书确实读得很愉快啊。那可以的话就麻烦你帮忙发一下了。谢了。
1 楼 turingbooks 2012-11-21  
祝阅读愉快,可以把您的这篇读后感发表调图灵社区哦! 我帮您发也可以

相关推荐

    seven languages in seven weeks

    ### 《七周学会七种语言》:编程语言探索之旅 #### 一、书籍概览与价值 《七周学会七种语言》是一本旨在帮助读者快速了解并掌握七种不同编程语言及其背后编程范式的书籍。这七种语言分别是 Ruby、Io、Erlang、...

    七年级语文下册 周测九(扫描版) 新人教版 试题.doc

    例如,如果试题中有一篇关于友谊的文章,我们可以探讨如何分析文章中的主题、情感、人物关系,以及如何写出有深度的读后感。如果涉及到诗词,我们可以讨论诗词的韵律、意象和诗人的情感表达。 请提供更多的试题详情...

    六年级英语第7周测试题精选.doc

    这类题目不仅考察学生的方位感,更锻炼了他们用英语表达和理解空间关系的能力。 在选择题部分,涵盖了诸多重要的语法点。通过具体的对话或句子,学生需要选择合适的动词短语搭配、时间表达方式、一般将来时的正确...

    ~20苏教版七年级语文期中考试试题及答案3精选.doc

    6. **专题与语文实践活动**:这部分可能包含对诗歌的解读,如冰心的《繁星·春水》的摘录及读后感的撰写,以及对名著内容的侧面描述,如《西游记》和《红楼梦》的场景再现,这锻炼学生的阅读理解能力和创意写作。...

    21天学通java 不错的资料

    本书分为三周的学习周期,每周包含七个章节,涵盖了Java语言的核心概念及Applet和应用程序的创建方法。 - **第一周**:介绍Java的基础知识,包括变量、循环、函数等基本语法,以及简单的面向对象编程概念。 - **第...

    五年级上册UnitMyweek时PPT课件.pptx

    "五年级上册Unit My Week时PPT课件"正是这样一份设计精良的教学资源,它不仅让学生学习到一周七天的英文名称,还巧妙地将学校的课程安排融入到教学中,使得英语学习更加贴近学生的生活实际。 课件的导入部分是通过...

    五年级上英语1-6单词及常用表达法.docx

    1. 星期一至星期日(Monday to Sunday):一周的七天,学习时间管理和日常活动安排的基础。 2. 洗(wash)和洗我的衣服(wash my clothes):日常生活技能,保持个人卫生。 3. 看(look)和看电视(watch TV):休闲...

    ChatGPT人生操作指南·1000个AI问答集.pdf

    - 读《高效能人士的七个习惯》(The 7 Habits of Highly Effective People),提高工作效率; - 读《跨越鸿沟》(Crossing the Chasm),拓宽职业路径。 **我们是怎样一步步地走向平庸的?有什么方法可以避免?**...

    java基础入门教程

    微 软 总 裁 比 尔 ·盖 茨 在 悄 悄 地 观 察了 一 段 时 间 后 ,不 无感 慨 地 说 :"Java是 长 时 间 以 来 最 卓 越 的 程序 设 计 语 言 ",并确 定 微软 整 个 软 件 开 发 的 战 略 从 PC 单 机 时 代 向 着 以...

Global site tag (gtag.js) - Google Analytics