何时支付C ++编译器费用[关闭]


19

最近,我开始怀疑开发人员何时应该为编译器付费。大多数平台都免费提供编译器,或者容易获得免费版本。

例:

OS X-开发人员工具随附GCC和Clang / LLVM。对于如何使用它们以及在其中得到什么,这里没有任何限制。

Linux-GCC,我敢肯定。我不知道linux编译器的当前状态。对于如何使用它们以及在其中得到什么,这里没有任何限制。

Windows-MinGW和Microsoft确实提供了Visual Studio的免费版本。MinGW没有任何限制,但我认为免费的Visual Studio存在严重的限制。

但是,例如,英特尔生产C / C ++编译器。他们的价格很高。在教育方面,我认为可以以49美元的价格获得OS X版本,以129美元的价格获得Windows / Linux。然后,他们也提供完整的“ Studio”产品。显然,使用教育定价会受到限制。

但是我想知道的是,何时应该真正考虑为编译器付费。我能想到的一个例子是电子游戏。如果您使用的是可在主要平台上运行的编译器,则该平台将不再有切换工具。如果工具相同,在平台之间切换似乎会很容易。

任何人都可以在支付诸如英特尔编译器之类的编译器费用方面获得一些启示,以及使用它们可能获得的真正的跨平台收益吗?即使非常努力地不使用平台特定的技术,代码的可移植性也会降低吗?


29
不要将Visual Studio与Microsoft的编译器混淆,这些编译器是免费提供的,并且在Visual Studio的普通版和Express版中都是相同的。您甚至可以通过Windows SDK在不使用Visual Studio的情况下获得它们。
扬尼斯,2013年

6
@Rig好吧,微软对此负有部分责任,他们从未做出任何实际努力来宣传其C ++编译器可免费获得这一事实。只是您不能自行下载(没有out肿的Windows SDK或Visual Studio Express)这一事实足以使人们对其可用性感到困惑。
yannis 2013年

5
@钻机正好。他们在地面上宣传Visual Studio Express(IDE)和Windows SDK(各种工具的集合),但没有提及他们的所有C ++编译器(甚至在Windows SDK网站上也没有列出)或某种方式仅下载编译器而无其他下载。
扬尼斯,2013年

3
@YannisRizos:如果我没记错的话,C ++编译器不再是Windows SDK的一部分-msdn.microsoft.com/zh-cn/windows/desktop/hh852363.aspx是吗?
编码员

1
@ JeffO- SDK。免费下载,其中包括C ++工具。可能会有更新的版本,但这是我首先发现的。
Bobson

Answers:


25

以我的经验,跨主机平台功能是选择编译器的一个次要考虑因素。实际上,恰恰相反。人们更加频繁地选择编译器,因为它对一个特定目标平台的出色支持。

以英特尔编译器为例。人们通常想在最新的尖端英特尔芯片中获得每盎司性能时就购买它。毕竟,设计编译器要比能走出大厅并与设计芯片的人交谈的人要好。

这就是人们从Microsoft购买工具以在Microsoft平台上进行开发的原因。那是谁首先得到支持。


1
阿克 这就是高性能计算领域是商业编译器重要市场的原因。因为在按小时分配(有时是按时)计算时间时,性能和调整功能非常重要。
mschuett

为了对此进行扩展,在某些情况下,根本没有可用的免费编译器。例如,对于Windows内核开发(Win8 +),唯一的选择是将MSVC与集成的WDK编译器一起使用。
SomeWittyUsername 2014年

19

我从事过按需付费的编译器工作,我相信为编译器付费的主要原因是获得支持合同。如果客户的代码有问题并且怀疑编译器错误,则他们可以要求编译器供应商调查可能的解决方案(以供应商的毛钱,而不是他们的毛钱),可能在响应/解决方案的截止日期之前。无需公开发布可能包含敏感信息的项目的源代码,就可以做到这一点,通常,合同将供应商对任何共享源代码保密。通常,较大的公司愿意为此级别的支持付费,而较小的商店则不认为这是物有所值或过于昂贵。

此外,供应商希望取悦(高薪)客户,因此功能需求的优先级取决于客户希望他们的需求。客户还可以根据自己的需求提出更适合自己的功能,而这些功能可能会因公司而异,而不会被广泛使用。对于GCC或其他开放源代码编译器的用户而言,这是不可能的,因为那些愿意按自己计划的顺序执行功能的人员会实现这些功能。


