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?
Odpowiedzi:
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.
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło