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?
Antworten:
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle