RubyMotion之父:Ruby是目前替代Objective-C的最佳iOS开发语言

  1. 云栖社区>
  2. 博客>
  3. 正文

RubyMotion之父:Ruby是目前替代Objective-C的最佳iOS开发语言

大熊猫侯佩 2014-07-04 11:12:00 浏览856
展开阅读全文

发表于2012-08-16 00:5221716次阅读| 来源CSDN24 条评论| 作者杨鹏飞
摘要:曾几何时,PC端有那么多种语言可以选择,而移动平台却没得可选?这不科学!也不合理。Laurent Sansonetti,这位在苹果公司工作了7年、负责iLife并且是核心OSX/iOS技术的开发者,首先开发了Mac平台下的Ruby实现:MacRuby,在此基础上又开发了iOS平台下的Ruby实现

这不科学

根据TIOBE历史数据,Ruby和Java、Objective-C同属世界十大编程语言,其中Ruby位列第十,Java第二,Objective-C第三。根据CSDN 2011薪资调查结果显示,Ruby程序员中,月薪过万所占比例超过33%。

曾几何时,先辈们告诉我们:Android、黑莓是用Java开发,iOS则是Objective-C,Symbian是Qt。但这些都可以在PC端进行开发,而移动平台却没有选择的余地?月薪10K有没有!这不科学,也不合理。

RubyMotion:为需求而生

正是由于不同的理念、不同的需求才导致编程语言分化如此严重。虽然在苹果平台上大多数开发者已经(被迫)适应了Objective-C,但仍然有大批的Ruby爱好者无法忍受Xcode和Objective-C。我曾在《用Ruby开发iOS本地应用的最佳实现:RubyMotion》一文中提到,O'REILLY图书《MacRuby》作者Matt Aimonetti就吐槽“Xcode经常崩溃,界面复杂”。

介于此,Laurent Sansonetti,这位在苹果公司工作了7年、负责iLife并且是核心OSX/iOS技术的开发者,首先开发了Mac平台下的Ruby实现:MacRuby,在此基础上又开发了iOS平台下的Ruby实现:RubyMotion。RubyMotion的知名度正在圈内不断提升,在邮件列表里不乏看到国内开发者的身影,引起了我极大的兴趣,因此发生了接下来的对话。[ 注:其中Y是我名字拼音的首字母,L代表Laurent ] 

Y:如果我叫你“MacRuby和RubyMotion之父”的话,不会被打吧?这俩兄弟有啥区别吗?

L:我觉得没问题。当然,两者虽然都是我创建的,但能够获得现在的成绩肯定离不开大量开发者的帮助。两者之间最主要的区别首先在于针对的平台不同,其次是RubyMotion是100%的静态编译,为了照顾iOS设备的处理能力以及App Store的限定规则;而MacRuby则是JIT编译,得益于Mac平台相对更强大的处理能力。

Y:为什么开发者应该使用RubyMotion?

L:俩字:简单。如果你会Ruby,知道Rake,知道一些常用命令,接下来只需了解一下iOS的API,就可以着手开发iOS应用了。你用RubyMotion创建一个项目,在你惯用的代码编辑软件里写代码,然后在模拟器上以及真机上运行,最后提交到App Store。当然,我们还是需要Xcode提供的SDK、模拟器以及数字签名功能,只不过不需要全程使用Xcode,尤其是在撰写代码的时候。

Y:Objective-C很难学吗?你的看法呢?为什么选Ruby?

L:Objective-C是C的一个超集,20年前的时候可谓小革新了一把。但是现在,很多学校已经不教授C语言了,而且很明显C已经成为“高级汇编”语言,大部分开发者更倾向于更高级的语言,例如Ruby、Python或者Javascript。Ruby是Objective-C之外非常好的选择。它不基于C,很安全;拥有简洁清晰的语法;提供了元编程的特性,从而可以创建分层抽象(或者领域特定语言,简称DSL),Rails就是Ruby的一个很好的例子。

Y:RubyMotion是如何处理资源占用的?和Objective-C相比如何?

L:因为Objective-C的GC机制在iOS上不能用(有些开发者对此也颇有微词。编者注),所以我们特别为RubyMotion写了一个内存管理系统。RubyMotion基于Objective-C的引用计数系统并且依赖于autorelease pools (NSAutoreleasePool)实现基于范围内存管理。总之RubyMotion将retain/release信息发送给开发者。最后的结果就是,用起来感觉好像真有一个完整的GC引擎似的。在资源占用方面,二者相当。RubyMotion开发的应用和Objective-C使用同样的运行时,并且能够达到和原生应用一样的运行效率,但肯定要比HTML5应用快。

Y:未来的计划是什么?

L:现在RubyMotion还必须要调用iOS的API,很多时候这些API的名字非常长,这可不是Ruby的风格。未来随着分层抽象的不断完善,Ruby开发者就可以完全抛开iOS的API,纯使用RubyMotion的类库(例如BubbleWrap、TeaCup、Nitron等)。于是我们的应用的代码就可以更短,拥有更好的阅读性和可维护性,更Ruby的感觉。

这不科学

或许在未来,移动设备的处理能力将和现在的PC设备相当,所有PC端的开发语言都可以进行移动应用的开发,曾经的应用开发者对孩子说:“这不科学!”

图片来源:collegeteacher

网友评论

登录后评论
0/500
评论
大熊猫侯佩
+ 关注