Недавно я начал задумываться, когда разработчики должны платить за компиляторы. Компиляторы поставляются бесплатно на большинстве платформ или есть бесплатная версия, которую легко получить.
Пример:
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, и на реальные кроссплатформенные преимущества, которые можно получить от их использования? Становится ли ваш код менее переносимым, даже если он очень старается не использовать специфичные для платформы методы?
Ответы:
По моему опыту, способность кросс-хостовой платформы является незначительным фактором при выборе компилятора. На самом деле совсем наоборот. Люди гораздо чаще выбирают компилятор из-за его превосходной поддержки одной конкретной целевой платформы.
Взять, к примеру, компилятор Intel. Люди обычно покупают его, когда хотят получить максимум от производительности новейшего чипа Intel. В конце концов, сложно спроектировать компилятор лучше, чем парни, которые могут идти по коридору и разговаривать с парнями, которые разрабатывали чипы.
По той же причине люди покупают инструменты от Microsoft для разработки на платформах Microsoft. Вот кто имеет поддержку в первую очередь.
источник
Поработав над платным компилятором, я считаю, что основная причина платить за компилятор - контракт на поддержку. Если у клиента есть проблема с его кодом, и он подозревает ошибку компилятора, он может попросить поставщика компилятора исследовать возможные решения (в десять, а не в вендор), возможно, с крайним сроком ответа / решения. Это может быть сделано без необходимости публичного выпуска исходного кода для проектов, которые могут содержать конфиденциальную информацию, и, как правило, контракт обязывает поставщика хранить секретность в отношении любого общего исходного кода. Как правило, более крупные компании готовы платить за этот уровень поддержки, в то время как более мелкие магазины не считают, что это стоит денег или просто слишком дорого.
Кроме того, поставщики хотят угодить (высокооплачиваемым) клиентам, поэтому запросы к функциям располагаются по приоритетам в зависимости от того, какие клиенты хотят их получить. Кроме того, клиенты могут предлагать функции, более приспособленные к их потребностям, более специфичные для компании, которые не будут широко использоваться. Это невозможно для пользователей GCC или других компиляторов с открытым исходным кодом, где функции реализуются теми, кто желает делать это в любом порядке, который они чувствуют по своему собственному расписанию.
источник
Иногда люди платят не за компилятор, а за время работы. В частности, у Intel есть традиции предоставления превосходных библиотек для таких вещей, как многопоточность, поддержка мультимедиа (SSE и т. Д.) И математика повышенной точности.
источник
Я работал с некоторыми людьми, которые использовали платный компилятор.
Они делали серьезный анализ данных в кластере. Предположительно, компилятор Intel сумел создать для них немного более быстрый код, и оплата за компилятор была дешевле, чем запуск большего количества узлов. Насколько я понимаю, разница была очень мала, но умноженная на затраты на электроэнергию, считалась оправданной.
Поэтому я не удивлюсь, если большинство суперкомпьютеров HPC будут работать на специализированных компиляторах, предоставленных производителями чипов.
источник
Я с Карлом Билефельдом об этом.
Я не буду доверять компиляторам, которые предлагают кроссплатформенные возможности. Потому что, если честно, мы все знаем, что нативные и целевые инструменты / компиляторы всегда имеют такие преимущества, как лучшее знание целевой платформы.
И я считаю, что когда ваше программное обеспечение становится сложным и требуется производительность, вы можете начать думать о переходе на платные компиляторы.
Кроме того, я считаю, что компиляторы Microsoft чертовски хороши. И как все говорили, они свободны навсегда.
источник
Бесплатный компилятор GNU (gcc) поставляется с лицензией GNU (GPL), что означает, что вы можете использовать только для проектов с открытым исходным кодом. Поддерживается громкими именами в программном обеспечении.
Clang (бесплатно) - попытка избежать ограничений GPL, создающая хороший компилятор. Также поддерживается Apple, Google и многие другие.
VC ++ Express (бесплатный) ограничен платформой Windows (кстати, они сделали ее бесплатной в последний момент, потому что многие люди из сообщества Open Source спрашивали их об этом), и ему не хватает большинства профессиональных инструментов и функций. Такой как профилировщик, например.
Итак, все эти инструменты бесплатны для нас, но поддерживаются отраслью.
Intel (коммерческая), как упоминал Карл, для проектов, которые нацелены на большую производительность на платформах Intel.
источник