按说我应该已经过了问这个问题的时候了,但最近越来越觉得这确实是个问题.自我在电脑上敲下第一个helloworld vb6程序以来到现在已经7年多了.7年多的时间,我接触了不少的语言.也曾经觉得会很多语言是多么多么的牛b而抱着
有限的几个参考同时死磕几门语言.随着经验的增长,开始觉得语言虽多但都是那么回事,核心还是要靠算法和设计.于是这方面的兴致也慢慢淡了下来.
不过,我仍然觉得定期学习一门新的语言对于一个程序员是很有必要的(受the pragmatic programer的影响).但是近两年觉得学新语言越来越"难"了.为什么难呢?以我近两年接触的几门语言为例,它们是perl ruby 和 tcl.
刚拿到这几门语言的时候通过翻相关的资料,弄清楚控制逻辑的编写方法,如果有尚未接触的概念,学习之.例如ruby的block对于惯用c系语言的我就是个陌生的概念.这样在很短的时间内,借助查文档,我就可以阅读并理解该门语言所编写的代码了.
接下来就是"难"的部分了;熟悉一个东西的方法莫过经常和它打交道了.常用它们写程序是最好的学习方法.但问题就在这儿.刚接触的东西,对库之类的都不熟,于是用新学的语言得翻着文档开着搜索引擎做.有时候一时找不到合适的方法还得和在文档中死啃半天.用原先顺手的语言半小时解决的问题改用新语言可能1小时还在弄.于是在大多数情况下,特别是工作中.还是捡起熟悉的语言开干了.
时间一长,学过的东西老不用.自然会慢慢淡忘.于是才啃了perl不到两个月的我突然想捡起来用的时候却不得不再去翻那些语法资料.因为刚打开编辑器想敲键盘就冒出了一大堆问题:"hash表是怎么写的来着?" "数组是@开头还是#?"
同样的问题还可以推广开来,如何学习一门新的技术?以正则表达式为例,刚开始接触RegExp的时候,我才学写了不到一年的代码.那些表达式在我看来如同天书一般,于是没有学.之后再接触正则的时候我已经能自行写出同等功能的函数了.写一段抽取HTML内容的代码可能花费我15分钟至半小时.而查着文档写同样功能的正则包括中间因为不熟而做的的各种测试则可能会花上我一个小时以上.如此循环,虽然写那些解析代码让我在字符串解析的算法上获益匪浅,但至今我还是正则白痴一个.
有没有摆脱这种工具使用惯性的方法呢?欢迎各抒己见.