Ruby学习第一天

4

我一直关注web领域的快速开发,虽然自己用PHP已经很顺手了,但是他那蛋疼的语法,让我这种喜欢优雅开发的人会觉得很累。所以一直对号称敏捷开发旗帜的ROR有着浓厚的兴趣,但一直苦于没有时间去深入研究。最近终于下定决心要摘下这颗宝石,这一系列文章只是我学习过程中的笔记,大家如果觉得有错误的地方还请指出,毕竟我在ruby领域是一个不折不扣的初学者

ruby-5f063c0de539ec15ee4f91192bdb0897.png

在Mac上安装Ruby

Mac其实已经内置了Ruby,但是版本不是最新的,在Ruby官网上我得知最近的版本是2.1.4,而Mac上是1.9.x

这个问题以前可能很复杂,现在有了rvm以后就很简单了

RVM 是 Ruby enVironment Manager 的简写,它可以帮你方便的管理ruby环境,可以在同一台机器上安装不同的Ruby版本并切换

安装RVM仅需一行代码

curl -L get.rvm.io | bash -s stable

然后安装最新版Ruby,同样也只需一行代码

rvm install 2.1.4

OK,所有的工作已经完成,运行ruby --version你就可以看到版本已经更新了。

最适合初学者读的文档

Ruby的文档很多,中文的英文的都有,我个人不喜欢一开始就读API,因为可能会像无头的苍蝇,所以找了一圈之后发现 Chris Pine 撰写的 《Learn to Program》 是比较适合初学者的。

虽然它有很多细节没照顾到,虽然它很简略就区区10页,但是它把这个语言的重点都照顾到了,而且不会一开始就吓到你。

开发环境

我已经不打算折腾编辑器了,建议大家直接花钱买 RubyMine 好了,一步到位。

一些有趣的细节

虽然我有过其他语言的基础,甚至还很熟悉 CoffeeScript,但是刚刚接触 Ruby 的
转载自我的博客:http://www.l4zy.com/posts/learning-ruby-day-1.html

时候还是有点不适应,它的语法太灵活了,所以就有了这个问题

http://segmentfault.com/q/1010000000760789

第一天的感受

我想我大概开始渐渐了解为啥 Ruby 开发这么优雅的原因了,它总是让你尽量使用一个 best way,这样大家不必把大把时间花在寻找哪个方案去达到目的,而是去思考我已经有了这些最佳方案,如何通过它们达到目的。

这也就是为啥PHP的框架如此之多,而且互相不买账,因为它的哲学与 Perl 一脉相承 -- 一个问题没有最优解,但有很多解。而 Ruby 的世界就简单的多,大家都围绕在 Rails 周围,不断完善它,但又保持风格统一。


如果觉得我的文章对你有用,请随意赞赏
已赞赏

你可能感兴趣的

Martin91 · 2014年11月07日

其实正确说Ruby也是崇尚多种解决方案的,比如一个长度方法,Ruby里边可以有array.lengtharray.count以及array.size等等,其实都是一样的(内部只是一个alias)。我觉得从语言层面看,Ruby是追求多解的,但是Rails之所以一直是最热门的框架,还得归功于它本身的包容性以及社区的统一。Rails一直以来都是在不断地吸收社区的最佳Ruby实践,所以大家都会认为Rails是不二之选。另一方面,Ruby社区又是很统一的,通过不断吸收好的实用的技术,避免了社区的分裂。以上只是个人拙见。

+5 回复

n͛i͛g͛h͛t͛i͛r͛e͛ · 2014年11月07日

大部分赞同,补充一点像你提到的“多解”的例子(多种方法返回数组长度),还有一层用意是 Ruby 特别强调代码的语义化,同样是“长度”,在不同的语境下不一样的单词也会有细微的语义差异(但是反映的本质是相同的),因此注重代码可读性的程序员可以选择“读”起来更接近自然表达的方法名。当然这只是可读性的一部分,不过这一考量也的确吸引了很多注重代码语义化的开发者。Wordpress 有一句著名的口号“代码如诗”,除了代码所表述的内容和形式可以“如诗”以外,代码本身的语义能力也是“诗意”的体现,在这方面 Ruby 其实是要更优于 PHP 的。(无意诋毁或抬高任何一方,语义化本身就是你情我愿的事情,不在乎就当我胡说好了)

回复

酱糕 · 2014年11月19日

不单单只有rails吧,只是它比较出名而已。

回复

weakish · 2014年12月23日

alias 只针对 Array 的情况,其他的不一定,比如 Fixnum 有 size 没 length

回复

Martin91 · 2014年12月23日

是的,谢谢纠正!

回复

kumfo · 2018年01月08日

joyqi也会写博客?被盗号了?哈哈哈

回复

载入中...