我刚刚发现了MacRuby / HotCocoa,并且非常喜欢他们正在做的事情的声音。
我基本上没有考虑自己制作 Cocoa GUI 应用程序的前景,因为我讨厌花时间和精力学习另一种基于 C 的语言 Objective-C。我不是说它不好,只是不适合我。
是现在,还是在很可能的未来,一个人能够在完全忽略 Objective-C 的情况下,仅使用 MacRuby / HotCocoa 制作具有实质性和一流性质的 Cocoa GUI 应用程序?
(编辑:桌面 Mac,而不是 iPhone)
“MacRuby 的目标是创建成熟的 Mac OS X 应用程序,这些应用程序不会牺牲性能,以便享受使用 Ruby 带来的好处。” - MacRuby 自述文件
MacRuby 并不是 Rob 所说的“翻译层”。它与 Cocoa 使用的是同一对象系统上的 Ruby。你当然可以用它构建“一流”的应用程序,也可以完成 Objective-C 不方便的事情。
注意不要将 MacRuby 与 RubyCocoa 混淆。Apple 并没有为 MacRuby '提取所有模板',因为它们从未默认发布。
此外,LLVM 与 Apple 平台的集成随着每个版本的发布而增长。XCode 的下一个版本将依赖 LLVM 进行高级代码完成、检查和编译。如果 Apple 不再强调任何东西,那就是 GCC。
人们可能还注意到,MacRuby 在 API 覆盖方面与 Objective-C 有类似的限制:例如,创建经过身份验证的应用程序或访问钥匙串需要两种语言的包装类。
通过翻译层构建一流的应用程序将非常困难。要获得本机所需的性能和行为已经够难的了。MacRuby 的方法给我留下了深刻的印象,尤其是他们能够管理诸如 Core Animation(一流 Mac 应用程序的关键部分)和 Core Data(这是困难的东西)之类的东西。我对他们使用更惯用的 Ruby 而不是 RubyCocoa 的丑陋印象深刻。但是有一些原因,Apple 已经“不再强调”(正如他们所说的那样)他们在 Java、Ruby、Python 等方面的多语言调戏。用一种语言编写这些东西已经够难的了。当您不通过半支持的翻译层时,很难做到正确。在实践中,您仍然需要学习 ObjC 语法来处理文档和所有现有代码。在实践中,你仍然需要学习 ObjC 模式来开发像样的 Mac 应用程序。
MacRuby 很有趣。即使作为一个经验丰富的 ObjC 程序员,我也可能会考虑使用 HotCocoa 来破解原型和尝试接口。但这不是我用来构建的那种东西,就像你说的那样,“具有实质性和一流性质的 Cocoa GUI 应用程序”。
作为开发人员,我们的部分工作是拥有一袋工具。就像一个好的木匠有几个不同的锤子,加上撬棒、钉子、几种方形和十几种其他工具,程序员应该熟悉各种语言、编程范式、平台和环境。然后,她应该能够为工作选择正确的工具并有效地使用它们。在 Mac 编程的情况下,该工作的正确工具包括 Xcode、IB、ObjC 和 Cocoa。避开它们就像木匠避开框架锤和速度方块一样。他们只是工作的一部分。
可以使用 Apple 的框架编写一个看起来就像原生 ObjC 应用程序的 Ruby 应用程序。
但不要相信我的话,请在此处查找此类应用程序的示例。它们的外观和性能都足够原生,以至于普通用户无法区分原生 Ruby 和原生 ObjC。
我确实花了一些时间在 RubyCocoa 上,但让我研究 Obj-C 的是,最终 Cocoa 和其他框架的所有文档都是用 Obj-C 语法编写的。就其本身而言,Obj-C 并不是一种非常大的语言 IMO,如果您在其他一些基于 C 的语言和 OOP 方面有一些经验,那么根本不需要花很长时间来学习。相当大的是框架工作,Cocoa 等,至少使用 rubyCocoa 你仍然需要学习框架。除此之外,我很难相信像 Ruby 这样的脚本语言可以提供与编译的 C 语言相同的性能。
嘿,我试过了,然后放弃了,因为在看到它只是 ObjC 的替代品之后,我突然觉得 ObjC 是一门很棒的语言。我学习了 ObjC,我喜欢它。
MacRuby 是某人的宠物项目。如果有人将一个编译器放在一起,可以从 Ruby 代码中生成本地二进制文件,那么它很可能有朝一日会取得一些进展。如果他们只是继续做他们现在正在做的事情,那么不,它将一直是一个小众产品,直到有人退出或被解雇,他们的工作与 Java Cocoa 绑定和 WebObjects 一起被埋没。