Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question

closed as primarily opinion-based by gnat, Kilian Foth, Bart van Ingen Schenau, MichaelT, World Engineer Mar 13 at 12:35

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

26  
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 Rizos Mar 11 '13 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 Rizos Mar 11 '13 at 3:11
4  
@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 Rizos Mar 11 '13 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 Mar 11 '13 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 Mar 11 '13 at 19:33
show 5 more comments

7 Answers

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.

share|improve this answer
    
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 Mar 11 '13 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. –  icepack Mar 12 at 15:03
add comment

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.

share|improve this answer
6  
"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. –  Michael Kjörling Mar 11 '13 at 12:50
    
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. –  Chewy Gumball Mar 11 '13 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. –  Michael Kjörling Mar 11 '13 at 16:05
    
All that said, I did upvote this because I do think it answers the question well. –  Michael Kjörling Mar 11 '13 at 16:07
    
I don't think you have ever really dealt with "commercial" software support. Its a completely different experience from what you describe. –  James Anderson Mar 12 at 2:29
show 1 more comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

It is my understanding that the VS Express products are licensed for 30-day trial. So really the MS compilers are not free. They also have a clause in the license where you cannot share your source code with your binaries (meaning you cannot produce Open Source projects with the MS products). MS has it in for Open Source.

share|improve this answer
7  
Incorrect. VS Express has other limitations and missing premium components/plugins, but time is not a limitation. –  John Gaughan Mar 12 at 3:43
add comment

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.

share|improve this answer
2  
So you do not trust GCC? What about the Android and iOS compilers? –  John Gaughan Mar 12 at 3:44
add comment

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.

share|improve this answer
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/… –  Avner Shahar-Kashtan Mar 11 '13 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 Mar 11 '13 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. –  Avner Shahar-Kashtan Mar 11 '13 at 6:42
add comment

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