Ruby世界地图(1):Ruby闲话一二

Ruby如果真的很牛,为什么在国内并不流行?

资深的Ruby程序员,往往会这么回答

为什么一个好的事物,一定要流行呢?

然后开始举出老掉牙的Mac等例子。但是,新手希望的不是这样的答案,而是想了解背后的逻辑,以判断自己是否适合Ruby社区。我尝试写下自己作为新手程序员的理解。

Ruby从日本传入欧美较晚,真正被欧美开发者熟知,是Pragmatic Books书店成立,2004年发布自身第一本Ruby图书为标志。2001年发布的敏捷宣言的多位撰写者都采纳Ruby作为开发语言,Pragmatic Books书店也开始借助Ruby图书与敏捷开发树立自身的差异化竞争策略。同期,2004年7月Rails发布,开始引起欧美开发者社群大幅度关注。

传入中国,又相应地晚了2年,闷声发财的典范potian大规模用于自身的项目,然后于2006年在iteye上力顶,继而引起了robbin的跟进,《程序员》杂志借助于web2.0的号角的宣传,才开始引起国内开发者社群关注。

从时间上来看,Ruby虽然发布较早,但远远不能python与php等相比较。对于不熟悉的事物,人们会先天地持有怀疑态度。在Ruby进入中国之前,

如果我们将时间回退到2002年、2004年,还可以找出一些当时流行的,比如asp社群(动网论坛为代表),比如delphi社群(大富翁)。

直到今天,Ruby可以说仍是在普及阶段。因为,最重要的标志,Ruby开发者社群并没有壮大。有影响力的Ruby中文社区站点,我们数不出来。我们只能提到iteye?以Ruby为主的创业故事,我们听到的更少,这几年国内互联网世界,风生水起的项目,与Ruby中文社区,其实关联不大。更多看到的是,采用Ruby项目的失败案例。

根源是什么?答案很简单,钱与时间。

与Python不同,多数国外高校非计算机专业,默认编程教学语言就是Python,从而使得Python能够得到大量有时间、有智力的博士生支持。而Ruby在科学计算方面的先天弱势,这方面进展缓慢。Ruby与Rails社区开发者往往一上来,就直接奔上与钱关联较密切的领域。当Ruby与Rails促进了自身的商业进展,往往会力捧,反之,则会离它远远的。

在Ruby社区中,排名靠前的开源项目,我们较少看到那种较有学院派气质的项目,多是实用主义的项目。

更要命的是,很少有哪种排名较靠前的语言,像Ruby核心团队一样,核心维护团队还无法财务自由,具备良好的商业模型,来促进该语言发展。什么?Rails团队已经财务自由了?Rails并不代表Ruby。DHH也并不代表Rails所有团队成员。

当应用情景回归到国内,我们可以更好地理解Ruby社区的窘境。

在种种国内现状的束缚之下,2007年加入Ruby社区的朋友,有不少已经离开了。因为,我赚钱只能通过互联网消费者市场,还只能通过webapp,随着移动互联网时代来临,部分原来的Ruby社区成员,也开始转向ios开发。2010年以来,还有部分开始转向nodejs开发。这样一来,人气更加涣散,很多新手非常基础的安装、入门等问题还停留在08年、09年那批中文资料上。多次折腾,多次失败,不由地开始放弃Ruby。

这可能将是未来Ruby社区长期面对的一个问题,在社区高速发展的时候,

幸好,现在并不代表未来。Ruby核心团队的饭碗问题,逐步得到了更多从Ruby中受益的厂家,比如Herokugithub的支持;Ruby社区,部分精力旺盛的社区英雄,也开始关注科学计算,比如还是雏形的sciruby项目。对于Windows的支持,也慢慢有了Railsinstaller这样的项目。

Ruby的适用范围是什么呢?

现在的时代是个混合语言时代,不要争议语言的好坏。每个语言都有自己的适用范围,在这个适用范围中,它将取得事半功倍效果。Ruby的适用范围是什么呢?让我们分二个方面来理解:适合开发的应用;适合的人群。

适合开发的应用

由于Ruby已经错过了桌面应用发展的最佳时机,因此,现在的社群重心几乎全部集中在Web开发与移动开发上。包括Ruby语言发明人Matz最近刚刚提到的,明年即将发布的mruby

所以,如果你要构建一个Webapp为主的应用,Ruby是首选。但,在这里,请记住,Ruby<>Rails。开发webapp,Ruby社区还有类似于Sinatra等选择。

适合的人群

Ruby更强大的地方在于它适合的人群:准备成为创业者的业余程序员。

首先是语言本身。这点至今为止,我没有看到超过Ruby社区的。Ruby实际上大幅度降低了程序写作的难度。业余程序员刚开始最难理解的是面向对象、如何抽象现实世界以及如何循环执行某种操作,Ruby语法将让这些变得格外容易理解。对于多数Ruby项目来说,超过1万行代码,都可以称之为大项目了。可能你会说,其他动态语言也是如此。但,Ruby是从整体上,构建了一个生态链,来降低程序员代码写作成本。掌握基本语法之后,不知道用哪个三方库?上上ruby-tool吧;自己有正在开发的项目,直接托管在github吧;不知道如何提高自己的Ruby开发能力,直接看github里面的项目吧。

与php\asp等动态语言又不一样,Ruby自身纯正的面向对象思维习惯,能够使得业余程序员上手就拥有良好的开发习惯。Rails的大量约定,更能在未来的开发与思考中较少走弯路,直接采用世界一流水准的webapp开发实践。丰富的webapp生态链,更让一名业余程序员能够在短期真正构建出一个商用的webapp。当掌握这些习惯之后,迁移到其他程序语言,将非常容易。慢慢地,业余程序员就成为专业程序员了。

同时,还有第二点的差异。Ruby社区的创业氛围。创业者影响创业者。如果说Ruby语言能够让一名完全不懂编程的业余程序员快速迈入程序世界,那么,来自Reworkget real这两本书为创业者提供了方法论。与多数社区不一样,在Ruby社区中,经常可以看到大量极具想象力的项目,比如homebrew等等。在这些富有想象力的项目中浸润久了,你都不好意思山寨了。开句玩笑,Ruby社区将让你学会如何做一名技术创业者而非员工

最后想说的是,Ruby社区是一个非常富有想象力、创造力与友善的社区。希望本系列能让你对这个外人看来怪怪的社区了解更多。

21 November 2011
分享到: 更多