Wann muss man für C ++ - Compiler bezahlen? [Geschlossen]

19

Vor kurzem begann ich mich zu fragen, wann Entwickler für Compiler bezahlen sollten. Compiler sind auf den meisten Plattformen kostenlos oder es gibt eine kostenlose Version, die leicht erhältlich ist.

Beispiel:

OS X - GCC und Clang / LLVM werden mit den Entwicklertools geliefert. Hier gibt es keine Einschränkungen, wie und was Sie damit machen können.

Linux - GCC und ich sind sicher mehr. Ich kenne den aktuellen Stand der Linux-Compiler nicht. Hier gibt es keine Einschränkungen, wie und was Sie damit machen können.

Windows - MinGW und Microsoft bieten eine kostenlose Version von Visual Studio an. Keine Einschränkungen mit MinGW, aber ich denke mit dem kostenlosen Visual Studio gibt es schwerwiegende Einschränkungen.

Intel stellt jedoch beispielsweise C / C ++ - Compiler her. Sie haben einen hohen Preis. Pädagogisch denke ich, dass man die OS X-Version für 49 US-Dollar und Windows / Linux für jeweils 129 US-Dollar bekommen kann. Sie bieten dann auch ein komplettes "Studio" -Produkt an. Offensichtlich gibt es bei der Verwendung des Bildungspreises Einschränkungen.

Aber ich frage mich, wann man wirklich in Betracht ziehen sollte, für Compiler zu bezahlen. Ein Beispiel, an das ich denken kann, ist ein Videospiel. Wenn Sie einen Compiler verwenden, der auf den wichtigsten Plattformen funktioniert, gibt es für die Plattform keine Switching-Tools mehr. Es scheint, als würde sich das Wechseln zwischen Plattformen einfacher gestalten, wenn die Tools identisch wären.

Kann jemand etwas Licht ins Dunkel bringen, wie man für Compiler wie die Intel-Compiler und die wahren plattformübergreifenden Vorteile zahlt, die sich aus deren Verwendung ergeben könnten? Wird der eigene Code auch dann weniger portabel, wenn man sich sehr bemüht, keine plattformspezifischen Techniken anzuwenden?

Jason
quelle
29
Verwechseln Sie Visual Studio nicht mit den Compilern von Microsoft. Die Compiler sind kostenlos verfügbar und in der normalen und der Express-Edition von Visual Studio identisch. Sie können sie sogar ohne Visual Studio über das Windows SDK beziehen .
Yannis
6
@Rig Nun, Microsoft ist teilweise schuld daran, sie haben sich nie wirklich bemüht, für die Tatsache zu werben, dass ihr C ++ - Compiler frei verfügbar ist. Allein die Tatsache, dass Sie es nicht alleine herunterladen können (ohne das aufgeblähte Windows SDK oder Visual Studio Express), ist ausreichend, um die Verfügbarkeit zu verunsichern.
Yannis
5
Genau. Sie haben eine evangelikale Armee vor Ort, die für Visual Studio Express (eine IDE) und Windows SDK (eine Sammlung verschiedener Tools) wirbt, und ihren C ++ - Compiler (der nicht einmal auf der Windows SDK-Website aufgeführt ist) oder eine Art und Weise nicht erwähnt nur den compiler runterladen und sonst nix.
Yannis
3
@YannisRizos: Wenn ich mich nicht irre, sind C ++ - Compiler nicht mehr Bestandteil des Windows SDK - msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx Sind sie?
Coder
1
@JeffO - SDK . Kostenloser Download und enthält die C ++ - Tools. Es könnte eine neuere Version geben, aber das habe ich zuerst gefunden.
Bobson

Antworten:

25

Nach meiner Erfahrung spielt die Fähigkeit zur Cross-Host-Plattform bei der Auswahl eines Compilers eine untergeordnete Rolle. Im Gegenteil. Menschen wählen einen Compiler viel häufiger, weil er eine bestimmte Zielplattform überlegen unterstützt.

Nehmen Sie zum Beispiel den Intel-Compiler. Die Leute kaufen es normalerweise, wenn sie die letzte Unze Leistung aus dem neuesten Intel-Chip herausholen wollen. Schließlich ist es schwer, einen Compiler besser zu entwerfen als die Leute, die den Flur entlanggehen und mit den Leuten sprechen können, die die Chips entworfen haben.

Es ist der gleiche Grund, warum Menschen Tools von Microsoft kaufen, um sie auf Microsoft-Plattformen zu entwickeln. Das ist, wer in erster Linie die Unterstützung hat.

