簡體   English   中英

PyObjc vs RubyCocoa for Mac開發:哪個更成熟?

[英]PyObjc vs RubyCocoa for Mac development: Which is more mature?

我一直想要玩Ruby或Python,同時我一直想做一些Cocoa編程。

所以我認為實現這兩個目標的最好方法是使用Ruby或Python到Objective-C橋(PyObjc或RubyCocoa)開發一些東西。

我知道理想情況下,為了獲得最好的學習經歷,我會獨立學習每個技術,但我沒有時間。 :)

所以我的問題是哪個是更成熟的平台,PyObc或RubyCocoa,我正在尋找的主要內容:

  1. API的文檔
  2. 教程
  3. 工具
  4. 支持性社區
  5. 可可API的完整性通過橋梁可用

關於第5點,我不希望整個Cocoa API可以通過任何一個橋接器獲得,但我需要有足夠的Cocoa API來開發一個正常運行的應用程序。

雖然你說你“沒時間”獨立學習技術,但學習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月),它還沒有為生產級別的使用做好准備。 既然這聽起來像是一個學習項目,那可能不是問題。

我會說兩者大致相等。 在某些地方更好,在其他地方更糟。 但我不建議學習Cocoa。 像克里斯說的那樣,Cocoa需要對Objective-C有所了解。 我比Objective-C更喜歡Ruby,但我仍然不建議用它來學習Cocoa。 一旦你在Cocoa / Objective-C中擁有堅實的基礎(沒有雙關語),那么橋梁對你有用。

ObjectiveC遠不如Python或Ruby那么有趣或高效。 這就是為什么人們想要選擇具有良好Objective C訪問權限的python或ruby。 建議他們學習目標C首先忽略了點imo。 我對pyobjc有很好的評論。 它能夠與Objective C框架無痛地進行互操作,這是非常棒的。 我對Ruby Cocoa的經驗較少,這部分是因為我上次看起來似乎沒有那么干凈,相對無痛的互操作性。 我對MacRuby猶豫不決,因為它看起來太過分了。 在pyobjc中,您可以編寫普通的python,並且只在您真正想要/意味着時才使用基類和使用Foundation和Cocoa對象。 根據我對MacRuby的理解,它是一個基於Cocoa的Ruby。 所以字符串總是一個NSString。 我對此不太滿意。 因人而異。

Apple似乎落后於Cocoa的Ruby腳本,但不是RubyCocoa。 他們正在托管,我相信支持MacRuby 我常常想知道MacRuby是否是Apple對OSX原型設計的更高級語言的答案,以及完整的應用程序開發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM