跨平台开发的好处是什么?

3

在两个或更多不同平台上开发应用程序有什么好处?即使在同一平台上使用不同的编译器是否有好处?

8个回答

3

是的,特别是如果您计划将代码分发到多个平台。

即使您不进行跨平台开发,也可以将其视为一种未来保障形式;如果它今天在多个(不同的)平台上运行,则更有可能在未来的平台上运行,而不是那些调整、修补和专门针对版本7.8.3干净安装供应商X的Q系列盒子(补丁级别1452)和其他什么都不适用的代码。


2

使用不同的编译器和操作系统查找并防止错误似乎是有益的。不同的CPU可以早期确定端点问题。如果您想在GUI级别保持本地化,那么可能会遇到痛苦。


我经常在Linux、OpenBSD和Darwin上编译。我也经常在Intel、AMD64和Sparc64上编译。即使客户群体都在一个平台上,发现错误和揭示假设仍然是值得的。 - dwc

1

简短回答:是的。

除非克隆磁盘,否则几乎不可能使两个系统完全相同,因此无论您是否打算这样做,最终都将在“不同的平台”上运行。通过直接解决并解决“如果系统A不像B那样做什么?”问题,您更有可能找到代码所做出的关键假设。

话虽如此,我建议您在系统A上完成大部分基础代码,然后花一天(或一周或更长时间)将其运行在系统B上。这可以非常有教育意义。

我的经验是在80年代将源级别的C调试器移植到100多种U * NX版本中。太可怕了!


1
在两个或多个不同平台上开发应用程序是否有好处?
如果这是生产软件,显而易见的原因是吸引更大的客户群。在客户听说您支持多个平台后,您的产品的吸引力就会倍增。请记住,大多数企业不使用单个操作系统,甚至不使用单个操作系统版本。通常可以找到一个部分使用Windows,另一个部分使用Mac,还有一小部分使用某种Linux版本。
此外,通常情况下,为单个平台定制产品比运行多个平台要困难得多。即使在您意识到之前,边际收益递减的法则也已经开始发挥作用。
当然,如果您正在为客户专有的硬件进行定制工作,则这些都没有什么意义。但即使如此,也要注意客户整个硬件范围--您永远不知道他什么时候会要求使用它。
在相同的平台上使用不同编译器是否有好处?
是的,还是有好处的。不同的编译器实现了不同的扩展。确保您不依赖于特定编译器的特定版本。
此外,编译器本身可能会有一两个错误。使用多个编译器有助于排除这些错误。

我曾经看到过一个(跨平台)产品的一些细节,它使用了两个不同的编译器——其中一个用于那些需要非常高精度浮点运算的模块。(好久没听说有人这么做了,但是...)


1

我将一个大型的C++程序从Win32移植到了Linux,这并不是很困难。主要是处理编译器的不兼容性,因为当时的MS C++编译器在各种方面上都不符合标准。我认为这个问题现在已经基本解决了(直到C++0x特性开始逐渐出现)。同时编写了一个简单的平台抽象库,将平台特定的代码集中到一个地方。这取决于你在多大程度上依赖于操作系统提供的服务,这些服务在新平台上很难模拟。

你不必从一开始就考虑可移植性。这就是为什么“移植”通常被描述为在最重要的平台上进行初始发布后可以一次性执行的活动。你不必从一开始就持续进行。纯粹出于经济原因,如果你能避免做可能永远得不到回报的工作,显然你应该这样做。当真正需要时,移植的成本并不那么高。


1

通常情况下,应用程序是为现有平台编写的(个人软件)。但如果你决定提供独立语言,那么你就可以面向更多的开发者(两个平台)。

此外,标准软件产品对于中小企业来说,如果能在不同的平台上运行,就可以更好地销售!你可以进入WIN&LINUX市场! (以及MacOSx等...)

大公司通常只购买得到产品供应商支持/认证的硬件,以部署指定的产品。


1

如果您同时在多个平台上开发,您可以使用不同的工具,这是一个优势。例如,我曾经有过一次内存覆盖(我仍然发誓我不需要为空字节加上+1!),导致“free”崩溃。我将代码升级到Windows,并使用Rational Purify在大约1分钟内找到了覆盖... 在Linux下追踪它花费了我一个星期(valgrind可能会找到它...但当时我不知道)。

对于我来说,在同一平台或不同平台上使用不同的编译器是必须的,因为每个编译器都会报告不同的内容,有时一个编译器关于错误的报告可能是无意义的,而另一个编译器则非常清晰明了。

在开发过程中使用多个数据库意味着您不太可能将自己绑定到特定的数据库,这意味着如果有理由这样做,您可以更换数据库。例如,如果您想将使用Oracle的东西集成到使用SQL Server的现有基础架构中,这可能真的很糟糕-如果Oracle或SQL Server的部分可以移动到其他系统上,则会好得多(我知道有些地方的财务系统有3个不同的数据库...恶心)。

一般来说,总是为两到三个方面进行开发意味着你发现错误的几率更高,系统更具灵活性的几率也更高。

另一方面,所有这些可能需要时间和精力,在当下看来是不必要的开销。


0
一些平台的开发工具真的很糟糕。我曾经在一个国际银行工作过,人们不使用Sun可怕的工具集,而是在VC++中开发代码,然后移植到Solaris上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接