Чому компанії все ще використовують дійсно старі версії Visual Studio?


9

Я розумію, чому використовується C ++. Про це питання не йдеться.

Коли я встановлюю ігри, зазвичай Steam (я майже зараз користуюся Steam лише сьогодні) встановлюватиме C ++ 2005 Runtime.

Моє запитання, чому це так? Що є причиною тривалості виконання, випущеної понад 8 років тому, як і раніше? Деякі з ігор, які я нещодавно встановив, трохи старші, тому, припустивши, що через пару років дев час ви можете зробити так, це був перевірений стандарт на той час.

Чому ігрові компанії не використовують новішу версію виконання VC ++?


1
Це не є проблемою у пошуку відповіді. Чому ви гадаєте, що це "переважніше"?
Тетрад

Я думаю, ваше запитання справді "Чому компанії все ще використовують дійсно старі версії Visual Studio?" Ознайомтеся з тим, що насправді є перерозподільним пакетом.
bobobobo

Відповіді:


20

Компанії не модернізують VS мимоволі. Наприклад, ми використовуємо 2010SP1 для проекту, який не планується здійснювати протягом декількох років. Використання нової версії означатиме придбання нових ліцензій IDE, можливість придбання нових ліцензій для плагінів, якими ми користуємось, і, звичайно, ризикувати деякими помилками, які не зупиняються на показ. Ми вже заплатили за 2010 рік і знаємо, що 2010 рік буде працювати для наших потреб.

Зізнаюся, це часом мене дратує; Мені б дуже хотілося, щоб найновіша підтримка C ++ 11/14, підтримка AMP та покращені оптимізації, але такий тип "оновлення до нового блискучого" менталітету не добре поєднується з більшими, більш серйозними проектами.

Більшість корпорацій дуже і дуже консервативні щодо оновлення будь-якого програмного забезпечення, будь то Visual Studio, Office, Windows, Perforce і будь-що інше. Хоча використання Visual Studio 2005 є досить рідкісним для ігор сьогодні, 2008 все ще є досить поширеним явищем. Дуже мало хто використовує 2012 рік. Цілком можливо, що 2012 рік ніколи не відбудеться масово і наступною популярною версією Visual Studio буде 2013 або 2014 роки.

Подивіться, наприклад, наскільки швидко загальний, орієнтований на ентузіастів, дистрибутив Linux версії порівняно з частотою випуску Redhat Enterprise або Ubuntu LTS. Домашні користувачі та хобі можуть легше виправдати оновлення, а ентузіасти часто вимагають їх, але підприємства зазвичай хочуть якнайменші зміни.

Ще один фактор сьогодні - сумісність XBox 360. Дурно купувати та встановлювати дві версії IDE / компілятора, якщо вам потрібна, зокрема, для сумісності з XBox. Яка наступна версія VS стане популярною для ігор, багато в чому залежатиме від того, який компілятор XBox One рекомендує випускати версії своїх devkits (2012 використовується для бета-версій devkits, які використовуються для запуску ігор, але 2013 може бути рекомендований вниз по дорозі для запустити заголовки).

Що стосується часу виконання, що використовується компіляторами, вони повинні точно відповідати компілятору, який використовується. Частина цього пов'язана з тим, як працюють C і C ++. Інтерфейси визначаються файлами заголовків, які насправді є просто фантазійним способом зробити cut-n-paste. Розглянемо експонат А:

void foo(char* name, int length);

А тепер розглянемо експонат B:

void foo(int length, char* name);

Якби ці функції C були включені у дві різні версії виконання, вони обидва є символом, _fooале код, зібраний для використання однієї, явно не працював би для іншої. Хоча проблеми сумісності, як правило, дещо задіяні та тонкі, кінцевий результат все одно той самий: код, компільований з VS2005, матиме заголовок від VS2005, який описує лише те, як працює час виконання VS2005. VS2012 поставляється із абсолютно різними заголовками, орієнтованими на зовсім інший час виконання.

Microsoft не підтримує націлювання на старі версії, оскільки це насправді буде просто болем. Їм доведеться відправляти, а потім продовжувати підтримувати старі заголовки, крім часу виконання. Причин для цього досить мало, оскільки хороші практики використання DLL в Windows дозволяють розробникам змішувати бібліотеки, використовуючи різні режими виконання. Якщо у вас є VS2012, ви все ще можете зв’язатись із бібліотеками, створеними з VS2005, якщо ви та бібліотека дотримуєтесь декількох простих правил.

Платформи, такі як GNU / Linux, докладають певних зусиль, щоб уникнути цих проблем, але пройшли через них, іноді на набагато глибшому рівні. Я все ще пригадую перехід libc5 до glibc або часті перерви libstdc ++ (це одна з причин, що розробники Linux / UNIX залишалися відносно холодними на тему C ++ протягом багатьох років).

Windows постачається з низьким рівнем "загального" C часу виконання MSVCR.DLL, хоча кожна версія компілятора включає власну заміну, наприклад MSVCRR110.DLL. Ви можете докласти зусиль, щоб використовувати лише загальну версію, але в ній відсутня велика кількість функціональних можливостей, включаючи більшість процедур підтримки C ++, які змінюються з кожною версією Visual Studio (і її постійно розвивається підтримкою C ++). Зазвичай це не варто зусиль і втрачених функціональних можливостей, якщо ви справді не намагаєтеся зробити додаток з нульовою залежністю (засоби відновлення, засоби ОС, засоби безпеки тощо), іноді не потрапляють до цього класу.

Коротше кажучи, кожна Visual Studio має власну бібліотеку виконання, і програма, складена з цією версією, повинна використовувати. Ігри, як правило, пишуться, використовуючи менше, ніж самий передовий компілятор, а значить, знадобиться старіший час виконання.


Ще кілька причин: новіші компілятори порушують сумісність зі старими платформами (наприклад, попереднє оновлення 1 VS2012 не підтримувало XP ); старі компілятори мають добре зрозумілі помилки, в той час як нові компілятори невідомі помилки (якщо ви все ще під оманою, що компілятори не мають помилок, прокидайтеся та
пахніть

1

Наскільки я знаю, візуальна студія 2008 - це остання версія, здатна будувати додатки для Windows Mobile та Windows CE.

Мені потрібно підтримувати програми, що працюють на пристроях CE, щоб VS2008 все ще використовував.

Для своїх програм для робочого столу Windows я використовую VS2010 Pro з тієї простої причини, ніж я маю ліцензію. Це працює. Мені це подобається. і я не бачу, чому мені слід викласти більше грошей на нову версію, яка насправді не покращує мої програми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.