hha*_*fez 8 ruby python cocoa pyobjc ruby-cocoa
我一直想要玩Ruby或Python,同时我一直想做一些Cocoa编程.
所以我认为实现这两个目标的最好方法是使用Ruby或Python到Objective-C桥(PyObjc或RubyCocoa)开发一些东西.
我知道理想情况下,为了获得最好的学习经历,我会独立学习每个技术,但我没有时间.:)
所以我的问题是哪个是更成熟的平台,PyObc或RubyCocoa,我正在寻找的主要内容:
关于第5点,我不希望整个Cocoa API可以通过任何一个桥接器获得,但我需要有足够的Cocoa API来开发一个正常运行的应用程序.
Chr*_*son 12
虽然你说你"没时间"独立学习技术,但学习Cocoa的最快途径仍然是用它的母语学习它:Objective-C.一旦你理解了Objective-C并且已经掌握了Cocoa框架的初始学习曲线,你就可以更轻松地选择PyObjC或RubyCocoa.
我会回应克里斯的评估,并将扩展一些为什么你应该学习Objective-C来学习Cocoa.正如克里斯所说,Objective-C是Cocoa的基础和本地语言,其许多范例与该谱系密不可分.特别是,需要选择器和动态消息解析以及在运行时修改类的能力来实现Cocoa技术,例如分布式对象和绑定.虽然这些功能可以在其他动态语言(如Ruby和Python)中使用,但语言模型中存在足够的不匹配,您必须至少了解Objective-C才能理解Cocoa.我建议你先看看上一个问题进一步讨论:我是否必须学习Objective-C才能进行专业的Mac开发?
幸运的是,Objective-C非常容易学习.我经常告诉人们,他们需要花一天的时间来学习来自C/C++/Java或LISP,Scheme或任何"更新"的动态语言(如Ruby和Python)的Objective-C.除了扩展你的想法之外,你将学会至少阅读几乎所有Cocoa文档和示例中使用的代码.
至于Ruby与Python,桥接功能非常相似.事实上,他们都使用Apple的BridgeSupport(Leopard附带)来提供桥接描述.两者都得到Apple的支持并随Leopard一起发货.这是个人品味的问题,你喜欢哪种语言.如果你选择Ruby,我建议你给MacRuby看看.它绝对是Ruby on OS X的未来,因为它在Objective-C运行时之上重新实现了Ruby运行时.这提供了一些不错的性能和概念优势(包括与Objective-C垃圾收集系统的集成,PyObjC目前缺少使用本机python gc的功能).MacRuby还包括一个自定义解析器,它使桥接的objective-c方法的语法更好一些.MacRuby的缺点是,在撰写本文时(2009年6月),它还没有为生产级别的使用做好准备.既然这听起来像是一个学习项目,那可能不是问题.