【问题标题】:Moving from Windows API to Mac OS从 Windows API 迁移到 Mac OS
【发布时间】:2010-12-02 07:34:10
【问题描述】:

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

其实我相信更多的是重写,因为原来的依赖很多activex控件。

由于我一生中从未使用过 Mac,因此我需要一些指导。 O:-)

a) 您会推荐哪些书籍来从 Win32 迁移到 Mac OS?
b) Mac 上有没有类似于 Delphi (RAD) 的东西?
c) 任何人都可以推荐(或不推荐)Lispworks(www.lispworks.com)吗?
d) 有没有类似于 Windows 市场的 3rd 方 COM 组件(所以我不必全部编写)?
e) 关于 Mac 市场,我还有什么需要注意的吗?
f) 哦,顺便说一句,我应该买什么 Mac? O:-)(必须是笔记本电脑)

提前致谢

【问题讨论】:

    标签: windows macos winapi porting


    【解决方案1】:

    我已经向几位 Windows 经验丰富的程序员教授 Cocoa 编程。您可能会发现有关该主题的 previous post 很有用。

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

    学习 Cocoa 最好的书是Cocoa Programming for Mac OS X。假设您是具有扎实 OOP 背景的 C++ 开发人员,这本书就是您的入门书籍。如果您的面向对象背景有限,请从Programming Objective-C 2.0 开始。

    一旦您了解了模式,您会惊讶于 Objective-C 编码的速度有多快。根据我的经验,与 C++ 相比,它确实令人惊叹。有更多类似 RAD 的系统,如 REALbasic,您现在可以使用 Ruby 开发 Cocoa 应用程序,这会更快一些。但在 Mac 市场上确实没有 ObjC 的替代品。如果不使用 Mac 框架,很难制作出像 Mac 应用程序一样运行的应用程序,而且 Mac 用户往往比 Windows 用户更关心这些事情。

    我在 LispWorks 方面没有背景,但 LISP 似乎是一种糟糕的语言,无法开发 Mac 应用程序所熟知的那种丰富的 UI。我喜欢 LISP(实际上非​​常喜欢),但函数式编程的“无副作用”理念似乎与大多数丰富的 UI 目标不一致(尤其是随着 Mac UI 变得越来越以动画为中心)。如果有的话,Mac 编程正在朝着声明式编程而不是函数式编程发展(Core Animation 和 Grand Central Dispatch 有很多声明式概念正在蔓延)。

    第三方组件市场没有 Windows 那样大。其中一些是因为 Cocoa 已经提供了如此丰富的组件集,而 MFC 没有,并且因为表现良好的 Mac 应用程序应该使用这些组件,以便您像所有其他 Mac 应用程序一样工作。 RadControls for .NET(非常好的工具包,那个)的脉络中的商业组件绝对没有市场。但是有很多不错的免费组件具有灵活的许可证(通常基于 MIT)。我最喜欢的几个:

    正如我之前提到的,Mac 用户对他们的 UI 很挑剔。比 Windows 用户要多得多。他们希望事情得到完善,他们希望事情能够与所有使 Mac 变得更好的小东西集成在一起。这意味着拖放、Spotlight、服务、Applescript、Expose、QuickLook、集成拼写检查等。如果不使用内置框架,很难正确完成所有这些事情。这就是为什么我建议新的 Mac 开发人员从头开始学习框架。

    对于 Mac,如果您有一堆硬件(如键盘和显示器),那么 Mac Mini 是一个不错的便宜盒子。如果您想要一体机,iMac 非常棒,如果您喜欢便携性,任何 MacBook 都是合适的。当今市场上没有一款 Mac 不是完美的开发盒。显然,如果你做很多工作,8 核 Mac Pro 会使编译速度更快,但我在 13 英寸 MacBook 上做了很多专业开发。如果你想尽可能便宜,找@ 987654330@ 或二手(我喜欢我翻新的 Mac Mini)。任何基于 Intel 的 Mac 都适合开发,至少在您开始时是这样。

    【讨论】:

    【解决方案2】:

    如果您熟悉 C,您可能想学习 Objective C,因为它是 Mac 的“原生”编程语言。它也是您编写 iPhone 应用程序所必须使用的。 Cocoa 是 Apple 的主要 API,其中包含许多您正在寻找的工具。

    a) 阅读此主题以获得书籍推荐:https://stackoverflow.com/questions/7571/cocoa-and-objective-c-resources

    b) Apple 制作 Xcode 用于开发。当然有更好的,但也不错。

    d) Cocoa 是 Apple 的主要 API,它为网络提供像 CFNetwork 这样的“核心”服务。还有核心数据、核心音频、核心动画、核心图像、核心位置……在这一切之下,OSX 是 Unix,因此您可以访问许多 unix/linux 库。

    e) iPhone 是 Mac 市场的重要组成部分。 iPhone 和 OSX 的开发环境并没有什么不同,所以你可以同时学习。

    f) 对于大多数开发来说,任何 Mac 都足够了。如果您想要一台笔记本电脑,这实际上是屏幕尺寸和价格的问题。但我会推荐至少 15 英寸的屏幕。您无需为更快的 CPU 花费额外费用,但您可能需要更大的硬盘驱动器。

    【讨论】:

      【解决方案3】:

      如果您使用 C 和/或 C++ 完成了本机 Windows 编程,您可能会更轻松地将应用程序迁移到 C#/.Net,然后使用 Mono 在 Mac 中运行它。至少一些可用的第三方 .Net 组件将在 Mono 上运行(请参阅 http://www.mono-project.com/Third_Party_Controls_Status)。

      我不知道你应该买什么 Mac - 我建议你买一台漂亮的。

      【讨论】:

        【解决方案4】:

        a) ...

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

        c) ...

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

        e) 他们不善待alien GUI guidelines:

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

        f) 大多数情况下,任何 iMac 都足以进行编程。选择您最喜欢且拥有大量 RAM 的那个。

        【讨论】:

          【解决方案5】:

          e) 它的市场很小。

          f) 一台 iMac。编辑:因为它说笔记本电脑 - Macbook Pro 13 很划算。

          【讨论】:

          • 上次我看到 iMac 不是笔记本电脑。
          • @Daniel:是的,但不适用于计算机科学(艺术、平面设计、数学、物理和体质人类学),并且在过去 18 年中没有。 :)
          猜你喜欢
          • 2017-12-07
          • 2020-09-26
          • 1970-01-01
          • 1970-01-01
          • 2015-11-04
          • 1970-01-01
          • 2018-12-05
          • 2015-07-29
          • 1970-01-01
          相关资源
          最近更新 更多