Когда платить за компиляторы C ++ [закрыто]

19

Недавно я начал задумываться, когда разработчики должны платить за компиляторы. Компиляторы поставляются бесплатно на большинстве платформ или есть бесплатная версия, которую легко получить.

Пример:

OS X - GCC и Clang / LLVM поставляются с инструментами разработчика. Здесь нет ограничений на то, как и что вы можете сделать с ними.

Linux - GCC и я уверен больше. Я не знаю текущего состояния компиляторов Linux. Здесь нет ограничений на то, как и что вы можете сделать с ними.

Windows - MinGW и Microsoft предлагают бесплатную версию Visual Studio. С MinGW нет ограничений, но я думаю, что с бесплатной Visual Studio есть серьезные ограничения.

Однако, в качестве примера, Intel выпускает компиляторы C / C ++. Они здоровенные в цене. В образовательном плане я думаю, что можно получить версию OS X за 49 долларов и Windows / Linux за 129 долларов каждая. Затем они также предлагают полный «Studio» продукт. Очевидно, что использование образовательных ценовых ограничений накладывает ограничения.

Но что меня интересует, так это когда стоит задуматься об оплате компиляторов. Один пример, который я могу вспомнить, это видеоигра. Если вы используете компилятор, который работает на основных платформах, для этой платформы больше не будет инструментов переключения. Кажется, что если бы инструменты были одинаковыми, уровень переключения между платформами был бы таким же легким.

Может ли кто-нибудь пролить свет на оплату компиляторов, таких как компиляторы Intel, и на реальные кроссплатформенные преимущества, которые можно получить от их использования? Становится ли ваш код менее переносимым, даже если он очень старается не использовать специфичные для платформы методы?

Джейсон
источник
29
Не путайте Visual Studio с компиляторами Microsoft, компиляторы доступны бесплатно и одинаковы как в обычной, так и в экспресс-редакциях Visual Studio. Вы даже можете получить их без Visual Studio, через Windows SDK .
Яннис
6
@Rig Хорошо, Microsoft частично виновата в этом, они никогда не предпринимали реальных усилий, чтобы рекламировать тот факт, что их компилятор C ++ находится в свободном доступе. Только тот факт, что вы не можете загрузить его самостоятельно (без раздутого Windows SDK или Visual Studio Express), достаточно, чтобы сбить с толку людей доступностью.
Яннис
5
@Rig Точно. У них есть евангелическая армия на местах, рекламирующая Visual Studio Express (IDE) и Windows SDK (набор различных инструментов), и нигде не упоминается их компилятор C ++ (он даже не указан на веб-сайте Windows SDK) или способ скачать только компилятор и больше ничего.
Яннис
3
@YannisRizos: Если я не ошибаюсь, компиляторы C ++ больше не являются частью Windows SDK - msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx Это они?
Кодер
1
@JeffO - SDK . Бесплатно скачать, и включает в себя инструменты C ++. Там может быть более новая версия, но это то, что я нашел первым.
Бобсон

Ответы:

25

По моему опыту, способность кросс-хостовой платформы является незначительным фактором при выборе компилятора. На самом деле совсем наоборот. Люди гораздо чаще выбирают компилятор из-за его превосходной поддержки одной конкретной целевой платформы.

Взять, к примеру, компилятор Intel. Люди обычно покупают его, когда хотят получить максимум от производительности новейшего чипа Intel. В конце концов, сложно спроектировать компилятор лучше, чем парни, которые могут идти по коридору и разговаривать с парнями, которые разрабатывали чипы.

По той же причине люди покупают инструменты от Microsoft для разработки на платформах Microsoft. Вот кто имеет поддержку в первую очередь.

Карл Билефельдт
источник
1
Ack. Вот почему сфера высокопроизводительных вычислений является важным рынком для коммерческих компиляторов. Поскольку производительность и возможности настройки действительно важны, когда время вычислений назначается (а иногда и оплачивается) часом.
mschuett
Чтобы расширить это, в некоторых ситуациях просто нет свободного компилятора. Например, для разработки ядра Windows (Win8 +) единственным вариантом является использование MSVC со встроенным компилятором WDK.
SomeWittyUsername
19

Поработав над платным компилятором, я считаю, что основная причина платить за компилятор - контракт на поддержку. Если у клиента есть проблема с его кодом, и он подозревает ошибку компилятора, он может попросить поставщика компилятора исследовать возможные решения (в десять, а не в вендор), возможно, с крайним сроком ответа / решения. Это может быть сделано без необходимости публичного выпуска исходного кода для проектов, которые могут содержать конфиденциальную информацию, и, как правило, контракт обязывает поставщика хранить секретность в отношении любого общего исходного кода. Как правило, более крупные компании готовы платить за этот уровень поддержки, в то время как более мелкие магазины не считают, что это стоит денег или просто слишком дорого.

Кроме того, поставщики хотят угодить (высокооплачиваемым) клиентам, поэтому запросы к функциям располагаются по приоритетам в зависимости от того, какие клиенты хотят их получить. Кроме того, клиенты могут предлагать функции, более приспособленные к их потребностям, более специфичные для компании, которые не будут широко использоваться. Это невозможно для пользователей GCC или других компиляторов с открытым исходным кодом, где функции реализуются теми, кто желает делать это в любом порядке, который они чувствуют по своему собственному расписанию.

