Recentemente, comecei a me perguntar quando os desenvolvedores deveriam pagar pelos compiladores. Compiladores vêm de graça na maioria das plataformas ou existe uma versão gratuita facilmente obtida.
Exemplo:
OS X - GCC e Clang / LLVM vêm com as ferramentas do desenvolvedor. Não há limitações aqui para saber como e o que você pode fazer com eles.
Linux - GCC e tenho certeza mais. Eu não sei o estado atual dos compiladores linux. Não há limitações aqui para saber como e o que você pode fazer com eles.
Windows - MinGW e Microsoft oferecem uma versão gratuita do Visual Studio. Sem limitações no MinGW, mas acho que com o Visual Studio gratuito, existem sérias limitações.
No entanto, como exemplo, a Intel produz compiladores C / C ++. Eles são pesados no preço. Educacionalmente, acho que é possível obter a versão do OS X por US $ 49 e do Windows / Linux por US $ 129 cada. Eles também oferecem um produto "Studio" completo. Obviamente, usando os preços educacionais, há limitações impostas.
Mas o que eu quero saber é quando alguém realmente deve considerar pagar por compiladores. Um exemplo em que posso pensar é em um videogame. Se você estiver usando um compilador que funcione nas principais plataformas, não haverá mais ferramentas de comutação para a plataforma. Parece que haveria um nível de facilidade na alternância entre plataformas se as ferramentas fossem as mesmas.
Alguém pode lançar alguma luz sobre o pagamento de compiladores como os da Intel e os verdadeiros benefícios que podem ser obtidos através da plataforma? O código de alguém se torna menos portátil, mesmo se esforçando muito para não usar técnicas específicas da plataforma?
Respostas:
Na minha experiência, a capacidade de plataforma cruzada é uma consideração menor para a escolha de um compilador. De fato, muito pelo contrário. As pessoas escolhem muito mais frequentemente um compilador por seu suporte superior a uma plataforma de destino específica.
Veja o compilador Intel, por exemplo. As pessoas costumam comprá-lo quando querem obter todo o desempenho do último chip da Intel. Afinal, é difícil projetar um compilador melhor do que os caras que podem andar pelo corredor e conversar com os caras que projetaram os chips.
É a mesma razão pela qual as pessoas compram ferramentas da Microsoft para desenvolver nas plataformas Microsoft. É quem tem o apoio em primeiro lugar.
fonte
Tendo trabalhado em um compilador pago, acredito que o principal motivo para pagar por um compilador é o contrato de suporte. Se o cliente tiver um problema com seu código e suspeitar de um bug do compilador, poderá solicitar ao fornecedor que investigue possíveis soluções (na moeda do fornecedor, não na sua), possivelmente com um prazo para uma resposta / solução. Isso pode ser feito sem a necessidade de liberar publicamente o código-fonte para projetos que podem conter informações confidenciais e, geralmente, o contrato vincula o fornecedor ao sigilo sobre qualquer código-fonte compartilhado. Geralmente, empresas maiores estão dispostas a pagar por esse nível de suporte, enquanto lojas menores não o consideram valioso ou apenas muito caro.
Além disso, os fornecedores desejam agradar aos clientes (com altos salários), portanto, as solicitações de recursos são priorizadas pelas quais os clientes os desejam. Também é possível que os clientes sugiram recursos mais adaptados às suas necessidades, coisas mais específicas da empresa que não seriam amplamente utilizadas. Isso não é possível para usuários do GCC ou de outros compiladores de código-fonte aberto, onde os recursos são implementados por quem estiver disposto a fazê-lo na ordem que desejar em sua própria agenda.
fonte
Às vezes, não é o compilador pelo qual as pessoas pagam, é o tempo de execução que funciona com ele. A Intel, em particular, tem a tradição de fornecer excelentes bibliotecas para coisas como multithreading, suporte de mídia (SSE etc) e matemática de precisão estendida.
fonte
Eu trabalhei com algumas pessoas que usavam um compilador pago.
Eles estavam processando seriamente os dados em um cluster. Supostamente, o compilador Intel conseguiu produzir código um pouco mais rápido para eles, e pagar pelo compilador era mais barato do que executar mais nós. Meu entendimento é de que a diferença era muito pequena, mas multiplicada pelos custos de eletricidade considerados, foi considerada valiosa.
Para esse efeito, não ficaria surpreso se a maioria dos supercomputadores HPC fosse executada em compiladores especializados fornecidos pelos fabricantes de chips.
fonte
Estou com Karl Bielefeldt nisso.
Na verdade, não vou confiar em compiladores que oferecem recursos de plataforma cruzada. Porque, para ser sincero, todos sabemos que ferramentas / compiladores nativos e direcionados sempre têm vantagens como conhecer melhor a plataforma de destino.
E acredito que, quando seu software se torna complexo e o desempenho é necessário, você pode começar a pensar em mudar para compiladores pagos.
Além disso, acredito que os compiladores da Microsoft são muito bons. E, como todo mundo disse, eles são livres para sempre.
fonte
O compilador livre GNU (gcc) vem com licença GNU (GPL), o que significa que você pode usar apenas para projetos de código aberto. Suportado por grandes nomes em software.
Clang (grátis) é uma tentativa de evitar limitações da GPL, criando um bom compilador. Além disso, é suportado pela Apple, Google e muitos outros.
O VC ++ Express (gratuito) é limitado à plataforma Windows (a propósito, eles o tornaram gratuito no último momento, porque muitas pessoas da comunidade Open Source os perguntaram sobre isso) e não possui a maioria das ferramentas e recursos profissionais. Como o profiler, por exemplo.
Portanto, todas essas ferramentas são gratuitas para nós, mas são suportadas pelo setor.
Intel (comercial), como Karl mencionou, para projetos que visam maior desempenho nas plataformas Intel.
fonte