在微博上看到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的精髓,弄懂这个能学到很多东西。自己打算以后有时间再回过头来好好研究一下这个东西。
总之,这本书确实是一本不可多得的好书,值得好好研读一下。强烈推荐!
分享到:
相关推荐
内容简介: 从计算机发展史早期的Cobol、Fortran到后来的C、Java,编程语言的家族不断壮大。除了这些广为人知的语言外,还涌现了Erlang、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 }
### 七周七语言:理解多种编程范型 #### 知识点概览 1. **编程语言多样性**:本书探讨了七种不同的编程语言,旨在帮助读者理解各种语言的独特之处及其适用场景。 2. **编程语言特性**:对每种语言进行了深入介绍,...
2011年Jolt大奖图书,理解多种编程泛型,Ruby,Io,Prolog,Scala, Erlang,Clojure,Haskell
[Pragmatic Bookshelf] 七周七语言 理解多种编程范型 (英文版) [Pragmatic Bookshelf] Seven Languages in Seven Weeks A Pragmatic Guide to Learning Programming Languages (E-Book) ☆ 出版信息:☆ [作者...
【七周七语言1】是一本关于理解和学习多种编程范型的书籍,作者是Bruce A. Tate。书中详细介绍了七种不同的编程语言,每种语言的特性、应用场景、基础入门知识以及关键编程模式都有涉及。作者的目标是通过解决每个...
《七周七语言》是一本深受程序员喜爱的书籍,它由Peter Norvig和Barry Jay共同撰写,旨在引导读者在短时间内了解多种编程语言的核心概念。这本书的独特之处在于它不仅仅是一本语言教程,更是一个深入理解编程思想的...
"柏拉图《理想国》第七卷洞穴比喻读后感" 柏拉图《理想国》第七卷中提出的洞穴比喻是整个哲学思想的精华所在。柏拉图通过这个比喻,旨在说明人生的根本处境和追求真理的重要性。洞穴比喻中,柏拉图描述了一个地下...
"七周七数据"是一个可能的数据科学学习计划或者课程名称,旨在帮助学习者在七个星期内掌握关键的数据处理和分析技能。在这个计划中,你可能会接触到一系列与数据相关的主题,包括但不限于数据清洗、数据可视化、...