Quando pagare per i compilatori C ++ [chiuso]


19

Di recente ho iniziato a chiedermi quando gli sviluppatori dovrebbero pagare per i compilatori. I compilatori vengono gratis con la maggior parte delle piattaforme o esiste una versione gratuita facilmente ottenibile.

Esempio:

OS X - GCC e Clang / LLVM vengono forniti con gli strumenti di sviluppo. Non ci sono limiti qui per come e cosa puoi ottenere con loro.

Linux - GCC e ne sono sicuro di più. Non conosco lo stato attuale dei compilatori Linux. Non ci sono limiti qui per come e cosa puoi ottenere con loro.

Windows: MinGW e Microsoft offrono una versione gratuita di Visual Studio. Nessuna limitazione con MinGW ma penso che con Visual Studio gratuito ci siano gravi limitazioni.

Tuttavia, ad esempio, Intel produce compilatori C / C ++. Sono pesanti nel prezzo. Educativamente penso che si possa ottenere la versione OS X per $ 49 e Windows / Linux per $ 129 ciascuno. Offrono quindi anche un prodotto "Studio" completo. Ovviamente usando i prezzi educativi ci sono delle limitazioni imposte.

Ma quello che mi chiedo è quando si dovrebbe davvero considerare di pagare per i compilatori. Un esempio che mi viene in mente è un videogioco. Se si utilizza un compilatore che funziona sulle principali piattaforme, non ci sarebbero più strumenti di commutazione per la piattaforma. Sembra che ci sarebbe un livello di facilità nel passaggio da una piattaforma all'altra se gli strumenti fossero gli stessi.

Qualcuno può fare luce sul pagamento di compilatori come i compilatori Intel e i veri vantaggi multipiattaforma che si potrebbero ottenere dall'usarli? Il proprio codice diventa meno portatile anche se si sta provando molto a non fare tecniche specifiche per la piattaforma?


29
Non confondere Visual Studio con i compilatori di Microsoft, i compilatori sono disponibili gratuitamente e sono gli stessi nelle versioni normale ed Express di Visual Studio. Puoi persino ottenerli senza Visual Studio, tramite Windows SDK .
yannis,