7
“对于GCC或其他开放源代码编译器的用户来说,这是不可能的,因为那些人​​愿意按照自己的日程安排以任何顺序执行这些功能,从而实现这些功能。” 但是另一方面,如果客户非常急切地希望使用该功能,则可以自由指派开发人员自行实现该功能,然后可以与他人共享或不共享它。(请记住,GPL是关于分发而不是使用。)使用专有软件,他们必须说服供应商实施所述功能,并了解和描述足够的详细信息以实际获得他们想要的东西。
CVn

1
如果公司的开发人员具有对编译器和特定代码库的经验和熟悉,那么可以,但这是额外的支出,可能比购买编译器还要多。同样,您会对功能要求含糊不清感到惊讶。如果客户在付款,那么说服一家公司做某件事并不需要太多,尤其是当您支付很多钱时。我不会争论任何一方,只是说有些人认为这种支持水平是值得的。
耐嚼口香糖

1
我同意,编译器绝不是琐碎的软件。向其中添加功能无疑是一项艰巨的任务,特别是对于不熟悉代码库的人而言。但是要说在开放源代码编译器中实现功能是“不可能的”,但是在专有的编译器中实现这一功能充其量是有缺陷的。如果公司内部没有所需的专业知识,则可以聘请顾问为他们做。使用专有软件,如果供应商拒绝(不管原因为何),那么您的所有意图和目的都是不走运的。
CVn 2013年

所有这些,我确实赞成,因为我确实认为它很好地回答了这个问题。
CVn

1
我认为您从未真正处理过“商业”软件支持。与您所描述的完全不同。
James Anderson

1

有时候,不是人们为之付出的编译器,而是它所需要的运行时。英特尔尤其具有为多线程,媒体支持(SSE等)和扩展精度数学之类的事物提供出色库的传统。


没错,Polyverse出售受目标防御保护的Linux发行版。通过购买他们的发行版之一,您可以同时购买他们的编译器,该编译器将移动目标防御应用于操作系统的所有二进制文件。
T. Salim

0

我曾与一些使用付费编译器的人一起工作过。

他们正在集群中进行认真的数据处理。据推测,英特尔编译器设法为其生成了更快的代码,并且为编译器付费比运行更多节点便宜。我的理解是,差异很小,但乘以电费则认为是值得的。

为此,如果大多数HPC超级计算机运行在芯片制造商提供的专用编译器上,我不会感到惊讶。


-4

我同意卡尔·比勒费尔德(Karl Bielefeldt)的观点。

我实际上不会信任提供跨平台功能的编译器。因为,老实说,我们都知道原生工具和目标工具/编译器总是具有诸如更好地了解目标平台的优势。

而且我相信,当您的软件变得复杂且需要性能时,您可以开始考虑切换到付费编译器。

除此之外,我相信微软的编译器非常不错。就像其他所有人所说的那样,他们永远免费。


2
因此,您不信任GCC吗?那么Android和iOS编译器呢?

-17

GNU自由编译器(gcc)带有GNU许可证(GPL),这意味着您只能用于开源项目。由软件中的大牌支持。

Clang(免费)是为了避免GPL限制而创建好的编译器。此外,Apple,Google和许多其他公司也提供支持。

VC ++ Express(免费)仅限于Windows平台(顺便说一句,他们在最后一刻使它免费了,因为许多来自开源社区的人问他们了),并且缺少大多数专业工具的功能。例如分析器。

因此,所有这些工具对我们都是免费的,但得到了业界的支持。

正如Karl所提到的,英特尔(商业)致力于针对英特尔平台上大多数性能的项目。


17
这里有很多错误信息。VC ++ Express是免费的,尽管我怀疑这是因为开源社区(谁?)要求这样做,但这与C ++编译器无关,就像@YannisRizos在上面的评论中提到的那样。其次,尽管GCC本身是GPL,但可以用来编译非GPL代码。看到这里stackoverflow.com/questions/9772616/...
阿夫纳·沙哈尔,卡斯坦

令人难以置信的是,许多人(其中包括一个人)要求免费提供用于桌面的VC ++ 2012。不想谈论GPL。
SChepurin

5
是的,我敢肯定,很多人都要求他们免费提供它。这并不意味着您是触发它的人。这是一个商业决定。实际上,我很确定对VSExpress软件包的原始定价(我认为是25美元)的反对是来自业余爱好者和商业开发人员,他们想要在家中使用某些东西,而不是必需的OS开发人员,当然也不是作为社区。
Avner Shahar-Kashtan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.