Каковы различия между Visual C ++ 6.0 и Visual C ++ 2008? - PullRequest
10 голосов
/ 15 сентября 2008

Каковы преимущества / недостатки между MS VS C ++ 6.0 и MSVS C ++ 2008?

Основная причина задать такой вопрос заключается в том, что все еще есть много приличных программистов, которые предпочитают использовать более старую версию вместо самой новой версии.

Есть ли причина, по которой вы можете предпочесть старое, а не новое?

Ответы [ 14 ]

27 голосов
/ 15 сентября 2008

Преимущества Visual Studio 2008 над Visual C ++ 6.0:

  • Компилятор C ++, более соответствующий стандартам, с лучшей обработкой шаблонов
  • Поддержка целей x64 / mobile / XBOX
  • Улучшенная реализация STL
  • Поддержка C ++ 0x TR1 (умные указатели, регулярные выражения и т. Д.)
  • Библиотека времени выполнения Secure C
  • Улучшена навигация по коду
  • Улучшен отладчик; возможность запуска удаленных сеансов отладки
  • Лучшая оптимизация компилятора
  • Множество исправлений ошибок
  • Более быстрая сборка на многоядерных / многопроцессорных системах
  • Улучшенный пользовательский интерфейс IDE со многими приятными функциями
  • Улучшена поддержка макросов в IDE; DTE предоставляет доступ к большему количеству методов и переменных IDE
  • Обновлена ​​библиотека MFC (в VS2008 с пакетом обновления 1)
  • поддержка OPENMP (легкая многопоточность) (только в VS2008 pro.)

Недостатки перехода на Visual Studio 2008:

  • IDE намного медленнее, чем VS6
  • В Intellisense все еще есть проблемы с производительностью (замена на VisualAssistX может помочь)
  • Параллельные сборки значительно усложняют развертывание приложения
  • Локальная (автономная) библиотека MSDN работает очень медленно
  • Как уже упоминалось здесь , в Профессиональной версии нет профилировщика

В духе недавнего поста в блоге Джоэля , я объединил некоторые другие ответы, опубликованные в одном ответе (и сделал это постом, принадлежащим сообществу, так что я не буду получать от Это). Надеюсь, ты не против. Большое спасибо Laur, NeARAZ, 17 из 26, me.yahoo.com и всем, кто ответил. - ChrisN

4 голосов
/ 15 сентября 2008

Я хотел бы добавить, что это не тот случай, когда приложения, разработанные с использованием Visual C ++ 2008, должны требовать больше DLL, чем те, которые были разработаны с использованием Visual C ++ 6.0. Это просто конфигурация проекта по умолчанию.

Если вы перейдете в свойства своего проекта, C / C ++, Генерация кода, а затем измените Runtime Library с Многопоточной DLL и Многопоточной отладочной DLL (конфигурации выпуска и отладки) на Многопоточная и Многопоточная отладка , тогда ваше приложение должно иметь меньше зависимостей.

4 голосов
/ 15 сентября 2008

Ну, во-первых, это может быть потому, что исполняемые файлы, созданные с помощью MSVS 6, требуют только msvcrt.dll (среда выполнения C), которая теперь поставляется с Windows.

Для исполняемых файлов MSVS 2008 требуется msvcrt9, поставляемый с ними (или уже установленный).

Кроме того, у вас уже есть много библиотек OSS, скомпилированных для 32-разрядной версии Windows с временем выполнения 6.0 C. В то время как для среды выполнения C 2008 вам нужно взять исходный код и скомпилировать их самостоятельно.

(большинство из этих библиотек фактически скомпилированы с MinGW, который также использует среду выполнения 6.0 C - возможно, это еще одна причина).

3 голосов
/ 15 сентября 2008

Сверху головы, преимущества новой Visual Studio:

  • более строгое соблюдение стандартов
  • поддержка x64 / mobile / XBOX цели
  • лучшая оптимизация компилятора
  • (способ) улучшенная обработка шаблонов
  • улучшен отладчик; возможность запустить сеансы удаленной отладки
  • улучшенная IDE
  • улучшена поддержка макросов; DTE предоставляет доступ к большему количеству методов и переменных IDE

Недостатки:

  • IDE кажется медленнее
  • Intellisense по-прежнему имеет производительность проблемы (замена его на VisualAssistX может помочь)
  • время выполнения не всегда доступно
  • интеграция управления исходным кодом не до пар (хотя по справедливости VC6 эта функция полностью отсутствует)