Чуви Гамбол
источник
7
«Это невозможно для пользователей GCC или других компиляторов с открытым исходным кодом, где функции реализуются теми, кто желает делать это в любом порядке, который они чувствуют по своему собственному расписанию». Но, с другой стороны, если клиент хочет получить эту функцию достаточно сильно, он может назначить разработчиков для ее самостоятельной реализации, а затем может или не может поделиться ею с другими. (Помните, что GPL касается распространения , а не использования .) При использовании проприетарного программного обеспечения они должны убедить поставщика реализовать указанную функцию, а также знать и описывать достаточно подробно, чтобы фактически получить то, что они хотят.
CVn
1
Если у компании есть разработчики, имеющие опыт работы и знакомые с компиляторами и конкретной базой кода, то да, но это дополнительные расходы, вероятно, больше, чем покупка компилятора. Кроме того, вы будете удивлены тем, насколько расплывчатыми могут быть запросы. Если клиент платит, не нужно много, чтобы убедить компанию в том, что он что-то делает, особенно когда вы платите много денег. Я не буду спорить ни с одной из сторон, просто скажу, что некоторые считают этот уровень поддержки стоящим денег.
Chewy Gumball
1
Я согласен, что компилятор ни в коем случае не является тривиальной частью программного обеспечения. Добавление функции к ней, безусловно, является нетривиальной задачей, особенно для тех, кто не знаком с базой кода. Но сказать, что «невозможно» реализовать функции в компиляторе с открытым исходным кодом, а возможно в проприетарном, - в лучшем случае ошибочный аргумент. Если у компании нет необходимого внутреннего опыта, они могут нанять консультанта, который сделает это за них. С проприетарным программным обеспечением, если поставщик говорит «нет» (независимо от причины, по которой это так), тогда вам повезло.
CVn
Все, что сказал, я высказал это, потому что я думаю, что это хорошо отвечает на вопрос.
CVn
1
Я не думаю, что вы когда-либо имели дело с «коммерческой» поддержкой программного обеспечения. Это совершенно другой опыт, чем вы описываете.
Джеймс Андерсон
1

Иногда люди платят не за компилятор, а за время работы. В частности, у Intel есть традиции предоставления превосходных библиотек для таких вещей, как многопоточность, поддержка мультимедиа (SSE и т. Д.) И математика повышенной точности.

TMN
источник
Вы правы, Polyverse продает дистрибутивы Linux, защищенные движущейся защитой цели. Приобретая один из их дистрибутивов, вы одновременно покупаете их компилятор, который применяет защиту движущейся цели ко всем двоичным файлам ОС.
Т. Салим
0

Я работал с некоторыми людьми, которые использовали платный компилятор.

Они делали серьезный анализ данных в кластере. Предположительно, компилятор Intel сумел создать для них немного более быстрый код, и оплата за компилятор была дешевле, чем запуск большего количества узлов. Насколько я понимаю, разница была очень мала, но умноженная на затраты на электроэнергию, считалась оправданной.

Поэтому я не удивлюсь, если большинство суперкомпьютеров HPC будут работать на специализированных компиляторах, предоставленных производителями чипов.

MrFox
источник
-4

Я с Карлом Билефельдом об этом.

Я не буду доверять компиляторам, которые предлагают кроссплатформенные возможности. Потому что, если честно, мы все знаем, что нативные и целевые инструменты / компиляторы всегда имеют такие преимущества, как лучшее знание целевой платформы.

И я считаю, что когда ваше программное обеспечение становится сложным и требуется производительность, вы можете начать думать о переходе на платные компиляторы.

Кроме того, я считаю, что компиляторы Microsoft чертовски хороши. И как все говорили, они свободны навсегда.

Семих Масат
источник
2
Так ты не доверяешь GCC? А как насчет компиляторов Android и iOS?
-17

Бесплатный компилятор GNU (gcc) поставляется с лицензией GNU (GPL), что означает, что вы можете использовать только для проектов с открытым исходным кодом. Поддерживается громкими именами в программном обеспечении.

Clang (бесплатно) - попытка избежать ограничений GPL, создающая хороший компилятор. Также поддерживается Apple, Google и многие другие.

VC ++ Express (бесплатный) ограничен платформой Windows (кстати, они сделали ее бесплатной в последний момент, потому что многие люди из сообщества Open Source спрашивали их об этом), и ему не хватает большинства профессиональных инструментов и функций. Такой как профилировщик, например.

Итак, все эти инструменты бесплатны для нас, но поддерживаются отраслью.

Intel (коммерческая), как упоминал Карл, для проектов, которые нацелены на большую производительность на платформах Intel.

SChepurin
источник
17
Здесь много дезинформации. VC ++ Express бесплатен, хотя я сомневаюсь, что это потому, что сообщество Open Source (кто?) Просило об этом, но это не имеет ничего общего с компилятором C ++, как @YannisRizos упоминает в комментариях выше. Во-вторых, хотя GCC является GPL, его можно использовать для компиляции кода не-GPL. Смотрите здесь stackoverflow.com/questions/9772616/…
Авнер Шахар-Каштан
Невероятно, но многие люди (и я в том числе) просили сделать VC ++ 2012 для рабочего стола бесплатным. Не хочу говорить о GPL.
Шепурин
5
Да, я уверен, что многие люди просили их сделать это бесплатно. Это не значит, что вы были спусковым крючком для этого. Это было деловое решение. На самом деле, я почти уверен, что негативная реакция на первоначальную цену пакетов VSExpress (думаю, $ 25) исходила от любителей и коммерческих разработчиков, которые хотели что-то использовать дома, не нужных разработчиков ОС и, конечно, не как сообщество.
Авнер Шахар-Каштан