C言語の種類と構成について質問

解決


tomo  2013-01-20 15:14:00  No: 73588  IP: [192.*.*.*]

はじめまして、C言語の勉強をはじめたばかり初心者です。
C言語の種類にはどんな種類があるのでしょうか。
調べたら、「C」「C++」「VC++」「VSC++」などの表記がありました。
Windowsアプリを作る場合には、どれを使えばいいのでしょうか。
それと、MFCとCLRの違いは何でしょうか?
構成の方法なのでしょうか?

編集 削除
tetrapod  2013-01-20 16:54:07  No: 73589  IP: [192.*.*.*]

まず「言語」と「製品」の区別からいこうか。

C, C++, C++/CLI, C# というのは言語。
英語やフランス語やラテン語と同じ分類。

次に Visual Studio というのは Microsoft の「製品」。
Visual Studio は複数の言語と開発用ライブラリをセットにして売ってる代物で、
Visual Studio の中の C++ が Visual C++ (VC++)
Visual Studio の中の C# が Visual C#
VSC++ という表記は(俺は使わないが)おそらく Visual Studio の C++ の意味だろう。
**出版が複数言語をまとめた教科書参考書セットを売ってると思えばいい。
他の会社からも「製品」がたくさん出ている。

で、せっかくここ (C/C++ 系掲示板)で聞いてくれてるんだけど、
今初心者で、学習しながら Windows アプリケーションを作るのであれば、
お勧めは Visual C# だと思う。後発な分だけ簡単・便利になっている。

C# は事実上 Microsoft が開発した独自の言語と考えていい。
なので「Windows 以外」ではあまり使われていない。
学習の目的が Windows ONLY なら C# 一択。
Windows 以外も視野にあるなら C++ でもいいだろう (C++/CLI は除外)

編集 削除
tomo  2013-01-20 19:05:18  No: 73590  IP: [192.*.*.*]

tetrapod さん、ありがとうございます。

Visual Studioが「C++」,「C#」なのですね。
「アンマネージメント型」での学習が課せられていますので「VC++」になるのでしょうか。
「C」と「C++/CLI」は何処の製品でしょうか。

編集 削除
tetrapod  2013-01-20 20:22:52  No: 73591  IP: [192.*.*.*]

> Visual Studioが「C++」,「C#」なのですね。
> 「C」と「C++/CLI」は何処の製品でしょうか。
言語と製品の区別がついていないようだな・・・まあ深く突っ込まないことにしておく。

Visual C++ という製品は、これ一本買うと C と C++ と C++/CLI の3つがすべて使えるんだ。
C, C++ はアンマネージ開発環境 C++/CLI はマネージ開発環境。
なので アンマネージ (マネージメントではない) 限定ならば
・ Visual C++ という製品(は Visual Studio の一部)を入手して
・この製品で使える C か C++ で開発を行う
ということになる。

今なら Visual Studio 2010 か Visual Studio 2012 ということになりそう。

で、純粋に学習用なら Microsoft が無料で提供している
Visual Studio 2010 Express や Visual Studio 2012 Express で
問題ないと思う (MFC はついてこないけど) 。
終局的に MFC なり ATL なり使う必然があるなら Professional 以上が必要だろう。

で、いまどき [Windows でアンマネージ限定] ってのは何か間違っている気がする。
方針そのものの見直しを強く推奨する。

ついでに用語だけ解説しておくと
MFC : Microsoft Foundation Class
C++ 専用の、 Windows プログラミングをちょっとだけ簡単にしてくれるライブラリ。
根幹設計が20年以上前のものなので古めかしい(いまどき流ではない)
これを新規に覚えるくらいなら C# にいっちゃうほうがいい。

