《七周七语言:理解多种编程范型》书评整理
任何一个想在程序开发这条路上走远点的人都应当多了解几门语言,多接触一些编程泛型,才能打开眼界,提高自己。 国内绝大多数程序员可能就知道个OOP,借着javascript的兴起可能有小部分人能够对原型有所了解,至于函数式编程之类的有个明确概念的就很少了,像prolog这样的“奇特”语言能有所了解有所接触的可说是万中无一。 《七周七语言》这本书最大的价值在于让你知道:“原来世界上还有这样一种语言,是基于这样的概念的啊”(商品评价)。这本书在去年6月份出版上市,获得了2012最佳十大引进版图书的称号,在京东和当当,很多妹子买给了自己的程序员老公,成了床前必读,是不是有些意思?
身为程序员的你,这本书不容错过,如果你还没读,建议马上列选入你今年的读书计划,如果你已经读了,我想你应该细细琢磨回味一下,把你从中学到的东西分享给大家。如果你现在还没时间分享,那么先来看看其他人对这本书的领悟!提前祝你阅读愉快! 另外,这本书的电子版已在多看上架哦!
[+]查看原图 1.学语言其实不是这么学
感谢图灵给了我试读这本书的机会,也抱歉这本书评一直拖到现在,过程远远超过了七周,可是我觉得这本书也许叫做七天七语言来的更合适,也更有噱头。
我是一个语言爱好者,我喜欢看各种冷门语言,从中学习他的语法精髓,曼妙之处,并且试着去理解它的设计和编程思想。在读这本书之前,对一些语言就有一些了解,例如本书的Ruby ,Io , Erlang和Scala,所以其实书看的还是很快的。大概一个语言一两天就看完了。书的翻译很不错,基本没有遇到什么理解的障碍。
但是在我看来本书的内容并非足够恰当,其实大部分人工作只能用到一两门语言,大脑也没办法(至少从我的自身情况来说是这样的)存储过多的语言细节,但是本书还是稍微的过多纠缠于语法细节,而在编程思想上鲜有提及,并且缺乏语言之间的横向对比,只是浅显地说了下该语言的优点和缺点,但是这样简单优点和缺点的理由是不足以为读者作出业务场景语言选择的理由的。
但是无论如何,我认为作为一个IT从业者,仅仅把思想上局限在同一个语言上是一定会受到发展瓶颈的,这本七周七语言还是推荐给所有程序员来读....
作者:飞林沙
2.计算机爱好者不应该错过
首先,看了此书的英文版之后又看了中文版,翻译应该算值得信赖。
Jolt的奖项也是对这本书的肯定。而最近这本书火起来,中文版也功不可没。
众所周知,每一种语言或复杂或简单,使用者想要使用到一定境界,都不是短短一周可以达成的。所以这本书从根本上就不是像副标题中描述的A Pragmatic Guide to Learning Programming Languages。这本书更像是对“非主流”的语言界的一次全面概括。作者精挑细选的7门语言基本囊括了“非主流”界的各种范式,也不乏“非主流”界中的主流,名门望族。细致的描述了每一个语言的特性,以及多种语言之间的对比。对于每一个喜欢language,想要了解language的计算机爱好者都不应该错过。有志想去独立的设计一个language的爱好者当然更不应该错过。
作者:vincent
3.Good Book
如果你想花很少的时间,只是去了解这么语言,那么你错了。你应该去找一些简明教程。
本书为你铺就的学习途径,较之网上那些20分钟教程可谓略胜一筹。我知道,你我同为善用Google 之人,随便搜索书中某门语言的简明教程自是不在话下。不过本书的高明之处在于,它会带你踏上快速成长的互动之旅。你每周都会遇到一些小型的编程挑战和一个实战项目。解决它们 虽非易事,但这既能增长你的见识,还可让你体验编程之乐。
如果你阅读本书时不做任何习题,那不过是对语法有了个粗浅认识。如果你在尝试独立解答习题之前,先去网上搜索答案,那也一样意味着不及格。你首先要有试着解答习题的主观愿望,同时也要充分认识到,有一小部分习题可能超出了你的能力范围。要知道,学会语法永远比学思考简单。
作者:Steven
4.这书真是一本非常好的书
虽然这本书可真够贵的,中文版不到300页,码洋近60元。但是这书是我见过的计算机教程中信息密度最高的一本。作者很淡定的说,你会google我也会google,没必要写一些你随便搜搜就能找到的东西。于是就有这种三十页就包括一门语言的书。而且每个语言又分三段,大概就是语法入门,高级特性,高级特性与实践结合。完全没有安装指南,做得好!很多语言书的安装指南过时又错误百出(这不完全是作者的错,很多书引进之后,对应的软件版本已经过时了),最后还是靠google到的文档解决问题,索性没有也是一件好事。如果读者靠里面的语言吃饭,就完全没有必要读这书。但是如果没接触过,读完这书里一门语言之后就能比读完这语言的其他教程多知道一点东西,此可谓多元化的犒赏。
这书类似于我母校某老师宣称的一种理论,计算机教学应该不走寻常路,应该去模仿学自行车的过程,把人扶上车座,然后对准车屁股一脚踹上去。然后能学会的人自然摇摇摆摆的就上路了。这书里面第一天大概类似于扶人上车座,然后第二三天就是猛踹的过程。
里面反复提到DSL,可见DSL毕竟是解决大多数实际问题的大势所趋。
此外这书很有趣,把每个语言都用经典电影里的角色做比,让人很轻松的记住每种语言的特点,有些电影我看过,有的还没看。本来打算找来一一看过,但是发现最后一门语言对应的是Star Trek,就打消了这个念头。
作者:肥小满
5.推荐
书中的每一种语言都有各自的特色,每一中语言代表着一种编程范式。知晓这些语言,了解和理解这些语言所蕴含的知识,对于软件开发者而言是非常有必要的。这会开阔他们的眼界、开拓他们的思维,让他们在实际工作中更容易和更愿意去探索解决问题的不同方法。我推荐每一个软件开发人员都来读一读这本书,尤其是从业三年以上的开发人员。
作者:特价萝卜
6.读《七周七语言》有感
前一段时间看完了《七周七语言》,这本书的书写风格有点像教材,会要求你回家做作业。
但说实在的,不做作业真的无法理解里面的全部内容。
或许抽空我也应该再看一遍并且把里面的作业做一遍。
之前对 C# 最熟悉,所以难免会把里面的各种编程模型和 C# 进行比较了。
约束—逻辑编程(Prolog)
Prolog出身于一个专用于约束-逻辑编程的语言家族。我们用Prolog编写各种应用,全是为 了解决一小类问题。然而,解决这一小类问题获得的成果却蔚为壮观。简单地说,这类问题为某 个已知问题域定义一些逻辑约束,然后就可以用Prolog求出这类问题的解。
当我看到 Prolog 这门语言的时候,实在是让我眼前一亮!简单的来说, Prolog 就是用来做规则引擎的。
前一段时间,部门的另一个项目组在 C# 中利用 Ruby 实现了规则引擎。本来对这块还不是很理解,但是看完 Prolog 的介绍后,对规则引擎的基本概念了解得更深入了。
还记得高中的时候想:老师是怎么排课表的呢?能不能用一个算法来排一个课表?
现在回想起来,如果老师们有 Prolog,那这一切是不是就太简单了?
用 Prolog 编程,其实不是在编程,而是告诉程序一条条规则,也就是逻辑约束。
Prolog 就会在内部利用相关的算法进行高效的运算,然后告诉你满足条件的结果。
或许以后再遇到这样的问题,就不要去编写复杂的算法了,交给规则引擎吧~
函数式编程(Scala、Erlang、Clojure、Haskell)
你已经了解到,函数式编程语言通常比面向对象语言有更强的表达能力。用它们写的代码显 得比面向对象语言更短小精悍,因为它们用来编程的手段要丰富得多。
看到各种函数式编程语言,和 C# 比较后发现,C# 真的很好地把函数式编程融入了自身。Java 在这块差距就很大了,Java 8 中才刚刚引入了 lambda 表达式…
书中的 Scala 正式为了在 Java 中实现函数式编程而产生的,它运行在 JVM 之上,可以直接使用现有的 Java 资源。
最后不得不佩服 C#,在面向对象的强类型编程语言上,优雅地实现了函数式编程。
更佩服的是,C# 在函数式编程的基础上,把它扩展为了 Linq,开发者可以使用同样的一套语法,实现两种功能(便捷地处理内存中的数据 & 便捷地处理远程数据)。
两种功能虽然在语法上完全一样,但在底层却截然不同(一个是 lambda 表达式,一个是表达式树)。
可惜 C# 出自微软之手,是一门商业化地语言,在开源社区不受待见。但如果抛开偏见,作者也应该把 C# 写入这本书~
并发
并发是面向对象编程语言永远的痛。函数和数据捆绑在一起了,所以调用函数的时候就必须额外小心。
而在书中介绍的许多语言都是变量不可变、函数同样的输入就有同样的输出。这些规矩让这些语言在并发操作的时候变得格外简单了。
当然,它们也会有自己的局限性…
微软在 .net 的几个最新版本中,不断的改善着并发体验。书中介绍了几种并发模型,会让你有眼前一亮的感觉,但是目前我也没吃透,还需多读才能深刻地理解。
想想以前,一提到并发只知道 lock,真是井底之蛙啊!
范型演进之路
如果你下定决心,以后多用函数式语言来编程,那么有几条路可供你选择,你既可以彻底与 OOP决裂,也可以选择较为温和的渐进策略。
我们学这七门语言花了不少心力,但也见识到了叱咤风云四十余载的几门语言,以及多种编 程范型。但愿你现在已经对编程语言的演化有了一个正确认识。你可以看到三条截然不同的范型 演进之路。
在没有闭包、没有 lambda 地 Java 中,某些时候的开发效率真的是低了好多好多。
而 C# 在这条路上走得还是蛮快的。
2.0 泛型;3.0 lambda+扩展方法;3.5 Linq…
三大版本,几年的努力,最终对函数式编程有了一套优雅的实现方案。
4.0 并行;4.5 async+await 改善并行编写方式…
希望 C# 最终能有一套优雅的并行模型!
Java 君在这块你要加油了!
赞助
如果你读了我的文章,觉得有帮助,欢迎向我支付一小笔金钱作为回报。希望我能早日用上MacbookPro,iPhone5,the new iPad。
赞助地址:Dozer Zone
7.书看完了,学习才刚开始
这不是一本教我每种语言写一个Hellow World的书,虽然只有不到三百页,还是尽力展现了每种语言的特质。
因为只有很短的篇幅,又要介绍很酷的语言特性,这本书采用和不同的叙述方法,基本不会介绍语法的全貌,而是通过自己语言的特性和相邻语言的关联性,来直击要害。
我感觉这种方法非常有趣,但同时对作者、译者和读者都是种挑战,当然,几种语言互相联系其实也有助于理解一些概念。不过,我觉得如果读者有几种语言的一些初步了解,或者对函数式编程有点了解的话,还是会容易读一些,否则,曲线就比较陡了。
这本书的另一个要点是,书看完了,学习才刚开始。这本书向读者展示了语言最酷的地方,让读者决定是不是喜欢或需要这门语言,但要想真正掌握一种语言,必须要进一步学习很多知识 。
8.微博评论:
一个老IT编辑:今天仔细研究了下《七周七语言》这本书,发现本书真是市场空白,但同时也有一定的高度,不是一般读者能学好的,必须对语言研究到了一定高度的人才能看。又看了看各个网站对它的点评,我想可能它销售上没有一本普通C语言入门书销量高,但实际上它将Coder带入一个更高的领域,让Coder的视野更宽。
更多好文:
图书封面的故事之——“巴别塔”选自《七周七语言:理解多种编程范型》
相关图书
---------------------------------------------------------------------------------------
1.诚邀合作: 如果您想翻译、写作或是推荐IT类图书,我们将竭诚为您提供最专业的服务平台。
2.联系我们: yuany@turingbook.com(E-Mail)
3.欢迎加入图灵社区与作译者、业内人士进行交流: