Kiedy płacić za kompilatory C ++ [zamknięte]

19

Ostatnio zacząłem się zastanawiać, kiedy programiści powinni płacić za kompilatory. Kompilatory są dostarczane bezpłatnie z większością platform lub istnieje darmowa wersja, którą można łatwo uzyskać.

Przykład:

OS X - GCC i Clang / LLVM są dostarczane z narzędziami programistycznymi. Tutaj nie ma ograniczeń co do tego, jak i co możesz dzięki nim osiągnąć.

Linux - GCC i jestem pewien, że więcej. Nie znam obecnego stanu kompilatorów linuksowych. Tutaj nie ma ograniczeń co do tego, jak i co możesz dzięki nim osiągnąć.

Windows - MinGW i Microsoft oferują bezpłatną wersję programu Visual Studio. Bez ograniczeń w MinGW, ale myślę, że w darmowym Visual Studio istnieją poważne ograniczenia.

Jednak na przykład Intel produkuje kompilatory C / C ++. Są duże w cenie. Edukacyjnie myślę, że można uzyskać wersję OS X za 49 USD i Windows / Linux za 129 USD każda. Następnie oferują kompletny produkt „Studio”. Oczywiście przy stosowaniu cen edukacyjnych obowiązują ograniczenia.

Zastanawiam się jednak, kiedy należy rozważyć płacenie za kompilatory. Jednym z przykładów, o którym myślę, jest gra wideo. Jeśli używasz kompilatora działającego na głównych platformach, nie będzie już żadnych narzędzi do przełączania platformy. Wydaje się, że byłoby łatwiejsze przełączanie między platformami, gdyby narzędzia były takie same.

Czy ktoś może rzucić nieco światła na płacenie za kompilatory takie jak kompilatory Intela i prawdziwe korzyści dla wielu platform, które można uzyskać z ich używania? Czy kod staje się mniej przenośny, nawet bardzo starając się nie wykonywać technik specyficznych dla platformy?

Jason
źródło
29
Nie pomyl Visual Studio z kompilatorami Microsoft, kompilatory są dostępne za darmo i są takie same w normalnej i ekspresowej wersji Visual Studio. Można je nawet uzyskać bez programu Visual Studio za pośrednictwem zestawu Windows SDK .
yannis
6
@Rig Cóż, Microsoft jest częściowo winien za to, nigdy nie podjęli rzeczywistego wysiłku, aby reklamować fakt, że ich kompilator C ++ jest swobodnie dostępny. Sam fakt, że nie można go pobrać samodzielnie (bez rozdętego zestawu Windows SDK lub Visual Studio Express) wystarczy, aby wprowadzić użytkowników w błąd co do jego dostępności.
yannis 11.03.13
5
@Rig Dokładnie. Mają na ziemi armię ewangelicką, reklamującą Visual Studio Express (IDE) i Windows SDK (zbiór różnych narzędzi), i nie wspomina się wcale o ich kompilatorze C ++ (nie ma go nawet na stronie Windows SDK) ani w żaden sposób aby pobrać tylko kompilator i nic więcej.
yannis 11.03.13
3
@YannisRizos: Jeśli się nie mylę, kompilatory C ++ nie są już częścią zestawu Windows SDK - msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx Czy są?
Coder,
1
@JeffO - SDK . Bezpłatne pobieranie i zawiera narzędzia C ++. Może być nowsza wersja, ale to właśnie znalazłem jako pierwszy.
Bobson,

Odpowiedzi:

25

Z mojego doświadczenia wynika, że ​​możliwość wyboru kompilatora ma niewielkie znaczenie dla różnych platform. W rzeczywistości, wręcz przeciwnie. Ludzie znacznie częściej wybierają kompilator, ponieważ zapewnia on doskonałą obsługę jednej konkretnej platformy docelowej.

Weźmy na przykład kompilator Intel. Ludzie zwykle kupują go, gdy chcą wykorzystać każdą ostatnią uncję wydajności z najnowszego, najnowocześniejszego układu Intel. W końcu trudno jest zaprojektować kompilator lepiej niż faceci, którzy mogą iść korytarzem i porozmawiać z facetami, którzy zaprojektowali chipy.

To ten sam powód, dla którego ludzie kupują narzędzia od Microsoft do programowania na platformach Microsoft. To właśnie ma przede wszystkim wsparcie.

Karl Bielefeldt
źródło
1
Ack. Właśnie dlatego dziedzina obliczeń o wysokiej wydajności jest ważnym rynkiem dla komercyjnych kompilatorów. Ponieważ wydajność i możliwości dostrajania są naprawdę ważne, gdy czas obliczeniowy jest przypisywany (a czasem rozliczany) za godzinę.
mschuett
Aby to rozszerzyć, w niektórych sytuacjach po prostu nie ma wolnego kompilatora. Na przykład w przypadku rozwoju jądra systemu Windows (Win8 +) jedyną opcją jest użycie MSVC ze zintegrowanym kompilatorem WDK.
SomeWittyUsername
19

Po pracy na kompilatorze płatnym uważam, że głównym powodem płacenia za kompilator jest umowa wsparcia. Jeśli klient ma problem ze swoim kodem i podejrzewa błąd kompilatora, może poprosić dostawcę kompilatora o zbadanie możliwych rozwiązań (na bilecie dostawcy, a nie jego), być może z terminem odpowiedzi / rozwiązania. Można to zrobić bez konieczności publicznego publikowania kodu źródłowego dla projektów, które mogą zawierać poufne informacje, i zwykle umowa zobowiązuje sprzedawcę do zachowania tajemnicy na temat dowolnego udostępnionego kodu źródłowego. Ogólnie rzecz biorąc, większe firmy są skłonne zapłacić za ten poziom wsparcia, podczas gdy mniejsze sklepy nie uważają go za warte swojej ceny lub po prostu za drogie.

Ponadto dostawcy chcą zadowolić (wysoko płatnych) klientów, dlatego prośby o funkcje są traktowane priorytetowo według tego, kto ich potrzebuje. Klienci mogą również sugerować funkcje bardziej dostosowane do ich potrzeb, a bardziej specyficzne dla firmy, które nie byłyby powszechnie używane. Nie jest to możliwe dla użytkowników GCC lub innych kompilatorów typu open source, w których funkcje są implementowane przez tych, którzy chcą to zrobić w dowolnej kolejności według własnego harmonogramu.

Chewy Gumball
źródło
7
„Nie jest to możliwe dla użytkowników GCC lub innych kompilatorów typu open source, w których funkcje są wdrażane przez tych, którzy chcą to zrobić w dowolnej kolejności według własnego harmonogramu.” Ale z drugiej strony, jeśli klient bardzo chce tej funkcji, może dowolnie przypisać programistom jej wdrożenie, a następnie może ją udostępnić innym osobom. (Pamiętaj, że GPL dotyczy dystrybucji , a nie użytkowania ). Dzięki prawnie zastrzeżonemu oprogramowaniu muszą przekonać dostawcę do wdrożenia wspomnianej funkcji, a także znać i opisywać wystarczająco szczegółowo, aby uzyskać to, czego chcą.
CVn
1
Jeśli firma ma programistów z doświadczeniem i znajomością kompilatorów i konkretnej bazy kodu, to tak, ale jest to dodatkowy wydatek, prawdopodobnie więcej niż zakup kompilatora. Byłbyś również zaskoczony, jak niejasne mogą być prośby o funkcje. Jeśli klient płaci, przekonanie firmy o zrobieniu czegoś nie wymaga wiele, zwłaszcza gdy płacisz dużo pieniędzy. Nie będę się kłócił po żadnej ze stron, tylko powiem, że niektórzy uważają ten poziom wsparcia za warty swojej ceny.
Chewy Gumball
1
Zgadzam się, że kompilator w żadnym wypadku nie jest trywialnym oprogramowaniem. Dodanie do niego funkcji jest z pewnością nietrywialnym zadaniem, szczególnie dla kogoś, kto nie zna podstawy kodu. Ale stwierdzenie, że „nie jest możliwe” posiadanie funkcji zaimplementowanych w kompilatorze open source, ale możliwe jest to w zastrzeżonym, jest co najwyżej błędnym argumentem. Jeśli firma nie posiada wymaganej wiedzy specjalistycznej, może zatrudnić konsultanta, który zrobi to za nich. Dzięki prawnie zastrzeżonemu oprogramowaniu, jeśli sprzedawca mówi „nie” (bez względu na przyczynę), oznacza to, że nie masz szczęścia.
CVn
To powiedziawszy, głosowałem za tym, ponieważ uważam, że dobrze odpowiada na pytanie.
CVn
1
Nie sądzę, żebyś kiedykolwiek miał do czynienia z obsługą „komercyjnego” oprogramowania. To zupełnie inne doświadczenie niż to, co opisujesz.
James Anderson
1

Czasami nie jest to kompilator, za który ludzie płacą, to środowisko wykonawcze, które z nim współpracuje. W szczególności Intel ma tradycję dostarczania doskonałych bibliotek do takich rzeczy jak wielowątkowość, obsługa mediów (SSE itp.) I matematyka o rozszerzonej precyzji.

TMN
źródło
Masz rację, Polyverse sprzedaje dystrybucje Linuksa chronione przez ruch obrony celu. Kupując jedną z ich dystrybucji, jednocześnie kupujesz ich kompilator, który stosuje ruchomą ochronę celu do wszystkich plików binarnych systemu operacyjnego.
T. Salim
0

Pracowałem z niektórymi osobami, które korzystały z płatnego kompilatora.

Robili poważne crunch danych w klastrze. Podobno kompilatorowi Intel udało się wygenerować dla nich nieco szybszy kod, a płacenie za kompilator było tańsze niż uruchomienie większej liczby węzłów. Rozumiem, że różnica była bardzo niewielka, ale pomnożona przez uwzględnione w niej koszty energii elektrycznej uznano za warte tego.

W tym celu nie zdziwiłbym się, gdyby większość superkomputerów HPC działała na specjalistycznych kompilatorach dostarczanych przez producentów układów.

MrFox
źródło
-4

W tej sprawie jestem z Karlem Bielefeldtem.

Tak naprawdę nie będę ufać kompilatorom oferującym funkcje wieloplatformowe. Ponieważ, szczerze mówiąc, wszyscy wiemy, że natywne i ukierunkowane narzędzia / kompilatory zawsze mają zalety, takie jak lepsze poznanie platformy docelowej.

Wierzę, że kiedy twoje oprogramowanie stanie się złożone i wymagana jest wydajność, możesz zacząć myśleć o przejściu na płatne kompilatory.

Poza tym uważam, że kompilatory Microsoftu są cholernie dobre. I jak wszyscy mówili, są wolni na zawsze.

Semih Masat
źródło
2
Więc nie ufasz GCC? Co z kompilatorami dla Androida i iOS?
-17

Darmowy kompilator GNU (gcc) jest dostarczany z licencją GNU (GPL), co oznacza, że ​​można go używać tylko w projektach Open Source. Obsługiwane przez duże nazwiska w oprogramowaniu.

Clang (darmowy) to próba uniknięcia ograniczeń GPL, tworząca dobry kompilator. Ponadto jest obsługiwany przez Apple, Google i wiele innych.

VC ++ Express (bezpłatny) jest ograniczony do platformy Windows (nawiasem mówiąc, zwolnili go w ostatnim momencie, ponieważ wiele osób ze społeczności Open Source zapytało go o to) i brakuje w nim większości profesjonalnych narzędzi i funkcji. Na przykład profiler.

Wszystkie te narzędzia są dla nas bezpłatne, ale są obsługiwane przez branżę.

Intel (komercyjny), jak wspomniał Karl, dla projektów, które są ukierunkowane na największą wydajność na platformach Intel.

SChepurin
źródło
17
Dużo dezinformacji tutaj. VC ++ Express jest darmowy, choć wątpię, że o to poprosił społeczność Open Source (kto?), Ale nie ma to nic wspólnego z kompilatorem C ++, jak wspomina @YannisRizos w powyższych komentarzach. Po drugie, chociaż sam GCC jest GPL, można go użyć do kompilacji kodu innego niż GPL. Zobacz tutaj stackoverflow.com/questions/9772616/…
Avner Shahar-Kashtan
Niewiarygodne, wiele osób (między innymi) poprosiło o udostępnienie VC ++ 2012 dla komputerów stacjonarnych za darmo. Nie chcę rozmawiać o GPL.
SChepurin,
5
Tak, jestem pewien, że wiele osób poprosiło ich o uwolnienie go. To nie znaczy, że byłeś dla niego wyzwalaczem. To była decyzja biznesowa. W rzeczywistości jestem prawie pewien, że sprzeciw wobec pierwotnej wyceny pakietów VSExpress (wydaje mi się, że 25 USD) pochodzi od hobbystów i programistów komercyjnych, którzy chcieli czegoś do użytku w domu, niekoniecznych programistów systemu operacyjnego, a na pewno nie jako społeczności.
Avner Shahar-Kashtan