Perché le aziende usano ancora versioni davvero vecchie di Visual Studio?


9

Capisco perché viene utilizzato C ++. Non è questa la domanda.

Quando installo i giochi, generalmente Steam (uso praticamente solo Steam in questi giorni) installerà il C ++ 2005 Runtime distribuibile.

La mia domanda è: perché è così? Qual è la ragione per cui un runtime rilasciato oltre 8 anni fa è ancora prevalente? Alcuni dei giochi che ho installato di recente sono leggermente più vecchi, quindi supponendo che un paio di anni di tempo dev potrebbe essere il caso era lo standard provato e testato al momento.

Perché le società di giochi non usano una versione più recente del runtime VC ++?


1
Questo non sembra un problema nella ricerca di una risposta. Perché stai presupponendo che sia "preferito"?
Tetrad,

Immagino che la tua domanda sia davvero "Perché le aziende usano ancora versioni davvero vecchie di Visual Studio?" Vedi qui per che cos'è veramente il pacchetto ridistribuibile.
Bobobobo,

Risposte:


20

Le aziende non aggiornano VS volenti o nolenti. Stiamo usando 2010SP1 per esempio su un progetto che non prevede di spedire per diversi anni. Usare una versione più recente significherebbe acquistare nuove licenze per l'IDE, possibilità di acquistare nuove licenze per i plugin che utilizziamo e, ovviamente, rischiare alcuni bug che impediscono lo spettacolo che non sono stati risolti. Abbiamo già pagato per il 2010 e sappiamo che il 2010 funzionerà per le nostre esigenze.

Ammetto che a volte mi dà fastidio; Vorrei davvero il più recente supporto C ++ 11/14, supporto AMP e ottimizzazioni migliorate, ma quel tipo di mentalità "upgrade alla nuova brillante" non si combina bene con progetti più grandi e più seri.

La maggior parte delle entità aziendali è molto, molto prudente nell'aggiornamento di qualsiasi software, che si tratti di Visual Studio, Office, Windows, Perforce, qualunque cosa. Mentre l'utilizzo di Visual Studio 2005 è piuttosto raro per i giochi di oggi, il 2008 è ancora piuttosto comune. Pochissimi utilizzano il 2012. È del tutto possibile che l'adozione del 2012 non accadrà mai in massa e che la prossima versione popolare di Visual Studio sarà il 2013 o il 2014.

Guarda ad esempio quanto velocemente la distro Linux orientata dall'entusiasta comune aggiorna le versioni rispetto alla cadenza di rilascio di Redhat Enterprise o Ubuntu LTS. Gli utenti domestici e gli utenti più esigenti possono giustificare più facilmente gli aggiornamenti e gli appassionati spesso chiedono a gran voce per loro, ma le aziende in genere desiderano il minor cambiamento possibile.

Un altro fattore oggi è la compatibilità con XBox 360. È sciocco acquistare e installare due versioni dell'IDE / compilatore se ne hai bisogno in particolare per la compatibilità con XBox. La versione successiva di VS che diventerà popolare per i giochi dipenderà in gran parte dal compilatore consigliato da XBox One per le versioni di rilascio dei suoi devkit (il 2012 viene utilizzato per i beta devkit utilizzati per i giochi di lancio, ma il 2013 potrebbe essere consigliato lungo la strada per i post- titoli di lancio).

In termini di runtime utilizzati dai compilatori, questi devono corrispondere esattamente al compilatore in uso. Parte di ciò è dovuta al modo in cui funzionano C e C ++. Le interfacce sono definite da file di intestazione, che sono in realtà solo un modo elegante per tagliare e incollare. Considera la mostra A:

void foo(char* name, int length);

E ora considera la mostra B:

void foo(int length, char* name);

Se queste funzioni C fossero incluse in due diverse versioni dei runtime, sarebbero entrambe un simbolo _fooma il codice compilato per usarne uno chiaramente non funzionerebbe per l'altro. Mentre i problemi di compatibilità sono generalmente un po 'più complicati e sottili, il risultato finale è sempre lo stesso: il codice compilato con VS2005 avrà un'intestazione da VS2005 che descrive solo il funzionamento del runtime VS2005. VS2012 viene fornito con intestazioni completamente diverse destinate a un'autonomia completamente diversa.

Microsoft non supporta il targeting di versioni precedenti in quanto sarebbe davvero un dolore. Avrebbero dovuto spedire e quindi continuare a mantenere vecchie intestazioni oltre ai tempi di autonomia. C'è relativamente poco motivo perché le buone pratiche di utilizzo delle DLL in Windows consentono agli sviluppatori di mescolare librerie usando runtime diversi. Se hai VS2012 puoi comunque collegarti a librerie create con VS2005, purché tu e la biblioteca seguiate alcune semplici regole.

Piattaforme come GNU / Linux fanno qualche sforzo per evitare questi problemi, ma li hanno attraversati, a volte a un livello molto più profondo. Ricordo ancora la transizione da libc5 a glibc o le frequenti pause libstdc ++ del tempo (questo è uno dei motivi per cui gli sviluppatori Linux / UNIX sono rimasti relativamente freddi sull'argomento del C ++ nel corso degli anni).

Windows viene fornito con un runtime C "generico" di basso livello chiamato MSVCR.DLL, sebbene ogni versione del compilatore includa la propria sostituzione, ad es MSVCRR110.DLL. Puoi fare uno sforzo per usare solo la versione generica ma manca una grande quantità di funzionalità, inclusa la maggior parte delle routine di supporto C ++ che cambiano con ogni versione di Visual Studio (e il suo supporto in continua evoluzione di C ++). In genere non vale la pena e la perdita di funzionalità a meno che tu non stia davvero cercando di creare un'applicazione a dipendenza zero (strumenti di ripristino, strumenti del sistema operativo, strumenti di sicurezza e così via a volte rientrano in questa classe).

In breve, ogni Visual Studio ha la propria libreria di runtime e l'applicazione compilata con quella versione deve usare. I giochi vengono in genere scritti utilizzando meno del compilatore più all'avanguardia e quindi richiedono un tempo di esecuzione più vecchio.


Alcuni motivi in ​​più: i compilatori più recenti interrompono la compatibilità con le piattaforme precedenti (ad es. Pre-aggiornamento 1 VS2012 non supportava XP ); i vecchi compilatori hanno bug ben compresi mentre i nuovi compilatori hanno bug sconosciuti (se sei ancora sotto l'illusione di compilatori senza bug, svegliati e
annusa

1

Per quanto ne so, Visual Studio 2008 è l'ultima versione in grado di creare applicazioni Windows Mobile e Windows CE.

Devo supportare le app in esecuzione su dispositivi CE, quindi VS2008 è ancora quello che uso.

Per le mie app desktop Windows uso VS2010 Pro per la semplice ragione di possedere la licenza. Funziona. Mi piace. e non vedo perché dovrei sborsare più soldi per una versione più recente che in realtà non migliora le mie app.

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.