Ruby或Python因速度问题不适合iPhone或Mac应用开发吗?有没有能提高速度的编译器?
我最近在学习一点Objective-C,发现它和Ruby一样,都是源自Smalltalk。所以我在想,如果用Ruby来开发iPhone或Mac应用(假设苹果把XCode改成支持Ruby),这样做真的不合适吗?主要是因为速度的问题吗?比如说,愤怒的小鸟如果用Ruby开发,可能就没有现在那么流畅,而用Objective-C开发的话,它是经过编译后直接运行在机器代码上的。
那么,现在有没有办法把Ruby或Python的代码编译成机器代码,这样它们的运行速度能和Objective-C程序差不多呢?
3 个回答
Python和Ruby本身的速度并不是特别快,但现在很多程序的设计并不是单靠它们来完成所有复杂的工作。举个例子,如果你想把一个PNG文件保存为JPG格式,你肯定会使用系统自带的功能来实现。在这种情况下,不管是用Obj-C处理鼠标点击需要0.00001秒,还是用Python需要0.001秒,这都没什么关系,因为用来转换图像的优化系统代码在两个程序中是完全一样的,假设它运行需要半秒钟。另一方面,如果你在自己设计一个低级的数据处理工具,那你可能就需要用到C语言了。基本上,所有在Mac上使用的语言都允许你写一些C代码,并从其他语言中调用它,所以这也不会拖慢你的速度。
选择语言时,通常要根据大家在解决这个问题时使用的语言,再结合你自己的能力来决定。
Ruby和Python在Mac和iOS开发中速度还算可以,具体要看你的应用对性能的要求。对于大多数使用场景来说,这些语言的表现都是可以接受的。
苹果正在开发一个专门用于Mac应用开发的Ruby版本,叫做MacRuby。另外一个选择是使用RhoMobile,这是一个使用Ruby的移动开发框架。还有,OS X系统自带Python和PyObjC库,这让你可以用Python开发Cocoa应用。
如果你想加快Python应用的速度,可以尝试以下几种方法:
- 使用Cython。这是一种类似Python的语言,可以编译成C代码,方便与C代码互相配合。
- 使用Pyrex或Shedskin。前者可以把Python的一个子集编译成C,后者则编译成C++。
- 使用PyPy或Psyco。这两者都可以实时把Python代码编译成机器代码。
对于Ruby,你可以看看Rubinius,这是一个可以实时编译成本地代码的Ruby实现。
在桌面上,这些语言都很好用,对于Python来说,你可以用py2app来发布你的应用。虽然你不想在解释型语言中写底层的图形处理代码,但这正是像PyGame这样的库的用武之地。
(这并不是特别的优势,但值得一提的是,iOS上最受欢迎的2D游戏框架之一其实是一个为Python移植的2D游戏框架:http://cocos2d.org/)
直到最近,iOS开发者的条款明确禁止运行解释器,所以在iPhone上没人用Ruby或Python。用这些语言编写的应用可能会开始出现,但现在你还找不到太多相关的信息。