Karl Bielefeldt
quelle
1
Ack. Aus diesem Grund ist der Bereich High Performance Computing ein wichtiger Markt für kommerzielle Compiler. Weil Leistung und Optimierungsfunktionen wirklich wichtig sind, wenn die Rechenzeit stundenweise zugewiesen (und manchmal in Rechnung gestellt) wird.
Mschuett
Um dies zu erweitern, gibt es in einigen Situationen einfach keinen freien Compiler. Für die Windows-Kernel-Entwicklung (Win8 +) besteht die einzige Option darin, MSVC mit dem integrierten WDK-Compiler zu verwenden.
SomeWittyUsername
19

Ich bin der Meinung, dass der Hauptgrund für die Bezahlung eines Compilers nach der Arbeit an einem For-Pay-Compiler der Supportvertrag ist. Wenn der Kunde ein Problem mit seinem Code hat und einen Compiler-Fehler vermutet, kann er den Compiler-Anbieter auffordern, mögliche Lösungen zu untersuchen (zum jeweiligen Zeitpunkt des Anbieters, nicht zu seinem Zeitpunkt), möglicherweise mit einer Frist für eine Antwort / Lösung. Dies kann erfolgen, ohne dass der Quellcode für Projekte, die möglicherweise vertrauliche Informationen enthalten, öffentlich veröffentlicht werden muss. In der Regel verpflichtet der Vertrag den Anbieter zur Geheimhaltung von gemeinsam genutzten Quellcodes. In der Regel sind größere Unternehmen bereit, für diese Unterstützung zu zahlen, während kleinere Geschäfte dies nicht als das Geld wert oder einfach zu teuer ansehen.

Darüber hinaus möchten Anbieter (hochbezahlte) Kunden zufriedenstellen, sodass Feature-Anforderungen nach Priorität geordnet werden, nach denen sie von den Kunden gewünscht werden. Kunden können auch Funktionen vorschlagen, die auf ihre Bedürfnisse zugeschnitten sind. Diese unternehmensspezifischen Funktionen würden nicht häufig verwendet. Dies ist für Benutzer von GCC oder anderen Open Source-Compilern nicht möglich, bei denen Funktionen von denjenigen implementiert werden, die dies in der Reihenfolge tun möchten, in der sie sich nach eigenem Zeitplan fühlen.

Chewy Gumball
quelle
7
"Dies ist für Benutzer von GCC oder anderen Open Source-Compilern nicht möglich, bei denen Funktionen von denjenigen implementiert werden, die dies in der Reihenfolge tun, in der sie sich für ihren eigenen Zeitplan fühlen." Wenn der Kunde das Feature jedoch dringend genug wünscht, kann er die Entwickler beauftragen, es selbst zu implementieren, und es dann möglicherweise für andere freigeben oder nicht. (Denken Sie daran, dass es bei der GPL um die Verbreitung und nicht um die Verwendung geht .) Bei proprietärer Software müssen sie den Anbieter überzeugen, diese Funktion zu implementieren, und sie müssen genau genug kennen und beschreiben, um tatsächlich das zu bekommen, was sie wollen.
ein Lebenslauf vom
1
Wenn das Unternehmen Entwickler mit der Erfahrung und Vertrautheit mit Compilern und der spezifischen Codebasis hat, dann ja, aber das ist eine zusätzliche Ausgabe, wahrscheinlich mehr als der Kauf des Compilers. Außerdem wären Sie überrascht, wie vage Funktionsanforderungen sein können. Wenn ein Kunde zahlt, braucht es nicht viel, um ein Unternehmen davon zu überzeugen, etwas zu tun, insbesondere wenn Sie viel Geld bezahlen. Ich werde nicht auf beiden Seiten streiten, nur sagen, dass einige dieses Maß an Unterstützung das Geld wert finden.
Chewy Gumball
1
Ich bin damit einverstanden, dass ein Compiler keineswegs eine triviale Software ist. Das Hinzufügen eines Features ist sicherlich eine nicht triviale Aufgabe, insbesondere für jemanden, der mit der Codebasis nicht vertraut ist. Zu sagen, dass es "nicht möglich" ist, Features in einem Open-Source-Compiler zu implementieren, aber in einem proprietären Compiler, ist bestenfalls ein fehlerhaftes Argument. Wenn das Unternehmen intern nicht über das erforderliche Fachwissen verfügt, kann es einen Berater beauftragen, dies für sie zu tun. Wenn der Anbieter mit proprietärer Software Nein sagt (unabhängig vom Grund), haben Sie in jeder Hinsicht Pech.
ein Lebenslauf vom
Trotzdem habe ich das positiv bewertet, weil ich denke, dass es die Frage gut beantwortet.
ein CVn
1
Ich glaube nicht, dass Sie sich jemals wirklich mit "kommerzieller" Software-Unterstützung befasst haben. Es ist eine ganz andere Erfahrung als die, die Sie beschreiben.
James Anderson
1

