|
pure C++ と C++/CLI は別言語です(似て非なるもの) Windows というか Visual Studio の世界では次のように考えてよいです。
pure C/C++ ・いわゆる native 命令を直接生成する (よって x86 と x64 と ARM は別 EXE になる) ・とにかくひたすら超高速が求められる用途向け コンピュータ将棋の思考ルーチンとか、データベースの検索エンジンとか ・デバイスドライバ等 native でないと実装できない用途向け ・異プラットフォーム (Linux や 「組み込み」) とソース共有する用途向け ・ GUI 部品も用意されている (MFC 等) が、古いまま更新されていない ・古い言語であり「熟練したプログラマが正しいコードを記述する」ことを想定している つまり、初心者が使うと簡単に誤ったコードを記述しうる ・プログラマが誤らない前提で、誤りを検出する機構が実行時には無効になっている分だけ速い が、誤ったプログラムを実行すると何が起こるかわからない
C++/CLI ・いわゆる IL 命令を生成する。 IL とは中間言語。よって x86/x64/ARM 等で共通な EXE になる ・実行時に IL 命令を native 命令に変換しながら処理をする よって初回の実行は遅いことがある(2回目は既に変換済みなので native と速度が同じはず) ・下記 C#, VB.NET 系プログラムと pure C/C++ の仲介をするものと位置づけられている なので GUI 部品等は一応用意されているが Visual Studio のデザイナでサポートされてない
C#, VB.NET ・いわゆる IL 命令を生成する。 IL とは中間言語。よって x86/x64/ARM 等で共通な EXE になる ・実行時に IL 命令を native 命令に変換しながら処理をする よって初回の実行は遅いことがある(2回目は既に変換済みなので native と速度が同じはず) ・ GUI プログラムを Visual Studio のデザイナで作るためのものと位置づけられている なので最新の GUI 部品が使える ・新しい言語であり「プログラマは簡単に誤る」ことを想定している つまり、初心者が使ってもバグりにくいが、上級者には若干うざったらしい表現が必要となっている ・プログラマの誤りを検出する機構が実行時にも有効になっている分だけ若干遅い が、誤ったプログラムを実行すると高い確率で検出されて異常動作をさせにくい
C++ と C++/CLI とで「どっちが良い」かは用途次第っす。 でもまあ 2015 年時点で C++/CLI は特定目的の専門家以外は使う必要が無い言語と位置づけられてます。 Windows 以外の機械 (Linux 等) も考えるなら C や C++ を学んでみるのも良し Windows と心中する気なら C# を極めてみるのも良し
今この瞬間には「その必要がある」のでない限り C++/CLI に手を出さないほうが良いと思うっす。 何のために必要かがわからないのであれば手を出す必要は皆無っす。
|