1 голос
/ 11 августа 2009

Если вы устанавливаете все пакеты обновлений для VS6, у вас все еще есть сплошная комбинация IDE / компилятор. Как разработчик программного обеспечения, который должен выпускать продукты «на природе» (через Интернет), я не хочу каждый раз поставлять среды выполнения VC ++ и .NET Framework (я не могу связывать их непосредственно в своем установщике / исполняемом файле, это запрещено Microsoft ). Знаете, несколько мегабайт времени выполнения для запуска килобайтов кода - это глупо. VC ++ 6.0 нужен только ваш исполняемый файл и 2 .DLL в лучшем случае.

Кроме того, среды отладки не могут распространяться с VC ++ .NET, что не очень хорошо, когда у меня есть клиент, которому необходимо выполнить некоторую отладку моих продуктов:)

На мой взгляд, есть основные причины, по которым я до сих пор использую VC ++ 6.0, но сама IDE уродлива (то есть: нет поддержки табуляции). Я обычно обхожу ограничения IDE, используя вместо этого кодовые блоки (CodeBlocks поддерживают CL.EXE / LINK.EXE для всех версий VC ++)

Cobolfoo

1 голос
/ 15 сентября 2008

Знаете ли вы, что реализация STL в MS VC6 не является поточно-ориентированной? В частности, оптимизация подсчета ссылок в basic_string взрывается даже при компиляции с многопоточными библиотеками http://support.microsoft.com/kb/813810

1 голос
/ 15 сентября 2008

Начиная с VC6 основное внимание Visual Studio уделялось C # и .NET, а также другим функциям, поэтому некоторые старожилы C ++ видят VC6 как старые добрые времена. С тех пор ситуация в Visual Studio для разработчиков на C ++ улучшилась, но не так резко, как для пользователей .NET.

Одним из способов, по которым VS2008 значительно лучше, чем VC6, является то, что он может строить проекты C ++ параллельно. Это может привести к значительно более быстрой сборке даже на одной системе ЦП, но особенно если у вас несколько ядер.

1 голос
/ 15 сентября 2008

Visual C ++ 6.0 полностью и хорошо интегрируется с инструментами отслеживания памяти, такими как Purify, HeapAgent, BoundsChecker и MemCheck, поскольку эти инструменты отслеживания памяти активно поддерживались и активно продавались после выхода Visual C ++ 6.0.

Однако, поскольку C ++ уже давно не в моде, компании, продающие инструменты отслеживания памяти, по-прежнему продают их, но никогда не обновляют и не интегрируют их с новыми версиями Visual C ++, включая Visual Studio 2008. Поэтому, используя инструменты отслеживания памяти с Visual Studio 2008 разочаровывает, подвержен ошибкам и, в некоторых случаях, невозможен.

1 голос
/ 15 сентября 2008

Помимо упомянутого выше развертывания, основным преимуществом MSVC 6.0 является скорость. Поскольку это 10-летняя IDE, на современном компьютере он работает довольно быстро. Более новые версии Visual Studio предлагают более продвинутые функции, но они стоят дорого (сложность и меньшая скорость).

Но самым большим недостатком MSVC 6.0 является его несовместимый C ++ - компилятор и библиотека. Если вы намереваетесь заняться серьезным программированием на C ++ - это просто шоу-стопор. Если вы создаете только MFC-приложения, это, вероятно, не является большой проблемой.

0 голосов
/ 19 декабря 2008

Visual C ++ 6 может быть очень ошибочным по сравнению с 2008 годом. Некоторые вещи, в частности:

  • Плохая поддержка шаблонов / странности (например, sometemplate<othertemplate<t>> не работает, но sometemplate< othertemplate<t>> работает)
  • Не соответствует стандартам
  • Редактор ресурсов - мусор (между прочим, "синие линии", кажется, перемещаются случайным образом)
  • Поддерживает только редактирование определенных видов 8-битных растровых изображений (я должен использовать imagemagick для преобразования растровых изображений, сохраненных в paint.net, чтобы их можно было увидеть в ресурсах изображений)
  • Ужасная поддержка работы с файлами, доступными только для чтения / необычной исходной безопасной интеграции.

Иногда разработка в VS6 напоминает попытку улучшить внешний вид сайтов в Internet Explorer 5.5

...