编程语言是独立于平台的,那么为什么我们不能编写一个可以同时在 PC 和 Mac 上运行的程序呢?
我想开发一个软件,我在 Mac 上,但我也希望它在 PC 上运行,是否可以开发这样的软件而不必要求用户下载一个特殊的程序来使我的程序兼容用他们的电脑?
编程语言是独立于平台的,那么为什么我们不能编写一个可以同时在 PC 和 Mac 上运行的程序呢?
我想开发一个软件,我在 Mac 上,但我也希望它在 PC 上运行,是否可以开发这样的软件而不必要求用户下载一个特殊的程序来使我的程序兼容用他们的电脑?
这样做的问题是大多数软件都依赖于操作系统来处理某些任务。是的,大多数编程语言都与许多平台兼容,但操作系统提供了很多支持。当软件使用操作系统时,有时称为进行系统调用。如果你想要这里是一些更多的信息。
从理论上讲,如果您用“高级语言”编写程序,它应该可以在两个操作系统之间移植。
然而实际上,差异从一开始就开始了 - 选择的 API,它适用于一个而不适用于另一个(例如,Mac 的 BSD API 与 Win32 API 不兼容)并归结为最后一个,即可执行格式,链接器和加载器。每个操作系统都有自己的怪癖。
然后是底层架构之间的区别。以前 Mac 运行在 PowerPC 架构和摩托罗拉架构上,而 PC 使用 Intel。自从 Mac 改用 Intel 以来,一直在尝试在 Apple 内部制作跨平台的可执行文件。大多数尝试都失败了。
但是,有一种方法可以解决您的问题。您可以使用 Python 等非常高级的语言进行编码,然后将您的 Python 代码分发给您的 PC 朋友。(但请记住,您需要在 PC 朋友的计算机中安装 Python 解释器才能运行您的程序)。我已经成功地将 Python 程序从 Mac 移植到 PC,代码更改为 0,有时只需要 2-4% 的代码更改。
对的,这是可能的。但这很棘手。你需要:
特别是由于库问题,跨平台工作的选项很少。您的最佳选择可能是:
简单的答案:因为语言本身不足以使应用程序跨平台。此外,它使用的框架也必须是跨平台的,一切都需要框架:处理数据、显示事物、与硬件通信、多线程等
这通常可以做到:
请注意,在不使用 Java 等完整解决方案的情况下开发跨平台应用程序,而不是像游戏(有很多跨平台 API)这样的微不足道的例子,这根本不是一件容易的事。特别是因为您可以构建的大多数 GUI 都是严格特定于平台的,并且依赖于它们自己的框架。
如果您希望应用程序“在任何地方”运行,那么您最好的选择是 JIT 类型语言,这意味着它会在运行时(及时)针对它所在的平台进行编译。在我看来,真正突出的语言是 Java(还有其他语言,我个人不喜欢 Java)。然而,事情并不是那么简单。例如,Mac 计算机上的 Window 具有 PC 上的 Window 所没有的部分和功能,反之亦然。其他操作系统甚至没有 Windows 或任何类似的东西,但仍然运行 Java,例如 Android 或 iOS 或无数 Linux 发行版。这只是一个非常基本的例子,它变得更加猎兔犬。真正构建一个任何人都可以在任何设备上使用的应用程序的最佳方式是基于网络。
教训是,如果这么简单,很多人就不会有工作,也永远不会那么简单,事情总是会进步和变化,并不是每个人都想像其他人一样用他们的操作系统做同样的事情. 给猫剥皮的方法有一百万种,在操作系统中实现某些东西的方法还有很多。