6
@Rig Bene, Microsoft è in parte responsabile di questo, non hanno mai fatto uno sforzo reale per pubblicizzare il fatto che il loro compilatore C ++ è liberamente disponibile. Il solo fatto che non sia possibile scaricarlo da solo (senza l'SDK di Windows gonfiato o Visual Studio Express) è abbastanza per confondere le persone sulla sua disponibilità.
yannis,

5
@Rig esattamente. Hanno un esercito evangelico sul campo che pubblicizza Visual Studio Express (un IDE) e Windows SDK (una raccolta di vari strumenti), e nessuna menzione a tutti i loro compilatori C ++ (non è nemmeno elencato nel sito Web di Windows SDK) o in un modo per scaricare solo il compilatore e nient'altro.
yannis l'

3
@YannisRizos: se non sbaglio, i compilatori C ++ non fanno più parte dell'SDK di Windows - msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx Lo sono?
Coder

1
@JeffO - SDK . Download gratuito e include gli strumenti C ++. Potrebbe esserci una versione più recente, ma è quello che ho trovato per primo.
Bobson,

Risposte:


25

Nella mia esperienza, l'abilità della piattaforma cross host è una piccola considerazione per la scelta di un compilatore. In effetti, al contrario. Le persone scelgono molto più frequentemente un compilatore per il suo supporto superiore per una piattaforma di destinazione specifica.

Prendi ad esempio il compilatore Intel. Le persone di solito lo acquistano quando vogliono ottenere fino all'ultima oncia di prestazioni dall'ultimo chip Intel all'avanguardia. Dopotutto, è difficile progettare un compilatore migliore dei ragazzi che possono camminare per il corridoio e parlare con i ragazzi che hanno progettato i chip.

È lo stesso motivo per cui le persone acquistano strumenti da Microsoft per lo sviluppo su piattaforme Microsoft. Ecco chi ha il supporto prima di tutto.


1
Ack. Ecco perché il campo del calcolo ad alte prestazioni è un mercato importante per i compilatori commerciali. Perché le funzionalità di performance e tuning sono davvero importanti quando il tempo di calcolo viene assegnato (e talvolta fatturato) all'ora.
mschuett,

Per estenderlo, in alcune situazioni non esiste semplicemente un compilatore gratuito disponibile. Ad esempio, per lo sviluppo del kernel di Windows (Win8 +) l'unica opzione è utilizzare MSVC con il compilatore WDK integrato.
SomeWittyUsername

19

Avendo lavorato su un compilatore for-pay, credo che il motivo principale per pagare un compilatore sia per il contratto di supporto. Se il cliente ha un problema con il proprio codice e sospetta un bug del compilatore, può chiedere al fornitore del compilatore di indagare su possibili soluzioni (al momento del venditore, non sul proprio), possibilmente con una scadenza per una risposta / soluzione. Questo può essere fatto senza dover rilasciare pubblicamente il codice sorgente per i progetti che possono contenere informazioni riservate, e di solito il contratto lega il fornitore al segreto su qualsiasi codice sorgente condiviso. In genere, le aziende più grandi sono disposte a pagare per questo livello di supporto, mentre i negozi più piccoli non lo considerano un valore o troppo costoso.

Inoltre, i fornitori vogliono soddisfare i clienti (ad alto pagamento), quindi le richieste di funzionalità sono prioritarie in base alle esigenze dei clienti. È anche possibile che i clienti suggeriscano funzionalità più su misura per le loro esigenze, cose più specifiche dell'azienda che non sarebbero ampiamente utilizzate. Ciò non è possibile per gli utenti di GCC o altri compilatori di open source in cui le funzionalità vengono implementate da coloro che sono disposti a farlo nell'ordine che ritengono secondo il proprio programma.


7
"Questo non è possibile per gli utenti di GCC o altri compilatori open source in cui le funzionalità vengono implementate da coloro che sono disposti a farlo nell'ordine che ritengono secondo il proprio programma." D'altra parte, se il cliente desidera la funzionalità abbastanza male, è libero di incaricare gli sviluppatori di implementarla da soli e quindi può condividerla o meno con altri. (Ricorda che la GPL riguarda la distribuzione , non l' uso .) Con un software proprietario, devono convincere il venditore a implementare tale funzione, nonché conoscere e descrivere in modo sufficientemente dettagliato per ottenere effettivamente ciò che vogliono.
un CVn

1
Se la società ha sviluppatori con l'esperienza e la familiarità con i compilatori e la base di codice specifica, allora sì, ma questa è una spesa aggiuntiva, probabilmente più dell'acquisto del compilatore. Inoltre, rimarrai sorpreso da quanto possano essere vaghe le richieste di funzionalità. Se un cliente paga, non ci vuole molto per convincere un'azienda a fare qualcosa, soprattutto quando si pagano molti soldi. Non sosterrò nessuna delle due parti, dico solo che alcuni ritengono che questo livello di supporto valga la pena.
Chewy Gumball,

1
Sono d'accordo che un compilatore non è affatto un software banale. L'aggiunta di una funzione ad essa è certamente un'attività non banale, soprattutto per chi non ha familiarità con la base di codice. Ma dire che "non è possibile" avere funzionalità implementate in un compilatore open-source, ma è possibile in un compilatore proprietario, nella migliore delle ipotesi è un argomento errato. Se la società non dispone delle competenze richieste internamente, può assumere un consulente per farlo al posto suo. Con software proprietario, se il venditore dice di no (indipendentemente dal motivo per cui), allora sei sfortunatamente a tutti gli effetti.
un CVn

Detto questo, ho votato a favore perché penso che risponda bene alla domanda.
un CVn

1
Non credo che tu abbia mai avuto a che fare con il supporto software "commerciale". È un'esperienza completamente diversa da quella che descrivi.
James Anderson,

