学习Ruby断断续续的快有半年了吧,从离开学校来到公司开始,直到现在,7月份到12月份差不多有半年的时间了。这半年的时间,主要学习了一些Ruby的基础语法和特性,之前没有购买《Programming Ruby》作为参考,只是通过《Book of Ruby》这本小书的翻译,边翻译边学习,从目前读完《Programming Ruby》一大半之后的感觉来看,我个人认为《Book of Ruby》更适合初学者,也更像一些通用并且常见的编程语言入门书籍,而《Programming Ruby》相对来说读来会有一些诘屈聱牙的地方,当然可能跟译者的翻译会有一定的关系,不过我还是非常相信译者的水平的,通篇也没有出什么错误,更何况做第二版了,各位译者在语言上也多多少少会有一些造诣,这样的情况是不大可能出现的。但是从语境的翻译上来看的话,肯定还是存在一定问题的,因为译者需要在出版社规定交稿的时间内将翻译完成,有的自己并不是很拿得准的地方并没有太多的时间去推敲和琢磨,会给读者带来一些困惑,但这肯定不会是什么很严重的问题。
其实最大程度上决定《Programming Ruby》在我心中并不是很时候初学者的原因是,该书的风格并不是“Programming Guide”的指南般结构,而是拽着你就往前跑的那种急先锋式开篇。虽然书中的第一部分是以快速浏览并讨论Ruby基础特性为主题,而且示例相对也都很简单,只需通过简单的阅读代码便可以掌握相关的内容了。但是有些点到为止而意犹未尽的感觉,虽然是介绍Array类,草草地介绍了Array类的一些基础特性,之后便进入其他主题。并不会像一般的编程入门书籍,随之而来的是对该类型API的详细使用介绍,而且在后继的一些章节中,会使用到一些前面并没有介绍过的Array的特性和方法,会让读者有点晕乎。虽然书中后半部分就是一个很好的API索引,但是我个人认为大部分初学者并不会也不能充分利用API文档,从我个人的经历来看,在我学习Java语言初期,都是看教学视频(这里需要感谢一下张孝祥老师)和一些示范程序,然后跟着敲代码,待到能独立写出一些简单的UI程序之后了,才会通过API文档去寻找自己需要的接口,慢慢地也就开始会对API文档有了一定的依赖性,对API的熟悉程度就在日常的编码过程中逐渐加强,对语言本身的犄角旮旯慢慢地熟络。在项目和工程的经历中,积累更多的编程经验之后,就会逐渐形成自身的编程思想和风格,开始思考设计问题和语言本身特性的结合。
《Programming Ruby》给我们带来的是直接的思想上的冲击,从来没有一本编程语言入门书籍如此直接。当然这可能跟Ruby语言本身的风格存在很大的关系,因为在当前的编程大环境中,Ruby确属异类,而且朋克得确实会让我们这些还停留在流行歌曲阶段的大众Coder有一些节拍过去强烈,节奏跳跃太快,歌词有些激进,如果你一直期待着有这么一种语言能一箭穿心地刺痛你,让你有一见钟情的快感的话,那么你成功了,而《Programming Ruby》无疑就是献给“Ruby”美人的最佳礼物。相信你们的邂逅来得会是激情热烈的,你们的火花也能成燎原之势。然而我们这些普普通通的Coder们呢?对目前的编程语言尚不是读得通透,也就将将能应付日常工作,但是又想多学习一门语言,为自己将来能另谋生计时多留条后路,纳闷我们该怎么办呢?
- 首先我们需要明确的是,Ruby本身就不是作为一门大众语言出现的,原本就是一名出色的黑客个人成功的试验。该语言天然拥有诸多黑客美好的品质和古怪的特性,实用,简单是哲学,而规则和变通则是语言的实际外在表现。Ruby语言对于代码的书写方式都有着非常严格的缩进需求,但是在其循环的书写方式上你能有超过5种选择,为什么会出现这样的状况呢?这是因为一名出色的黑客在阅读了众多美好以及丑陋的代码之后,他能明确地感受到代码的组织方式严重影响到产品的质量和维护成本,而目前的编程语言对于编程方式有着太多的条条框框,不能写出有创造性的代码来,这样Ruby就提供了很多让语言能更具创造性的特性,有很多很聪明的实现在语言中做好了,让Coder能有更多的时间花在业务的处理和优化上,而不是经常跟语言缠绵。
- 其次,我们要明白Ruby虽然原本是一个黑客们的玩具,但是现在她已经非常的成熟丰满了,在她的周边已经有很多成长起来的绅士了,例如鼎鼎大名的“twitter”。Rails框架的成熟和广泛应用,更是让Ruby从此走向了普通大众,社区的成熟,类库的完善,性能的提高,以及最近新发布的“Ruby语言规范”,都在昭示着我们的女王已经从那高贵的殿堂中走了下来,逐渐成为普通Coder手中的利器,你完全可以尝试着使用她来谋生计,而且在谋生计的同时,还能感受一个全新的语言给你带来的创新的快感和学习的快乐。
- 最后,学习Ruby最忌讳的就是拿之前的编程思维方式来对号入座,对不起没有这个号码。如果你想能痛快地学习Ruby并且精通她,那么请你放弃你之前的各种成见和陋习,但是请你保留你那些性能良好的算法,在Ruby中你可以使用更为精简的代码来实现他们。
在学习Ruby的过程中,我个人目前碰到最大的难题不是没有参考资料和时间,而是在思维方式上的转变还不够彻底,经常使用Java中的编程方式来思考Ruby中解题答案,所以一般都是无解,最终可耻的失败鸟。推荐两个非常好的Ruby练习题获取的地方,而且提供多个漂亮解决方案的地方哦 。一个是“Ruby Quiz”另一个还是“Ruby Quiz”。在这里,你能见到一些非常有趣的题目,可以用来练手,不过每一个都是重量级哦,更重要的是,我们能看到很多很多优秀的解决方案哦!