`
superhj1987
  • 浏览: 203269 次
  • 性别: 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  
祝阅读愉快,可以把您的这篇读后感发表调图灵社区哦! 我帮您发也可以

相关推荐

    七周七语言

    内容简介:, 从计算机发展史早期的Cobol、Fortran到后来的C、Java,编程语言的家族不断壮大。除了这些广为人知的语言外,还涌现了Erlang、Ruby等后起之秀...从这个意义上说,每个程序员都应该看看这本《七周七语言》。

    七周七语言(PDF)

    七周七语言(PDF)

    七周七语言 mobi

    内容简介: 从计算机发展史早期的Cobol、Fortran到后来的C、Java,编程语言的家族不断壮大。除了这些广为人知的语言外,还涌现了Erlang、Ruby等后起之秀,...从这个意义上说,每个程序员都应该看看这本《七周七语言》。

    七周七语言.pdf

    七周七语言 完整待目录版 正版资源 Ruby IO Prolog Scala Erlang Clojure Haskell 编程模型 并发 编程结构

    七周七语言:理解多种编程范型.pdf

    内容简介: 从计算机发展史早期的Cobol、Fortran到后来的C、Java,编程语言的家族不断壮大。除了这些广为人知的语言外,还涌现了Erlang、Ruby等后起之秀...从这个意义上说,每个程序员都应该看看这本《七周七语言》。

    七周七语言:理解多种编程范型

    七周七语言:理解多种编程范型

    七周七语言第2版(英文原版)

    七周七语言第2版(英文原版),非图片pdf,欢迎下载七周七语言第2版(英文原版),非图片pdf,欢迎下载

    七周七语言.epub

    书中介绍了Ruby、Io、Prolog、Scala、Erlang、Clojure和Haskell这七种语言,关注每一门语言的精髓和特性,重点解决如下问题:这门语言的类型模型是什么,编程范式是什么,如何与其交互,有哪些决策构造和核心数据...

    七周七语言.理解多种编程范型.书签清晰版.文字版

    七周七语言.理解多种编程范型.书签清晰版.文字版.七周七语言.理解多种编程范型.书签清晰版.文字版.七周七语言.理解多种编程范型.书签清晰版.文字版.七周七语言.理解多种编程范型.书签清晰版.文字版.七周七语言.理解...

    七周七语言_理解多种编程范型-[PDF]

    《七周七语言:理解多种编程范型》共介绍了七种不同的编程语言。对于每种语言,分别介绍了各自的特性、应用,以及编程入门知识和关键编程范型,还带领读者使用能够代表该语言最重要特性的技术,解决某个不寻常的问题...

    七周七语言 Ruby篇 第二天习题答案

    七周七语言 Ruby篇 第二天习题答案 File.open("d:\\day_two_7", "r") { |f| i = 0 while line = f.gets r = /Howard1/ if r.match line p i end i = i + 1 end }

    七周七语言 理解多种编程范型

    这是一本简单介绍多种语言的书。书中设计多种语言,但要留意仅限于简单介绍。

    《理想国》第七卷——洞穴比喻读后感.docx

    《理想国》第七卷——洞穴比喻读后感.docx

    七周七语言 理解多种编程范型_13010643.pdf

    2011年Jolt大奖图书,理解多种编程泛型,Ruby,Io,Prolog,Scala, Erlang,Clojure,Haskell

    七周七语言:理解多种编程范型.[美]Bruce A.Tate(超清中文版带详细书签pdf)

    《七周七语言:理解多种编程范型》共介绍了七种不同的编程语言。对于每种语言,分别介绍了各自的特性、应用,以及编程入门知识和关键编程范型,还带领读者使用能够代表该语言最重要特性的技术,解决某个不寻常的问题...

Global site tag (gtag.js) - Google Analytics