【问题标题】:PyObjC / Ruby bridge. Is it worthwhile ?PyObjC / Ruby 桥。值得吗?
【发布时间】:2023-03-14 22:40:02
【问题描述】:

多年前想编写 Mac 软件并拥有大量使用 Java WebObjects 的经验,我尝试了 java 桥接器,但决定硬着头皮学习 Objective-C(幸运的是,因为我不想让我的软件与桥接器一起被弃用)。后来我和 RubyCocoa 混在一起。我学习了 Ruby(发现它确实很有趣),但发现桥离成熟或稳定还很远,最后我结束了将代码移植回 Objective-C。

几年过去了,我想知道是否值得花一些时间使用 MacRuby,甚至学习 Python 以使用 PyObjC。尽管我很喜欢 Objective-C,但我记得当 Ruby 桥没有崩溃时,它的工作效率更高。我只是讨厌花时间再次使用崩溃的软件。

【问题讨论】:

    标签: objective-c cocoa macruby pyobjc ruby-cocoa


    【解决方案1】:

    如果您想尝试其中一种桥梁,我会说 MacRuby 是您的最佳选择。它由 Laurent Sansonetti 开发,他是 Apple 从事 Ruby 工作的高级软件工程师。

    它现在非常实用,并且与原生框架很好地集成。值得一看,特别是如果您已经有 Ruby 经验。

    【讨论】:

    • MacRuby 对于想要学习 Cocoa 编程的人来说完全是浪费时间。这是一座写得非常好的桥梁——目前最好的桥梁——但它仍然喜欢上法语课并选择用西班牙语写你所有的论文只是因为。
    • 是的,但是当我读到这个问题时,这不是一个人在问如何学习 Cocoa(或 Obj-C),而是一个已经有这种经验并且想知道他是否可能会用另一种语言更有效率。
    • 如果您想编写 Mac 软件(假设是 Mac GUI 软件),那么无论您对 Ruby 或 Python 有多少经验,使用桥接器都是浪费时间。 API、文档和设计模式都是原生的 Objective-C。您必须对语言有足够的了解才能编写代码,以了解如何构建除最简单的应用程序之外的所有应用程序。与桥的阻抗不匹配作斗争是不值得的。
    【解决方案2】:

    如果您想学习 Cocoa 编程,请忽略这些桥梁。它们只会让编写 Cocoa 应用程序变得更加困难,而且你会浪费大量时间来加快速度。

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

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

    另请注意,在尝试将不太相同的功能从一种语言映射到另一种语言时,桥必然会导致阻抗不匹配。

    坦率地说,如果您了解 Ruby,那么 Objective-C 应该非常简单;对象模型非常相似。

    【讨论】:

    • 我同意选择一个桥梁来代替学习框架所用语言的观点。同上 Ruby 对象模型的相似性。
    【解决方案3】:

    我的个人意见是为 Mac 原生应用使用 ObjC。

    使用 Ruby/Python,它们本来可以很好地工作,没有不可靠的接口和有问题的支持。

    【讨论】:

      【解决方案4】:

      这就是为什么这不是浪费时间。在某些情况下,Ruby 和 Python 具有出色且开发良好的库,这些库在 Objective-C 中不可用,而且不太可能。 这是最好的用例之一。

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

      MacRuby 已经死了。有商业的 RubyMotion。

      还有 PyObjc、RubyCocoa 和 mruby。

      其他有趣的用例之一是提供不像 AppleScript 和 OSA 那样臭的脚本功能。

      有正当理由。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-27
        • 2021-10-31
        • 2013-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        相关资源
        最近更新 更多