近一年的时间啃了3本书,另外一本虎书近期准备啃,来来来,给大家上图。

7.jpg

8.jpg


9.jpg


对我来说,上面的几本书可以说晦涩中的晦涩,实例少,理论多,尤其是《The Java Language Specification》,英文版的,着实费了些力气,而且网上的资料也少,对于一些看不懂的地方只能自己硬着头皮一遍一遍的读,同时也在读Javac源代码,毕竟Javac源码就是严格按照这本书的规范来实现的。
对于那本经典的龙书来说,有些章节还是没有读的太明白,还需要多读两遍,另外需要写几篇博客做做总结。  
近一年的时间主要读了这三本技术书,效果还算不错,读的过程中慢慢总结出来啃书的一些心得:
(1)心静,心静,心静
读这种书一定要心静,不浮躁。首先是要找个安静的地方。不建议在家读书,诱惑太多。处在WIFI环境中,有手机,有电脑,还有一张床,人的惰性马上就来了,谁也喜欢轻松的度过每一分。也许刚读几页就不自觉的拿起手机刷朋友圈了,而且还时不时有一些垃圾短信、微信群聊天等信息提示,分分钟分散你的注意力。如果没点自制力的话,拿手机到再次放下时,也许时间已经过去10几分钟了。
如果要下决心打算读一本专业相关的、内容晦涩的书,如龙书这般理论、概念众多,逻辑密度大的书,还是建议选个安静的地方,推荐会议室,因为桌面上很干净,也不会人来人往。而且我一走近会议室时,总感觉自己应该办点正经事儿(PS:不知道大家有没有这种感觉?)。一般我集中精力读30分钟左右时就会起身转转,或者去茶水间接一杯水,2分钟后继续读书。读晦涩的技术书时,个人建议不要跳来跳去,因为人都是急功近利的,看着这么厚的书,密密麻麻的代码与公式,头一下子就大了。也不建议给自己定一些类似今天非的读完这一章这种目标,容易走马观花,出现浮躁。哪怕只读2页,也要以读懂、学会为目标。
(2)动手、动手、动手
眼过百变也不如手过一遍。如果读编译原理,最好下载个相对完整的编译器实例进行实践。或者像我一样,直接下载Javac源代码,一个接近10万行代码的编译器,读源码的同时写了非常多的Demo,然后跟踪调试,逐步理解编译器处理代码的逻辑。这样不但能加深理论的理解,更能增强自己的动手能力。有时当我读懂一个功能的源码实现时,会有一种豁然开朗的感觉,原来这个语法功能是这样实现的呀。
(3)晨读
做为IT男的我,还是建议早上读一些技术书,这样可以达事半功倍的效果。现在的我每天早上6点起床,6点半到公司后就开始啃技术书了。等到7点半时正好吃顿早餐,休息的同时也能补充一下能量,然后回到会议室继续读,一天差不多会啃2.5个小时吧,周末会放松一天。个人觉得这样读书效率很高。短短的半年时间内,我已经啃了几本技术书了,希望以后一直坚持下去。
(4)给自己一个读书的目的
最后一条,也是最容易被人看轻的一条。如果要靠毅力、或者单纯抱着学习的目的来读这些书的话很难坚持到最后。所以个人觉得,读书一定要给自己一个目的,要不然对于工作几年后的我,又回到了大学时候的那种懒散状态了。回忆大学时候学习编译原理,漫无目的,自然也不会有动力、有毅力去坚持啃这种晦涩的书了。回想自己几年的职业生涯,感觉还是广而不精,于是在一年前,我下了决心,要深研编译原理这个方向。最近又打算写一本关于Javac源码深入分析的书,做为这一年来对这方面研究的总结,同时也是为下一个开源软件打一个坚实的基础。

昵称:做我自己的主人
来源:博客园