Visual C++ 6.0 と Visual C++ 2008 の違いは何ですか?
-
09-06-2019 - |
質問
MS VS C++ 6.0 と MSVS C++ 2008 の利点と欠点は何ですか?
このような質問をする主な理由は、最新バージョンではなく古いバージョンを使用することを好むまともなプログラマがまだたくさんいるからです。
新しいものよりも古いものを好む理由はあるのでしょうか?
解決
そうですね、その理由の 1 つは、MSVS 6 でビルドされた実行可能ファイルには、現在 Windows に同梱されている msvcrt.dll (C ランタイム) のみが必要であることが考えられます。
MSVS 2008 実行可能ファイルには、msvcrt9 が同梱されている (またはすでにインストールされている) 必要があります。
さらに、6.0 C ランタイムを使用して Windows 32 ビット用にコンパイル済みの OSS ライブラリが多数ありますが、2008 C ランタイムの場合は、ソースを取得して自分でコンパイルする必要があります。
(これらのライブラリのほとんどは実際には MinGW でコンパイルされており、これも 6.0 C ランタイムを使用しています - おそらくそれが別の理由です)。
他のヒント
Visual C++ 6.0 と比較した Visual Studio 2008 の利点:
- より優れたテンプレート処理を備えた、より標準に準拠した C++ コンパイラ
- x64 / モバイル / XBOX ターゲットのサポート
- STL実装の改善
- C++0x TR1 のサポート (スマート ポインター、正規表現など)
- セキュアな C ランタイム ライブラリ
- コードナビゲーションの改善
- デバッガが改善されました。リモートデバッグセッションを実行する可能性
- コンパイラの最適化の向上
- 多くのバグ修正
- マルチコア/マルチCPUシステムでのビルドの高速化
- 多くの優れた機能を備えた改良された IDE ユーザー インターフェイス
- IDE でのマクロのサポートが改善されました。DTE により、より多くの IDE メソッドと変数にアクセスできるようになります
- 更新された MFC ライブラリ (VS2008 Service Pack 1 内)
- OPENMP (簡易マルチスレッド) のサポート (VS2008 pro のみ)
Visual Studio 2008 への移行のデメリット:
- IDE は VS6 よりもはるかに遅い
- Intellisense にはまだパフォーマンスの問題があります (VisualAssistX に置き換えると改善する可能性があります)
- 並列アセンブリにより、アプリのデプロイメントがより困難になる
- ローカル (オフライン) MSDN ライブラリが非常に遅い
- 述べたように ここ, 、Professional バージョンにはプロファイラーはありません
ジョエルの最近の精神に沿って ブログ投稿, 投稿された他の回答のいくつかを 1 つの回答に結合しました (そして、これをコミュニティ所有の投稿にしたため、そこからの評判は得られません)。気にしないでください。Laur さん、NeARAZ さん、26 人中 17 人さん、me.yahoo.com、その他回答してくれた皆さんに感謝します。-- ChrisN
Visual C++ 2008 を使用して開発されたアプリケーションは、Visual C++ 6.0 を使用して開発されたアプリケーションよりも多くの DLL を必要とするわけではないことを付け加えておきます。これは単なるデフォルトのプロジェクト構成です。
プロジェクトのプロパティ、C/C++、コード生成に移動し、 ランタイムライブラリ マルチスレッド DLL およびマルチスレッド デバッグ DLL (リリースおよびデバッグ構成) から マルチスレッド そして マルチスレッドデバッグ, そうすると、アプリケーションの依存関係が少なくなるはずです。
新しい Visual Studio の利点は次のとおりです。
- 基準への厳格な準拠
- X64 / Mobile / Xboxターゲットのサポート
- コンパイラの最適化の向上
- (かなり) テンプレートの処理が改善されました
- 改良されたデバッガ。リモートデバッグセッションを実行する可能性
- 改善されたIDE
- マクロサポートの改善。DTE により、より多くの IDE メソッドと変数にアクセスできるようになります
短所:
- IDE が遅いように見える
- Intellisenseにはまだパフォーマンスの問題があります(VisualAssistXに置き換えることができます)
- ランタイムは普遍的に利用可能ではありません
- ソース制御統合は額面までではありません(すべての公平性において、VC6にはこの機能が完全に欠けています)
上記の展開に加えて、MSVC 6.0 の主な利点は速度です。10 年前の IDE なので、最新のコンピュータではかなり高速に感じられます。Visual Studio の新しいバージョンでは、より高度な機能が提供されますが、コストがかかります (複雑さと速度の低下)。
しかし、MSVC 6.0 の最大の欠点は、C++ コンパイラとライブラリが非準拠であることです。本格的な C++ プログラミングを行う予定がある場合、これは間違いなく重要です。MFC アプリケーションのみを構築する場合は、おそらくそれほど問題はありません。
Visual C++ 6.0 は、Purify、HeapAgent、BoundsChecker、MemCheck などのメモリ追跡ツールと徹底的に統合されており、Visual C++ 6.0 のリリース後にこれらのメモリ追跡ツールが積極的に保守され、積極的に販売されてきました。
ただし、C++ が流行らなくなってしばらく経っているため、メモリ追跡ツールを販売している会社は依然として C++ を販売していますが、更新したり、Visual Studio 2008 などの新しい Visual C++ バージョンと統合したりすることはありません。そのため、Visual Studio 2008 でメモリ追跡ツールを使用するのはイライラしやすく、エラーが発生しやすく、場合によっては不可能です。
VC6 以降、Visual Studio の焦点のほとんどは C# と .NET、およびその他の機能にあるため、一部の C++ 古参ユーザーは VC6 を古き良き時代と見なしています。C++ 開発者向けの Visual Studio は当時よりも改善されましたが、.NET ユーザー向けほど劇的ではありません。
VS2008 が VC6 よりも大幅に優れている点の 1 つは、C++ プロジェクトを並行してビルドできることです。これにより、単一 CPU システムでもビルドが大幅に高速化される可能性がありますが、特に複数のコアがある場合にはそうです。
MS VC6 の STL 実装はスレッドセーフではないことをご存知ですか?特に、basic_string の参照カウントの最適化は、マルチスレッド ライブラリでコンパイルした場合でも異常終了します。http://support.microsoft.com/kb/813810
VS6 のサービス パックをすべてインストールしても、確実な IDE とコンパイラの組み合わせが残ります。(インターネット経由で) 製品を実際にリリースする必要があるソフトウェア開発者として、VC++ ランタイムと .NET フレームワークを毎回出荷することを避けたくありません (これらをインストーラー/実行ファイルに直接バンドルすることはできません。Microsoft によって禁止されています)。 )。ご存知のように、数キロバイトのコードを実行するために数メガバイトのランタイムを必要とするのは、ちょっとばかげています。VC++ 6.0 に必要なのは、実行可能ファイルと、せいぜい 2 つの .DLL だけです。
また、デバッグ ランタイムは VC++ .NET では配布できません。製品のデバッグを行う必要があるクライアントがある場合にはあまり適していません:)
私が今でも VC++ 6.0 を使用している主な理由は次のとおりだと思いますが、IDE 自体が醜いです (例:タブ移動はサポートされていません)。私は通常、代わりにコードブロックを使用して IDE の制限を回避します (コードブロックはすべての VC++ バージョンで CL.EXE/LINK.EXE をサポートします)。
コボルフー
Visual C++ 2008 は、より標準に準拠しています (Visual Studio 6 は、1998 年に設定された C++ 標準をサポートしていません)。
VS2008 はより優れたコンパイラを備えています (より多くの標準準拠、より優れた最適化など)。
VS6 の IDE ははるかに高速です。VS2008 IDE には多くの優れた機能がありますが、VS6 よりも遅いです。
6.0 から 2008 までの改善点の簡単なリスト:
- 多くのバグ修正
- C++ 標準への適合性の向上
- コンパイラの最適化の向上
- UIの改善(インテリセンスの向上など)
人々が時々忘れがちなことの 1 つは、VS 6.0 はすでに 10 年以上前のものであるということです。現時点では、誰もがどうやってそれに固執したいと思うかわかりません。
大変だったのは、「価値」がキーワードになったことです。
Visual C++ 6 は、2008 と比較して非常にバグが多い場合があります。特に次のようなことが挙げられます。
- テンプレートのサポートが不十分/奇妙です (たとえば、
sometemplate<othertemplate<t>>
機能していませんが、sometemplate< othertemplate<t>
> 働いています) - 規格に準拠していない
- リソースエディターはゴミです (とりわけ、「青い線」がランダムに動き回るように見えます)
- 特定の種類の 8 ビット ビットマップの編集のみをサポートします (画像リソースで表示できるように、paint.net に保存されたビットマップを変換するには imagemagick を使用する必要があります)
- 読み取り専用ファイルの操作に対するひどいサポート / 風変わりなソースセーフ統合。
VS6 での開発は、Internet Explorer 5.5 で Web サイトの見栄えを良くしようとしているように感じることがあります。