Manchmal ist es nicht der Compiler, für den die Leute bezahlen, sondern die Laufzeit, die damit arbeitet. Insbesondere Intel bietet traditionell hervorragende Bibliotheken für Multithreading, Medienunterstützung (SSE usw.) und Mathematik mit erweiterter Genauigkeit.

TMN
quelle
Sie haben recht, Polyverse vertreibt Linux-Distributionen, die durch das Bewegen der Zielverteidigung geschützt sind. Mit dem Kauf einer ihrer Distributionen kaufen Sie gleichzeitig deren Compiler, der die Abwehr von sich bewegenden Zielen auf alle Binärdateien des Betriebssystems anwendet.
T. Salim
0

Ich habe mit einigen Leuten gearbeitet, die einen bezahlten Compiler verwendet haben.

Sie machten ernsthafte Daten-Crunching in einem Cluster. Angeblich konnte der Intel-Compiler etwas schnelleren Code für sie produzieren, und das Bezahlen des Compilers war billiger als das Ausführen von mehr Knoten. Meines Erachtens war der Unterschied sehr gering, aber multipliziert mit den darin berücksichtigten Stromkosten wurde er als wertvoll erachtet.

In diesem Sinne wäre ich nicht überrascht, wenn die meisten HPC-Supercomputer auf speziellen Compilern der Chiphersteller laufen würden.

MrFox
quelle
-4

Ich bin mit Karl Bielefeldt dabei.

Ich vertraue keinen Compilern, die plattformübergreifende Funktionen anbieten. Denn um ehrlich zu sein, wir alle wissen, dass native und zielgerichtete Tools / Compiler immer Vorteile haben, zum Beispiel die Zielplattform besser zu kennen.

Und ich glaube, wenn Ihre Software komplex wird und Leistung benötigt wird, können Sie darüber nachdenken, auf bezahlte Compiler umzusteigen.

Außerdem glaube ich, dass Microsofts Compiler verdammt gut sind. Und wie alle anderen sagten, sind sie für immer frei.

Semih Masat
quelle
2
Also vertraust du GCC nicht? Was ist mit den Android- und iOS-Compilern?
-17

GNU Free Compiler (gcc) wird mit einer GNU-Lizenz (GPL) geliefert, dh Sie können diese nur für Open Source-Projekte verwenden. Unterstützt von großen Namen in der Software.

Clang (kostenlos) ist ein Versuch, die GPL-Einschränkungen zu umgehen und einen guten Compiler zu erstellen. Wird auch von Apple, Google und vielen anderen unterstützt.

VC ++ Express (kostenlos) ist auf die Windows-Plattform beschränkt (übrigens haben sie es im letzten Moment kostenlos gemacht, weil viele Leute aus der Open Source-Community sie danach gefragt haben) und es fehlen die meisten professionellen Tools und Funktionen. Wie zum Beispiel Profiler.

Alle diese Tools sind für uns kostenlos, werden jedoch von der Branche unterstützt.

Intel (kommerziell), wie Karl erwähnte, für Projekte, die die meiste Leistung auf Intel-Plattformen erzielen.

SChepurin
quelle
17
Viele Fehlinformationen hier. VC ++ Express ist kostenlos, obwohl ich bezweifle, dass die Open Source-Community (wer?) Darum gebeten hat, aber das hat nichts mit dem C ++ - Compiler zu tun, wie @YannisRizos in den obigen Kommentaren erwähnt. Zweitens, während GCC selbst GPL ist, kann es zum Kompilieren von Nicht-GPL-Code verwendet werden. Siehe hier stackoverflow.com/questions/9772616/…
Avner Shahar-Kashtan
Unglaublich, viele Leute (ich bin unter anderem) haben gefragt, ob sie VC ++ 2012 für den Desktop kostenlos machen wollen. Ich möchte nicht über die GPL sprechen.
SChepurin
5
Ja, ich bin sicher, viele Leute haben sie gebeten, es kostenlos zu machen. Das heißt nicht, dass Sie der Auslöser dafür waren. Es war eine geschäftliche Entscheidung. Tatsächlich bin ich mir ziemlich sicher, dass die Gegenreaktion zum ursprünglichen Preis der VSExpress-Pakete (25 US-Dollar, glaube ich) von Bastlern und kommerziellen Entwicklern stammte, die etwas zu Hause verwenden wollten, keine notwendigen OS-Entwickler und schon gar nicht als Community.
Avner Shahar-Kashtan