从Windows API移动到Mac OS

从Windows API移动到Mac OS,windows,macos,winapi,porting,Windows,Macos,Winapi,Porting,我是一名Windows(本地,而不是.NET)程序员,我想将一个应用程序移植到Mac 事实上,我相信这将是一个更重写,因为原来的依赖于许多activex控件 因为我一生中从未使用过Mac电脑,所以我需要一些指导。O:-) a) 要从Win32迁移到Mac OS,您推荐哪本书? b) Mac是否有类似于Delphi(RAD)的功能? c) 有人能推荐(或不推荐)Lispworks吗(www.Lispworks.com)? d) 是否有类似于Windows市场的第三方COM组件(因此我不必编写所有内

我是一名Windows(本地,而不是.NET)程序员,我想将一个应用程序移植到Mac

事实上,我相信这将是一个更重写,因为原来的依赖于许多activex控件

因为我一生中从未使用过Mac电脑,所以我需要一些指导。O:-)

a) 要从Win32迁移到Mac OS,您推荐哪本书?
b) Mac是否有类似于Delphi(RAD)的功能?
c) 有人能推荐(或不推荐)Lispworks吗(www.Lispworks.com)?
d) 是否有类似于Windows市场的第三方COM组件(因此我不必编写所有内容)?
e) 还有什么我应该知道的Mac市场吗?
f) 哦,顺便说一句,我应该买什么Mac?O:-)(必须是笔记本电脑)


提前感谢

< P>如果你在C和/或C++中完成了你的本机Windows编程,你可以更容易地将你的应用程序迁移到C ../.NET,然后用MUNO在MAC中运行它。至少一些可用的第三方.Net组件将在Mono上运行(请参阅)

我不知道你应该买什么样的Mac电脑——我建议买一台漂亮的。

e)这是一个小市场

f) iMac。编辑:因为上面说笔记本电脑-Macbook Pro 13是一笔大买卖。

a)

b) 您可以使用Python与wxPython结合使用,并且可以跨平台使用。默认情况下,Mac OS X包含Python

c)

d) 我肯定有,但我不能告诉你更多如果使用Python,您可以免费获得大量第三方库

e) 他们不喜欢:

Word 6.0于1993年推出,被广泛认为是Mac版Word有史以来最差的版本,因为它与Windows版Word 6.0基于相同的代码库。这意味着它看起来和工作起来更像Windows软件,而不是Macintosh程序。Mac用户如此激动,以至于微软实际上发布了一个Word 5.1降级版本,让不满的Word 6.0用户降级


f) 大多数情况下,任何iMac都足以进行编程。选择一个你最喜欢并且有大量RAM的。如果你熟悉C,你可能想学习Objective C,因为它是Mac的“本机”编程语言。这也是编写iPhone应用程序所必须使用的。Cocoa是苹果公司的主要API,它将有许多您正在寻找的工具

a) 阅读本帖以获得书籍推荐:

b) 苹果公司生产Xcode,用于在中国开发。当然还有更好的,但也不错

d) Cocoa是苹果公司的主要API,它提供“核心”服务,如CFNetwork for networking。还有核心数据、核心音频、核心动画、核心图像、核心位置,。。。在这一切之下,OSX是Unix,因此您可以访问许多Unix/linux库

e) iPhone是Mac市场的重要组成部分。iPhone和OSX的开发环境没有那么大的不同,因此您可以同时学习这两种环境


f) 任何Mac对于大多数开发都是足够的。如果你想要一台笔记本电脑,这实际上是一个屏幕大小和价格的问题。但我建议至少使用15英寸的屏幕。您不需要为更快的CPU花费额外的费用,但您可能想要一个更大的硬盘。

我已经向几位有Windows经验的程序员教授了Cocoa编程。你可能会发现关于这个问题的讨论很有用

可可是一种与MFC及其亲属截然不同的思维方式。如果你花时间学习Cocoa如何处理事情并适应它的思维方式,而不是试图找到最快的方法在ObjC中实现你当前的思维方式,你会做得更好。为Mac编写MFC风格的代码是可能的,但如果这样做,您将始终与框架抗争。我看到很多Windows开发人员都在为此而挣扎

学习可可最好的书是。假设您是一个具有坚实OOP背景的C++开发人员,这是本书的开头。如果您的面向对象背景有限,那么从开始

一旦您理解了模式,您就会惊讶于Objective-C编写代码的速度有多快。在我的经验中,它确实比C++更令人惊叹。还有更多类似RAD的系统,比如REALbasic,现在你可以用Ruby开发Cocoa应用程序,这会更快一些。但在Mac市场上,ObjC确实没有替代品。如果不使用Mac框架,很难制作出像Mac应用程序一样工作的应用程序,Mac用户往往比Windows用户更挑剔

我没有LispWorks的背景,但是LISP对于开发Mac应用程序所熟知的丰富UI来说似乎是一种糟糕的语言。我喜欢LISP(实际上非常喜欢),但函数式编程的“无副作用”理念似乎与大多数丰富的UI目标不符(尤其是在Mac UI越来越以动画为中心的情况下)。如果说有什么区别的话,Mac编程正朝着声明性编程而不是功能性编程发展(核心动画和Grand Central Dispatch有很多声明性概念)

第三方组件市场没有Windows那么大。其中一部分原因是Cocoa已经提供了如此丰富的组件集,而MFC却没有,而且因为行为良好的Mac应用程序预计会使用这些组件,因此您可以像所有其他Mac应用程序一样工作。在RadControls for.NET(非常好的工具包,就是这个)的模式下,商业组件肯定没有什么市场。但是有很多不错的免费组件都有灵活的许可证(通常基于麻省理工学院)。我最喜欢的几个:

  • (虽然我从不“按原样”使用它们,但它们更适合作为做事的例子)
正如我前面提到的,Mac用户对他们的UI很挑剔。比Windows用户要多得多。他们希望事物被修饰,他们希望事物与所有使Mac变得漂亮的小事物相结合。这意味着拖放、聚光灯、服务、Applescript、曝光、QuickLook、集成拼写