• 一个外行人眼中的 Ruby 语言。 我真的不会编程,但有一天,好奇心告诉我:“你都错过那么多美好和有趣的东西了,难道你就不想再试试吗?万一学会了呢?”于是,我便开始了一段为期两周的真正的学习之旅… …

    那还是在 2007 年冬天的一个下午,我们百无聊赖的游荡在新华书店里,学计算机的好友翻着一本“程序员”对我说,“借用心理学家的话说:Ruby 有一个很长的过去,却只有一个很短的历史。”我一脸茫然,却不知所云,后来才了解到,原来 Ruby 语言借鉴了很多前辈语言的长处,最终结合松本先生个人对程序语言设计的初心、理念和意志,才成就了 Ruby 语言自己。至今我还比较清楚的记得当初好友对 Ruby 语言不太认同的那张表情。

    时隔多年,当我认认真真的通过 Kevin 老师的在线 Ruby 课程体验过一回 Ruby 语言后,我终于觉悟了,原来还有一种对我来说比成为一名程序员更令我感到骄傲的事情,那就是从学习 Ruby 语言中体会到了程序语言的美!正如 Ruby 语言之父松本先生所说:“Ruby 就像人的身体一样,表面上看来简单,但内部却相当的复杂。”毫无疑问,这是一次勇敢的尝试!尽管它无关胜败,尽管松本先生不在意别人是否认为 Ruby 语言就是一锅拿来主义风味的大烩菜;尽管松本先生在某次采访中甚至不无遗憾的说到(大意),设计 Ruby 语言的初衷是为了带给程序员快乐,提高工作效率,但是在借鉴前辈语言方面显然有些用力过猛,貌似有点过度设计了,还举了 Perl 语言的例子。

    “科技以人为本”,这句诺基亚曾经的宣传口号,一语道破!当我们重新站在科技与人文的十字路口,不难发觉,Ruby 语言拉近了我们非程序员与机器之间的距离,这种近似人类直觉化的思维方式所带来的温暖,有时候很难从其它语言身上体会到。Ruby 语言并不完美,但已然成为对我这样一个门外汉更为友好的先行者,作为一门程序语言,Ruby 语言必然会被超越,正如人们形容康德那样,你可以超越他,但你却终究无法绕过他。

    我不是程序员,也没有打算将来依靠编程赚钱,在粗浅的比较过几门程序语言之后,我选择了 Ruby 语言,只是因为自己感受到了一些额外的、与众不同的温暖和开心!她使我从心底体验到了美好的感觉,仅此而已,这就是我,一个外行人的偏见。

    最后总结一下答案吧: 问题 1:你觉得什么是优雅的代码?分享一下你认为优雅的 Ruby 代码。 回答:谈到优雅,关乎审美,涉及品味。就代码而言,我的偏见是:这是一个矛盾的世界,所谓优雅的代码也应该是一种矛盾平衡的产物,而非 Geek 仅能欣赏的代码,不同的只是平衡的要素而已。看到之前有很多朋友列举的代码,对于能看懂的部分,感同身受。 '123'.to_i # => 123

    name = "Ruby"
    name.length
    puts "Hello, #{name}!"    # => Hello, Ruby!
    

    condition? true : false

    def hi name    # 或 def hi(name)
      puts "Hello, #{name}!"
    end
    name = 'Ruby'
    
    hi name  # 或 hi(name)
    

    比如,当我在书店里第一眼看见 Time.now,当时我就走不动了。 作为一个初学者,我倾向于利用 Ruby 语言来更有效率的完成我的作品,又不失快感,在乐趣的激励下激发我的创造力,这种隐性的价值是很大的!

    问题 2:接触 Ruby 后,你的编程环境有什么变化?例如,不用 IDE,而是用文本编辑器写代码;弃用了爱用多年的 Windows,投向了 Linux 甚至苹果的怀抱。 回答:曾经体验过 IDE,但是作为一个门外汉,根本无法享受这种高大上的待遇,好在比较早的喜欢用上了 GNU/Linux(ArchLinux、Ubuntu) 和 Vim。现在买了一台 Macbook,单就 Ruby 本身而言,感觉 Linux 对 Ruby 的支持一点也不比 Mac 差。

    问题 3:你用 Ruby 做过提高工作效率的小工具(Gem)吗?你的 Ruby 最佳实践是什么? 回答:暂时还没有学过如何制作 Gem,但是,通过学习 Ruby 语言的短暂经历,我现在已经迫不及待的准备上手体验一把了。就目前为止,我能明显体会到的最佳实践,应该有两个方面:一方面是基于 Ruby 语言的元编程能力之上的符合松本先生设计理念和初衷的语法体系和结构体系 (gem);另一方面是围绕着 Ruby 语言衍生出的工具链体系,而这两者统一构成了 Ruby 语言的生态圈。

    一种莫名的兴奋感在好奇心的催化下油然而生。:-)