¿Por qué las empresas todavía usan versiones realmente antiguas de Visual Studio?

9

Entiendo por qué se usa C ++. De eso no se trata esta pregunta.

Cuando instalo juegos, comúnmente Steam (solo uso Steam en estos días) instalará el C ++ 2005 Runtime distribuible.

Mi pregunta es ¿por qué es este el caso? ¿Cuál es la razón por la que un tiempo de ejecución lanzado hace más de 8 años sigue siendo frecuente? Algunos de los juegos que instalé recientemente son un poco más antiguos, por lo que suponiendo un par de años de tiempo de desarrollo, podría argumentar que era el estándar probado en ese momento.

¿Por qué las compañías de juegos no usan una versión más nueva del tiempo de ejecución VC ++?

Ian
fuente
1
Esto no parece un problema en busca de una respuesta. ¿Por qué presupone que es "preferido"?
Tetrad
Supongo que su pregunta es realmente "¿Por qué las empresas todavía usan versiones realmente antiguas de Visual Studio?" Vea aquí cuál es realmente el paquete redistribuible.
bobobobo

Respuestas:

20

Las empresas no actualizan VS willy-nilly. Estamos utilizando 2010SP1, por ejemplo, en un proyecto que no se planea enviar durante varios años. El uso de una versión más nueva significaría comprar nuevas licencias para el IDE, la posibilidad de comprar nuevas licencias para los complementos que utilizamos y, por supuesto, arriesgar algunos errores que no se han solucionado. Sin embargo, ya pagamos por 2010 y sabemos que 2010 funcionará para nuestras necesidades.

Admito que a veces me molesta; Realmente me gustaría el más nuevo soporte de C ++ 11/14, soporte de AMP y optimizaciones mejoradas, pero ese tipo de mentalidad de "actualización a la nueva brillante" no encaja bien con proyectos más grandes y más serios.

La mayoría de las entidades corporativas son muy conservadoras sobre la actualización de cualquier software, ya sea Visual Studio, Office, Windows, Perforce, lo que sea. Si bien el uso de Visual Studio 2005 es bastante raro en los juegos actuales, 2008 sigue siendo bastante común. Muy pocos están usando 2012. Es muy posible que la adopción de 2012 nunca suceda en masa y que la próxima versión popular de Visual Studio sea 2013 o 2014.

Vea, por ejemplo, cuán rápido la distribución común de Linux orientada a los entusiastas actualiza las versiones en comparación con la cadencia de lanzamiento de Redhat Enterprise o Ubuntu LTS. Los usuarios domésticos y los aficionados pueden justificar más fácilmente las actualizaciones y los entusiastas a menudo los reclaman, pero las empresas generalmente quieren el menor cambio posible.

Otro factor hoy es la compatibilidad con XBox 360. Es tonto comprar e instalar dos versiones del IDE / compilador si necesita una en particular para la compatibilidad con XBox. La próxima versión de VS que se vuelva popular para los juegos dependerá en gran medida del compilador que el XBox One recomiende para las versiones de lanzamiento de sus devkits (2012 se usa para los devkits beta que se usan para lanzar juegos, pero 2013 podría recomendarse más adelante para el post- lanzar títulos).

En términos de los tiempos de ejecución utilizados por los compiladores, estos deben coincidir exactamente con el compilador en uso. Parte de esto se debe a cómo funcionan C y C ++. Las interfaces se definen mediante archivos de encabezado, que en realidad son solo una forma elegante de cortar y pegar. Considere la exposición A:

void foo(char* name, int length);

Y ahora considere la exposición B:

void foo(int length, char* name);

Si estas funciones C se incluyeron en dos versiones diferentes de los tiempos de ejecución, ambas serían símbolos _foopero el código compilado para usar una claramente no funcionaría para la otra. Si bien los problemas de compatibilidad generalmente son un poco más complicados y sutiles, el resultado final sigue siendo el mismo: el código compilado con VS2005 tendrá un encabezado de VS2005 que solo describe cómo funciona el tiempo de ejecución de VS2005. VS2012 se envía con encabezados completamente diferentes destinados a un tiempo de ejecución completamente diferente.

Microsoft no admite la orientación de versiones anteriores, ya que eso realmente sería un dolor. Tendrían que enviar y luego continuar manteniendo viejos encabezados además de los tiempos de ejecución. Hay relativamente pocas razones para ello, ya que las buenas prácticas de uso de DLL en Windows permiten a los desarrolladores mezclar bibliotecas utilizando diferentes tiempos de ejecución. Si tiene VS2012, aún puede vincular las bibliotecas creadas con VS2005, siempre que usted y la biblioteca sigan algunas reglas fáciles.

Las plataformas como GNU / Linux se esfuerzan por evitar estos problemas, pero los han superado, a veces a un nivel mucho más profundo. Todavía recuerdo la transición de libc5 a glibc, o las frecuentes interrupciones de libstdc ++ de la época (esta es una de las razones por las que los desarrolladores de Linux / UNIX se han mantenido relativamente fríos sobre el tema de C ++ a lo largo de los años).

Windows se envía con un tiempo de ejecución C "genérico" de bajo nivel llamado MSVCR.DLL, aunque cada versión del compilador incluye su propio reemplazo, por ejemplo MSVCRR110.DLL. Puede esforzarse por usar solo la versión genérica, pero le falta una gran cantidad de funcionalidades, incluida la mayoría de las rutinas de soporte de C ++ que cambian con cada versión de Visual Studio (y su soporte en constante evolución de C ++). En general, no vale la pena el esfuerzo y la funcionalidad perdida a menos que realmente esté tratando de hacer una aplicación de dependencia cero (las herramientas de recuperación, las herramientas del sistema operativo, las herramientas de seguridad, etc., a veces entran en esta clase).

En resumen, cada Visual Studio tiene su propia biblioteca de tiempo de ejecución, y la aplicación compilada con esa versión debe usarse. Los juegos generalmente se escribirán utilizando menos que el compilador más avanzado y, por lo tanto, requerirán un tiempo de ejecución más antiguo.

Sean Middleditch
fuente
Algunas razones más: los compiladores más nuevos rompen la compatibilidad con plataformas más antiguas (p. Ej., La pre-actualización 1 VS2012 no era compatible con XP ); viejos compiladores tienen bien entendido errores, mientras que los nuevos compiladores tienen errores desconocidos (si todavía está bajo el engaño de los compiladores son libres de errores, despertar y oler el café! )
congusbongus
1

Hasta donde sé, Visual Studio 2008 es la última versión capaz de construir aplicaciones de Windows Mobile y Windows CE.

Necesito admitir aplicaciones que se ejecutan en dispositivos CE, por lo que VS2008 sigue siendo lo que uso.

Para mis aplicaciones de escritorio de Windows, uso VS2010 Pro por la sencilla razón de que soy propietario de la licencia. Funciona. Me gusta. y no veo por qué debería gastar más dinero para una versión más nueva que en realidad no mejore mis aplicaciones.

Mike RO Soft
fuente