最近两个月是真的忙,忙的公众号都没有坚持更新了。现在我又回来了。在此准备瞎扯几句,顺便推荐下自己的最近读过的书,
《scala函数式编程》:个人觉得是读过的scala最好的书,因为它叙述了scala的核心,把每个程序员都当成是程序员,而不是像java假设每一个程序员都是愚蠢的。同样也讲述了程序设计里的一个核心,函数式编程,这个编程范式,或者说,另一种高度抽象给了我对计算机世界的改观。当然这也是我接下来要推荐的另一本书的核心,按下不表。Scala是一门很优秀的语言,我觉得在某种程度上,比python和java做的都要好。里面大量使用的lambda表达式和高阶函数,都体现了一种过程抽象。
《spark》的相关书籍,这是因为工作需要读的,一共读了三本,分别是《spark快速大数据开发》,《spark最佳实践》,《spark源码剖析》。写的最容易上手的是《spark快速大数据开发》,另外就目前的实践而言,spark的DAG和RDD模型应该更像google内部应该使用的数据处理框架,极大的利用了内存。也正是因为如此,更适合于迭代计算。其他的,我觉得和mapreduce在2.0以后并没有太大的区别,当然,在机器学习火起来之后,计算框架更可能是是spark,而不是MR。想想,在任何一个机器学习算法里,数据的迭代计算都是最核心的内容,MR那简单粗暴的key-value拆分合并(最让人吐槽的是,join是直接把数据源放到一起,一点都没有数学的优雅,更像是工程师的产物)怎么能处理。所以我觉得不要神化spark,就认为一定比MR强。
spark的编程语言,我更推荐scala。它会让你走火入魔的,不过据说java 8持lambda了,但是也没见着几个人用。当然不可否认的是,hadoop和spark都是极为优秀的工程作品,值得每一位工程师去阅读。
《大型网站技术架构》,个人读完后,感觉里面的东西只适合吹牛逼,没啥实质性干货。可能是我道行太浅吧,没有品出来有价值的东西。
好了下面要开始推荐真正值得回味的书了。
《计算机程序的构造与解释》:神书,读了之后才发现的。表达式,组合式,条件表达式和谓词,过程的代换模型,高阶函数,黑盒,仅仅是第一章就足以让你打开一个新世界。第二章数据抽象,抽象屏障,数据的意义,层次性数据,闭包,符号数据。相信我,读完这两章,你会对程序语言有种不一样的理解。
《深入理解计算机系统》,现在这本书正在我手上,仅仅是序章,一个简单的‘hello world’的程序是如何呈现到你眼前的,就让你觉得其实你还没有登堂入室。虽然我现在也知道了。。。。。。
《python源码剖析》,好书一本,然后读完后不想写python了。因为感觉写下的代码我都知道在内存里怎么运行,会变成啥字节码,解释器怎么运行,再也没神秘感了。
接下来,我会逼着我一周至少更新两篇文章,不再是翻译的了,更多的是,我对我读过的书的理解。因为现在存在脑海里的东西太多了,既然很少人愿意听,那就写出来吧。