Windows/Microsoft 作为开发时使用的平台,在 Linux 或 Solaris 等 Unix 方言上是否有任何技术优势?
我知道公司有时会选择微软,因为没有足够的程序员了解 Unix,或者这些程序员的雇佣成本要高得多。
因此,假设所有开发人员都同样了解 Unix 和 Microsoft,是否还有一些情况下您最好在 Windows 中进行开发?
Windows/Microsoft 作为开发时使用的平台,在 Linux 或 Solaris 等 Unix 方言上是否有任何技术优势?
我知道公司有时会选择微软,因为没有足够的程序员了解 Unix,或者这些程序员的雇佣成本要高得多。
因此,假设所有开发人员都同样了解 Unix 和 Microsoft,是否还有一些情况下您最好在 Windows 中进行开发?
对我来说,使用 Windows 作为开发平台只有两个论点:
除此之外,恕我直言,Linux 还有其他所有优势,包括:
这就是为什么我发现将 Mac 作为我的下一个开发工作站的想法如此吸引人的原因之一:您可以将其视为带有应用程序(即 Office)的 Unix 或带有不错文件系统的 Windows(如果/当 OSX 采用 ZFS 时会更好) ,无论哪种方式都是胜利。唯一真正让我反感的是,Apple 做了一些愚蠢的事情,比如将 Java 6 的发布推迟了一年,只是为了让 Leopard Look and Feel 融入其中。
就在我的脑海中:
你能做的最好的事情之一就是保持你的选择开放。选择独立于平台的技术,您将能够拥有适用于任何 O/S 或实施的软件。从技术角度来看,这很有意义,从商业角度来看也是如此。
至于 Windows 平台的特定技术优势,除了大型开发人员社区和开发信息存储以及广泛支持的 IDE (如 Visual Studio)之外,我想说你会很难找到一个。即使在那里,Eclipse也可以使用独立于平台的技术来完成同样出色的工作。
Microsoft 系统倾向于在不同部分之间进行更好的集成——如果您使用纯二进制软件(x86 和 comctl3d 比运行 *nix 的所有软件更容易支持),则需要担心的异构性要少得多。
Windows 上的学习曲线一开始很浅,但总体距离较长。在 Unix/Linux 上,一开始是一场斗争,但后来当操作系统的内部工作开始变得有意义时,完成工作变得更加容易。
至少这是我对他们的经验。Windows 用于快速回报,Linux 如果您打算做一些更长期的事情。和虚拟机,如果你不能决定:)
我们拥有 Windows 开发平台(即使我们的产品是在 Linux 或 Solaris 上)的原因之一是所有.
这意味着参与实现软件的所有不同人群:
简而言之:所有人(开发人员和非开发人员都一样)的环境一致性。
另一个原因是折旧:很容易管理 PC 的折旧,因为这些服务比完整的 Unix 服务器(如 Sun Fire、F15K 或 F50K,...)更轻:后者需要一些昂贵的协助服务合约(如“青铜”、“白银”或“黄金”,取决于所需的级别)。一台 PC 更容易修复/更换,开发人员“搞砸”它并彻底崩溃并不重要;)
话虽如此,这样做的缺点是您不必每天都更换 PC:这意味着要管理大量台式机,您不能就这样决定升级(Os 也是如此)。
因此,其他答案都是关于“虚拟机”的,而您的 PC 组是 2003 年的,只有 40Go 的硬盘驱动器和 1 个可能是 2Go 的内存......,您意识到“虚拟化”并不总是显而易见的解决方案。
因此,开发人员需要一些 Unix“集成”服务器来在更接近目标的环境中测试他们的产品。在某种程度上,这更好,因为这些集成服务器以统一的方式管理,避免了“它适用于我TM ”的综合症,而不是虚拟机,每个开发人员都是自己的根/管理员世界/服务器;)。
我认为这个问题提出了一种错误的二分法。没有理由你必须选择 windows 而不是 unix,反之亦然。虚拟化是免费且简单的。这是两全其美!
我可以给你一个 Windows 人员可能会提出的常见论点,尽管我不一定同意。
人们有时认为生产时的 Windows 盒子更易于维护和部署。那是因为管理员可以使用很多可视化工具。因此,他们更喜欢 .Net 或特定于 Windows 的开发语言,以便于集成。
如果您的客户或内部客户使用所有 Windows 台式计算机,有些人会争辩说,使用 Windows 服务器做事的工作量更少。这包括 Microsoft Office 文档共享(即 sharepoint)或 Windows 文件共享的内容。显然,编写一个 .Net 应用程序来处理这种特定于 Microsoft 的约束更容易。
我实在想不出还有什么其他原因。后一种可能是最有效的——除非您使用 MSFT 开发工具,否则可能存在一些难以集成的特定于 Microsoft 的技术。
某些特定类型发展的外围原因:
我认为所有这些事情都是令人遗憾的。
为什么不两者都用?
在任何一种情况下,您都可以在 Windows 或 Linux/Unix 中使用虚拟机,而无需使用 Virtual Box 或 Vmware 播放器。或者您可以从您的开发箱远程桌面/vnc 到其他平台。如果您在 .net 中开发,您可能会在 Windows for dev 上做得更好。如果您为 LAMP 开发,Windows/*nix 都可以。
给我 apache mysql (ok postgres in a pinch) php 和 eclipse .. 谁在乎操作系统 ..