清明节三天假期,自己窝在小屋里,阅读了两本ThoughtWorks的图书,一本是《DSL领域特定语言》另外一本是严重被自己低估的来自图灵的《软件开发与创新》。说实话阅读第二本书纯属一个意外。它是京东搞活动的时候附赠的一本书(自己也搞不清是那一次扫书附赠的),回来后就一直躺在自己的书架上,自己吃饭的时候无意间扫到这本书,打开看了第一章就根本停不下来,一直读到深夜,才将这本书大致通读,这是本我肯定会二刷的书。

说了第二本书这么多好话,大家千万不要以为我是在给图灵这本书打广告,事实上我也并不准备向大家推荐这本书,我自己买的技术类书籍,不敢说在图灵读者中名列前茅,至少也能排上个中等偏上,所以自认为还是有点感悟的。

技术类书籍并不是别人说好就一定适合现在的你,也并不一定经典的书籍就一定值得买(原谅现在还一直躺在我书桌上吃灰的《算法导论》,我实在没有能力读下去,哪怕一章),我觉得适合自己现在大致能力水平的书,才是好书。判别方法就是,大致通读下去觉得自己至少50%内容能够阅读下去的书,在这里特别说明,一本新技术类的书籍,往往前1~3章最难啃(前言除外,安装过程除外),一旦跨过这个坎,那读完这本书对你来说,就只是时间问题了。

说了一些题外话,切回正题,《领域特定语言》这本书,首先说明,它肯定是一本好书,但是对现在的我来说还是比较难啃的,其中大量的模式,自己以前听都没听说过,理解这些代码(比如状态机模型,大神不要笑哈)还是有些难度的。其中还有一些编译器实现的原理,现在读到第三章觉得该补充点知识(《编译原理》《ruby基础教程》《ruby元编程》在这特别感谢学姐向我推荐的最后一本书)在继续阅读下去,技术永远不是孤立的,这也是做技术的乐趣之一吧! (Java JVM 用c++写的,c++源自于c )

要想成为一个领域的强人,我觉得不应该死抓住一本书,或一门技术,身边很多朋友都在劝我,把Java搞明白了在学其他的吧!你的技术面太广,在这里我想问一句我心里一直以来的一个疑问(也希望阅读这篇文章的读者能给出自己心中的答案)一门语言搞到什么程度才算搞明白了?是了解这门语言的所有API,还是用记事本就能写就一手漂亮的Java代码(真见过有个人是这样的,原生态Java的所有命名空间,包路径都了如执掌,用记事本编写程序和在IDE中一样飞速!),还是了解这门语言生态体系所有的开源框架?

经常听很多论坛上说,某某技术经理做ruby十几年了,都不敢说他精通ruby。劝后进面试者谦虚,在这里我就说句妄言吧!中国大多数做技术的都是该谦虚的时候不谦虚,不该谦虚的时候瞎谦虚。对精通我的定义是,了解这门语言主要的设计思想,它着力解决问题的领域,研究过它生态体系的一个经典开源框架。能用它解决它涉及领域内的问题,了解它的大多数最佳实践,并能迅速掌握它的新特性。如此也就大概能说的上是精通了。诸葛亮读书,三国志的说法是“观大略,不求甚解”。而大多数人都爱咬文嚼字。技术亦如是,perl的作者每次用perl的时候还要查它的特性,照大多数人的观点,写perl的作者也不敢说精通perl了?这让我想起一个笑话,高中的阅读理解,让选文作者来答题,作者集体不及格!

不要在一门语言上耗一辈子,至少在自己的编程生涯中多学几门语言!它们有不同的解决问题思路,但至少保证自己要精通一门语言!解决问题的思路以及怎么写代码不属于特定语言,它们应该是独立的一门技术。

有时候看了越多的书籍越觉得自己不会写Java代码了,每次写代码都感觉自己对这门语言毫无了解,它的精髓真是自己了解的那样吗?《软件开发与创新》对象和类的探讨又一次让我感到了对面向对象编程知识的贫瘠

说说我对读技术书的理解,读了很多的技术类书籍,以前每次都会记录详细的笔记,用我的话说,每一本书就像不同编程语言的源代码,笔记就像编译过的中间代码,而自己的理解掌握就是运行代码了 ,年后读了七八本书都没有记录笔记,工作中用不到的一些已经重新还给了书本。 所以在这里建议大家,记笔记这个习惯一定要好好保持,不为给别人看,只因为你记录的笔记,是最适合你大脑的中间代码!!

而随着年龄的增长,自己真的越来越惶恐,若在很长一段时间都不能达到像那些开源项目编程者编写代码的程度,自己或许真的干不过三十岁,但从目前自己的水平来看,还有好长一段路要走!

最后在说一句,英语对一个程序员来说,真的很重要,我买了《疯狂英语》,准备每天最少记一个英语常用语句 ,争取在未来很长一段时间能攻克英语这个堡垒! 此致!祝大家在技术这条路上能越走越远!