CLR : Common Language Runtime
マネージ言語 (Visual BASIC, C# など) で作ったプログラムを動かすためのライブラリ。
アンマネージ限定なら詳細を知る必要は無い。

編集 削除
tomo  2013-01-20 22:53:46  No: 73592  IP: [192.*.*.*]

tetrapod さん、
詳しい説明ありがとうございます。
「Visual Studio 2010」か「Visual Studio 2012」であればMFCがつけるのですね。それと「MFC」は、かなり古いのですね。

もう少し聞きたいのですが、
1.ライブラリとはどんなものですか。
2.増設用のボード類の開発キットに付随している「SDK」は、「アンマネージメント型」が一般的なのでしょうか。
3.「アンマネージメント型」と「マネージメント型」には互換性はあるのですか。
3.「アンマネージメント型」のdllをC#で使えるのですか。

編集 削除
tetrapod  2013-01-21 06:51:17  No: 73593  IP: [192.*.*.*]

興味を持ってくれるのはうれしいのだが、もっと慎重に読んでくれ。
マネージメント  って繰り返されるとがっかりだ。
既に書いてあることを再度聞かれるのはもっとがっかりだ。

> MFCがつけるのですね
Visual Studio でも無料版 (Express) では使えないぞ。
Visual Studio の有料版 (個人開発では Professional 一択) のみだ。

> 1.ライブラリとはどんなものですか。
特に C, C++ は幅広い応用がされている。
・ Windows のような、複雑高機能な実行環境
・リモコンのような、最小限の機能しかない環境
そのため、「言語仕様」としては最小限のものしか決められていない。
ライブラリというのは「専門用語」のようなもので、
特定分野の特定目的の機能を実現するための開発補助キットと思えばいい。
SDK ってのもライブラリだ。

> 2.増設用のボード類の開発キットに付随している「SDK」は、「アンマネージメント型」が一般的なのでしょうか。
増設ボードとはたとえば SATA とか GPIB とか? Yes

> 3.「アンマネージメント型」と「マネージメント型」には互換性はあるのですか。
どういう「互換性」を期待しているかで話は違うが・・・
マネージ開発環境 C++/CLI や C# で、アンマネージ型 (C, C++ 互換型) を使うことは可能。
アンマネージ開発環境 C, C++ で、マネージ型 (C++/CLI, C# 型) は使えない。

> 3.「アンマネージメント型」のdllをC#で使えるのですか。
使えるように作ってあれば Yes

マネージ・アンマネージの混在プログラムってのは、
マネージだけ・アンマネージだけのプログラムより難度がはねあがるわけで
初心者を自認し、勉強しながら作るのであれば、混在プログラミングは敷居が高いと思う。

編集 削除
tomo  2013-01-21 23:00:20  No: 73594  IP: [192.*.*.*]

tetrapod さん
何度も同じ事を聞いて、すみませんでした。
本当に詳しい説明ありがとうございます。

もう一つお聞きしたいことがあります。
キャプチャーボードで動画や映像を画面に表示する事が最終目標なのですが、この時「DirectX」を扱わないといけないようなのです。
ここで、VC++とC#ではどちらが「DirectX」を扱えるのでしょうか。それとも両方とも扱えるのでしょうか。

編集 削除
tetrapod  2013-01-22 07:13:14  No: 73595  IP: [192.*.*.*]

DirectX か〜〜ものすごくコアなところがやりたいんだね・・・

C++ で DirectX は問題ない。先駆者もいっぱいいるし書籍も参考ページも多数確認済み。
簡単かどうかはまた話が別だが(覚えなきゃならんこと多し)

C# で DirectX はちと微妙かもしれない。
Managed DirectX は簡単だったんだけど非サポートになったし。
http://bygzam.seesaa.net/article/157672929.html
http://sorceryforce.com/manageddirectx/direct3d_stepup.html
今なら XNA か SlimDX ってところだろうか。
http://mainori-se.sakura.ne.jp/slimdx/
やはり後発な分だけ、トータルで見ると簡単=覚えなきゃならん量は少ない、と俺は思う。

およそ DirectX の解説ページは
・既に Windows プログラミングに対する知識があって
・C++ なり C# なりの文法解説や基礎概念は理解できている
前提でなされているので、その辺は覚悟しておくほうがいい。

編集 削除
tomo  2013-01-22 21:14:31  No: 73596  IP: [192.*.*.*]

道のりは遠いみたいですが、簡単な所から少しずつ勉強していきます。
tetrapod さん
本当にありがとうございます。

編集 削除