22

Recently I have began to wonder when developers should pay for compilers. Compilers come for free with most platforms or there is a free version easily obtainable.

Example:

OS X - GCC and Clang/LLVM come with the developer tools. No limitations here for how and what you can turn out with them.

Linux - GCC and I am sure more. I dont know the current state of linux compilers. No limitations here for how and what you can turn out with them.

Windows - MinGW and Microsoft does offer a free version of Visual Studio. No limitations with MinGW but I think with the free Visual Studio there are severe limitations.

However, as an example, Intel produces C/C++ compilers. They are hefty in price. Educationally I think that one can get the OS X version for $49 and Windows/Linux for $129 each. They then offer a complete "Studio" product too. Obviously using the educational pricing there are imposed limitations.

But what I am wondering is when should one really considering paying for compilers. One example I can think of is a video game. If you are using a compiler that works on the major platforms there would be no more switching tools for the platform. It seems there would be a level of ease in switching among platforms if the tools were the same.

Can anyone shed some light on paying for compilers like the Intel compilers and the true cross-platform benefits one might get from using them? Does one's code become less portable even trying very hard to not do platform specific techniques?

11
  • 31
    Don't confuse Visual Studio with Microsoft's compilers, the compilers are available for free and are the same in both the normal and Express editions of Visual Studio. You can even get them without Visual Studio, via the Windows SDK.
    – yannis
    Commented Mar 11, 2013 at 1:36
  • 6
    @Rig Well, Microsoft is partially to blame for this, they never made an actual effort to advertise the fact that their C++ compiler is freely available. Just the fact that you can't download it on its own (without the bloated Windows SDK or Visual Studio Express) is enough to confuse people about its availability.
    – yannis
    Commented Mar 11, 2013 at 3:11
  • 5
    @Rig Exactly. They have an evangelical army on the ground advertising Visual Studio Express (an IDE) and Windows SDK (a collection of various tools), and no mention at all of their C++ compiler (it's not even listed in the Windows SDK website) or a way to download just the compiler and nothing else.
    – yannis
    Commented Mar 11, 2013 at 3:48
  • 3
    @YannisRizos: If I'm not mistaken, C++ compilers are no longer a part of the Windows SDK - msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx Are they?
    – Coder
    Commented Mar 11, 2013 at 6:53
  • 1
    @JeffO - SDK. Free download, and includes the C++ tools. There might be a newer version, but that's what I found first.
    – Bobson
    Commented Mar 11, 2013 at 19:33

6 Answers 6

27

In my experience, cross host platform ability is a minor consideration for choosing a compiler. In fact, quite the opposite. People much more frequently choose a compiler for it's superior support for one specific target platform.

Take the Intel compiler for example. People usually buy it when they want to eke every last ounce of performance out of the latest bleeding edge Intel chip. After all, it's hard to design a compiler better than the guys who can walk down the hall and talk to the guys who designed the chips.

It's the same reason people buy tools from Microsoft to develop on Microsoft platforms. That's who has the support first and foremost.

2
  • 1
    Ack. That's why the field of High Performance Computing is an important market for commercial compilers. Because performance and tuning capabilities are really important when compute time is assigned (and sometimes billed) by the hour.
    – mschuett
    Commented Mar 11, 2013 at 11:12
  • To extend on this, in some situations there is simply no free compiler available. For example, for Windows kernel development (Win8+) the only option is to use MSVC with the integrated WDK compiler. Commented Mar 12, 2014 at 15:03
23

Having worked on a for-pay compiler, I believe the main reason to pay for a compiler is for the support contract. If the customer has a problem with their code and suspects a compiler bug, they can ask the compiler vendor to investigate possible solutions (on the vendor's dime, not their's), possibly with a deadline for a response/solution. This can be done without having to publicly release source code for projects which may contain sensitive information, and usually the contract binds the vendor into secrecy about any shared source code. Generally, larger companies are willing to pay for this level of support, while smaller shops don't view it as worth the money or just too expensive.

In addition, vendors want to please (high paying) customers, so feature requests are prioritized by which customers want them. It is also possible for customers to suggest features more tailored to their needs, things more company specific which would not be widely used. This is not possible for users of GCC or other opensource compilers where features get implemented by those willing to do it in whichever order they feel on their own schedule.

6
  • 7
    "This is not possible for users of GCC or other opensource compilers where features get implemented by those willing to do it in whichever order they feel on their own schedule." But on the other hand, if the customer wants the feature badly enough, they are free to assign developers to implement it on their own and then may or may not share it with others. (Remember that the GPL is about distribution, not use.) With proprietary software, they must convince the vendor to implement said feature, as well as know and describe in enough detail to actually get what they want.
    – user
    Commented Mar 11, 2013 at 12:50
  • 1
    If the company has developers with the experience and familiarity with compilers and the specific code base then yes, but that is an added expense, probably more than buying the compiler. Also, you would be surprised with how vague feature requests can be. If a customer is paying, it does not take much to convince a company about doing something, especially when you pay a lot of money. I won't argue either side, just say that some find this level of support worth the money. Commented Mar 11, 2013 at 15:48
  • 1
    I agree that a compiler by no means is a trivial piece of software. Adding a feature to it is certainly a non-trivial task, especially for someone not familiar with the code base. But to say that it is "not possible" to have features implemented in an open-source compiler but it is possible in a proprietary one is at best a flawed argument. If the company doesn't have the required expertise in-house, they can hire a consultant to do it for them. With proprietary software, if the vendor says no (regardless of the reason why), then you are for all intents and purposes out of luck.
    – user
    Commented Mar 11, 2013 at 16:05
  • All that said, I did upvote this because I do think it answers the question well.
    – user
    Commented Mar 11, 2013 at 16:07
  • 1
    I don't think you have ever really dealt with "commercial" software support. Its a completely different experience from what you describe. Commented Mar 12, 2014 at 2:29
3

Sometimes it's not the compiler people pay for, it's the runtime that works with it. Intel in particular has a tradition of providing excellent libraries for things like multithreading, media support (SSE etc) and extended-precision math.

1
  • You are right, Polyverse sells Linux distros protected by moving target defense. With the purchase of one of their distros, you simultaneously buy their compiler that applies the moving target defense to all the binary files of the OS.
    – T. Salim
    Commented Aug 26, 2019 at 13:37
1

I have worked with some people that used a paid compiler.

They were doing serious data-crunching in a cluster. Supposedly, the Intel compiler managed to produce slightly faster code for them, and paying for the compiler was cheaper than running more nodes. My understanding is that the difference was very small, but multiplied out with electricity costs factored in it was deemed worth it.

To that effect, I wouldn't be surprised if most of the HPC super-computers run on specialized compilers provided by the chip manufacturers.

-4

I am with Karl Bielefeldt on this.

I won't actually trust compilers that offer cross-platform capabilities. Because, to be honest we all know native and targeted tools / compilers always have advantages like knowing the target platform better.

And I believe, when your software becomes complex and performance is needed you can start thinking about switching to paid compilers.

And on addition to that, I believe Microsoft's compilers are pretty damn good. And like everyone else said, they are free for ever.

1
  • 3
    So you do not trust GCC? What about the Android and iOS compilers?
    – user22815
    Commented Mar 12, 2014 at 3:44
-17

GNU free compiler (gcc) comes with GNU license (GPL) meaning you can use for Open source projects only. Supported by big names in software.

Clang (free) is an attempt to avoid GPL limitations creating a good compiler. Also, is supported by Apple, Google, and many others.

VC++ Express (free) is limited to Windows platform (by the way, they made it free in the last moment, because many people from Open Source community asked them about it) and lacks most of professional tools an features. Such as profiler, for example.

So, all these tools are free for us, but are supported by the industry.

Intel (commercial), as Karl mentioned, for projects that target most performance on Intel platforms.

3
  • 17
    A lot of misinformation here. VC++ Express is free, though I doubt it's because the Open Source community (who?) asked for it, but that has nothing to do with the C++ compiler, as @YannisRizos mentions in the comments above. Secondly, while GCC itself is GPL, it can be used to compile non-GPL code. See here stackoverflow.com/questions/9772616/… Commented Mar 11, 2013 at 6:38
  • Unbelievable, many people (an i am among others) asked to make VC++2012 for Desktop free. Don't want to talk about GPL.
    – SChepurin
    Commented Mar 11, 2013 at 6:41
  • 5
    Yes, I'm sure many people asked them to make it free. That doesn't mean you were the trigger for it. It was a business decision. In fact, I'm pretty sure the backlash against the original pricing ofthe VSExpress packages ($25, I think) were from hobbyists and commercial developers who wanted something to use at home, not necessary OS devs, and certainly not as a community. Commented Mar 11, 2013 at 6:42

Not the answer you're looking for? Browse other questions tagged or ask your own question.