PyObjC / Ruby桥接技术。是否值得使用?

4
数年前,我希望编写Mac软件,并拥有大量的Java WebObjects经验,因此我尝试了Java桥接器,但决定咬咬牙学习Objective-C(幸运的是,因为如果使用桥接器,我的软件将被弃用)。后来我尝试了RubyCocoa。我学会了Ruby语言(确实很有趣),但最终发现桥接器远未成熟或稳定,最终还是将代码转回Objective-C。

多年过去了,我在想是否值得投资一些时间学习MacRuby,甚至学习Python来使用PyObjC。尽管我喜欢Objective-C,但我记得当Ruby桥接器没有崩溃时,我比较容易提高生产力。我只是不希望再次投资时间最终得到崩溃的软件。

4个回答

3

如果您想尝试其中一种桥接技术,我会建议使用MacRuby。该技术是由Laurent Sansonetti开发的,他是苹果公司的高级软件工程师,正在致力于Ruby开发。

现在它已经非常实用,并且与本地框架完美结合。值得一看,特别是您已经有了Ruby编程经验。


MacRuby对于想学习Cocoa编程的人来说完全是浪费时间。它是一个非常出色的桥梁——目前最好的——但这就像上法语课,却选择用西班牙语写所有论文一样。 - bbum
2
是的,但是根据我阅读问题的理解,这不是一个要求学习Cocoa(或Obj-C)的人,而是一个已经具备这种经验的人,想知道是否在另一种语言中更有效率。 - paulbailey
1
如果你想编写Mac软件——假设是Mac GUI软件——那么无论你在Ruby或Python方面有多少经验,使用桥接都是浪费时间。API、文档和设计模式都是本地的Objective-C。你必须足够熟练地掌握这种语言,才能理解如何构建除最简单的应用程序之外的所有内容。与桥接的阻抗不匹配斗争根本不值得。 - bbum

1

如果你想学习Cocoa编程,请忽略桥接。它们只会使编写Cocoa应用程序更加困难,而且你将浪费大量时间来适应。

具体来说,你需要学习Objective-C才能理解系统框架的API和设计模式。此外,所有文档和工具都是专门为支持Objective-C而编写的。

在学习Cocoa编程中,你将花费大部分时间在上述API和设计模式上;相比之下,实际语言部分相对较小。

还要注意,桥接必然会引起阻抗不匹配,试图将不完全相同的功能从一种语言映射到另一种语言。

坦白地说,如果你知道Ruby,那么Objective-C应该非常容易;对象模型非常相似。


我同意选择桥接而不是学习编写框架的语言的观点。关于 Ruby 对象模型的相似性也是如此。 - uchuugaka

0

我的个人意见是在Mac本地应用程序中使用ObjC。

在不可靠的接口和支持有问题的情况下,使用Ruby/Python在它们本来就能良好工作的地方。


0

以下是为什么这不是浪费时间的原因。在某些情况下,Ruby和Python拥有非常棒且完善的库,在Objective-C中不可用,也不太可能出现。 这是最佳的使用案例之一。

例如:您不想在Objective-C中重新实现Rails(有些人可能会),但您可以轻松地使用它,其中的部分来为MacRuby提供动力。

好吧,MacRuby已经死了。还有商业版的RubyMotion。

仍然有PyObjc、RubyCocoa和mruby。

另一个有趣的用例是提供脚本功能,而不像AppleScript和OSA那样糟糕。

有合理的理由。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接