1

A volte non è il compilatore che la gente paga, è il runtime che funziona con esso. Intel in particolare ha una tradizione di fornire eccellenti librerie per cose come il multithreading, il supporto multimediale (SSE ecc.) E la matematica con precisione estesa.


Hai ragione, Polyverse vende distribuzioni Linux protette spostando la difesa del bersaglio. Con l'acquisto di una delle loro distribuzioni, si acquista contemporaneamente il loro compilatore che applica la difesa di destinazione mobile a tutti i file binari del sistema operativo.
T. Salim,

0

Ho lavorato con alcune persone che hanno utilizzato un compilatore a pagamento.

Stavano facendo un serio scricchiolio di dati in un cluster. Presumibilmente, il compilatore Intel è riuscito a produrre un codice leggermente più veloce per loro e il pagamento per il compilatore è stato più economico rispetto all'esecuzione di più nodi. La mia comprensione è che la differenza era molto piccola, ma moltiplicata per i costi dell'elettricità presi in considerazione in esso è stata considerata la pena.

A tal fine, non sarei sorpreso se la maggior parte dei supercomputer HPC funzionasse con compilatori specializzati forniti dai produttori di chip.


-4

Sono con Karl Bielefeldt su questo.

In realtà non mi fiderò dei compilatori che offrono funzionalità multipiattaforma. Perché, ad essere sinceri, sappiamo tutti che strumenti / compilatori nativi e mirati hanno sempre vantaggi come conoscere meglio la piattaforma di destinazione.

E credo che quando il tuo software diventa complesso e sono necessarie prestazioni, puoi iniziare a pensare di passare a compilatori a pagamento.

Inoltre, credo che i compilatori di Microsoft siano dannatamente buoni. E come hanno detto tutti gli altri, sono liberi per sempre.


2
Quindi non ti fidi di GCC? E i compilatori Android e iOS?

-17

Il compilatore gratuito GNU (gcc) viene fornito con licenza GNU (GPL), il che significa che puoi utilizzare solo per progetti Open source. Supportato da grandi nomi nel software.

Clang (gratuito) è un tentativo di evitare le limitazioni GPL creando un buon compilatore. Inoltre, è supportato da Apple, Google e molti altri.

VC ++ Express (gratuito) è limitato alla piattaforma Windows (a proposito, l'hanno reso gratuito all'ultimo momento, perché molte persone della comunità Open Source glielo hanno chiesto) e manca la maggior parte degli strumenti professionali e delle funzionalità. Come profiler, per esempio.

Quindi, tutti questi strumenti sono gratuiti per noi, ma sono supportati dal settore.

Intel (commerciale), come menzionato da Karl, per progetti che mirano alla maggior parte delle prestazioni su piattaforme Intel.


17
Molta disinformazione qui. VC ++ Express è gratuito, anche se dubito sia perché la comunità Open Source (chi?) Lo ha chiesto, ma ciò non ha nulla a che fare con il compilatore C ++, come menziona @YannisRizos nei commenti sopra. In secondo luogo, mentre GCC stesso è GPL, può essere utilizzato per compilare codice non GPL. Vedi qui stackoverflow.com/questions/9772616/…
Avner Shahar-Kashtan

Incredibile, molte persone (e lo sono tra gli altri) hanno chiesto di rendere VC ++ 2012 per desktop gratuito. Non voglio parlare di GPL.
SChepurin,

5
Sì, sono sicuro che molte persone hanno chiesto loro di renderlo gratuito. Ciò non significa che tu sia stato il grilletto per questo. È stata una decisione commerciale. In effetti, sono abbastanza sicuro che il contraccolpo contro il prezzo originale dei pacchetti VSExpress ($ 25, credo) sia da parte di hobbisti e sviluppatori commerciali che volevano qualcosa da usare a casa, non gli sviluppatori del sistema operativo necessari, e certamente non come una comunità.
Avner Shahar-Kashtan l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.