• ベストアンサー

C、C++、C#の関係について

現在C#で簡単な開発しています。 今度就く業務ではC++が必要だから、勉強しておくようにと言われました。 C#を使っていながら、恥ずかしい質問なのですが・・・  ・よく聞く「VC++」と「C++.Net」は、違うのでしょうか?   正式名称が「Microsoft Visual C++ .Net」なので、同じような気がするのですが。   私の使用PCには「Microsoft Visual Studio .Net 2003」が入っています。  ・C言語とC++との違いは何なのでしょうか?   両者の関係が分かりません。   C++を勉強する場合、C言語というのは飛ばしてよいのでしょうか?   C#を習得するときは、C言語を勉強しませんでした。   C++で開発とか、C#で開発とか言いますが、「C言語で開発」とは言わないですよね? C#とC++がどれほど違うのかが不安です。 質問がたくさんになってしまいましたが、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.2

 ・よく聞く「VC++」と「C++.Net」は、違うのでしょうか? 文脈により違うものをさす可能性もあります。(同じ可能性もありますが、大抵は違うかも…) 「VC++」は、Microsoft社のC++コンパイラ製品名(の略称)であって、言語ではないです。 但し、特にMFCでの開発をさして(C++と区別して)「VC++」と表現する方もいます。 そして、「VC++」は、「非.NET platformのC++(標準C++)」と、 .NET platform用のManaged C++(MSの独自拡張。後に整理されてC++/CLIとして規格化)の*両方に*対応してます。 C++.NETというと、恐らくはManaged C++(MS独自拡張)か、 C++/CLI(これはECMAで独立した言語として標準化)をさすと思われます。 # Managed C++とC++/CLIも微妙に違う言語です。 一報、単にVC++と言う場合、標準C++(+MFC)の可能性が高いです。 > 私の使用PCには「Microsoft Visual Studio .Net 2003」が入っています。 これは、.NET framework上のManaged C++と標準C++の両方に対応した製品です。  ・C言語とC++との違いは何なのでしょうか? C言語は、ISO/IEC9899で標準化された言語です。 C++は、C言語をベースに開発された別の言語です(ISO/IEC14882)。 そして、.NET framework用のC++/CLI (ECMA-372)も別の言語です。 CとC++の関係を例えるなら、ラテン語と英語とかみたいなものでしょうか。 (ベースでもあり、参考にはなるが、似て非なるもの) > C++を勉強する場合、C言語というのは飛ばしてよいのでしょうか? 知っているとお得です。知らないと将来「はまる」可能性もあります。 ですが、最初に勉強するべきかといわれると、議論が分かれるところだと思います。 > C++で開発とか、C#で開発とか言いますが、「C言語で開発」とは言わないですよね? 「C言語で開発」とも言います。 (PCアプリだと「C言語+Win32」ということが少ないだけで、組込業界等に行くと普通にあります。別言語ですし、C言語のシェアも高いので) > C#とC++がどれほど違うのかが不安です。 根本のOOPとかは共通ですが、C++の方が格段に複雑で難易度が高いです。 C++⇒C#は比較的容易ですが、逆は結構面倒だと思います。 C#がオートマ車の運転なら、C++はF1カーのようなもの。 クラッチの切り方から注意しないとエンストしたり、事故ります。 その代わり極めれば性能が出ます。(反面、極めるのは困難です)

juicemikan
質問者

お礼

詳しい回答をいただき、ありがとうございます。 C#がある程度できるから、C++も似たようなものだろうと軽く思っていました・・・ 一からC言語→C++の順にしっかり勉強します。 私が就く業務が、VC++なのか、C++.netなのか確かめます。

その他の回答 (1)

回答No.1

・C言語とC++との違い C++を勉強する場合、Cの勉強を飛ばすのはあまりよくありません。 殆どの場合においてCの特徴であるポインタやその他多くの知識が必要だからです。 C++のコンパイラは、殆どのCコードをコンパイルすることが出来ます。 それは、C++がCの仕様をほとんどそのまま引き継いで、更に独自仕様をつけたしかたらです。だから今は「Cで開発」とは言わずに、Cとほぼ同じことが出来て且つCよりも多くの事が出来る「C++で開発」という事の方が多いです(C++のような巨大な開発が出来ない組み込み系以外では)。C++は規模の大きいプロジェクトの開発が出来るようにオブジェクト指向のできる、マルチパラダイム言語として開発されました。なのでCと比べて、その仕様の幅は非常に膨大なものになっています。さらにCは静的な言語ですが、C++では静的な部分と動的な部分とが入り混じっています。代表的なのが静的な型チェック(コンパイル時に変数の型をチェック)をするキャスト、動的な型チェック(実行時に変数の型をチェック)するキャスト、STLに内包されている、実行時に領域を拡張できる動的配列vectorなどなど。慣れるまで非常にややこしいですが、これらの事を良く踏まえてC++を勉強するべきです。 ・C#とC++がどれほど違うのか C#はどちらかと言うとJavaに近いです。名前こそは似ているものの、C++と異なる部分も多くあります。 リンクにはC,C++入門のあるサイトを張っておきました。

参考URL:
http://wisdom.sakura.ne.jp/
juicemikan
質問者

お礼

回答いただき、ありがとうございます。 同じように「C」と言っても、C言語・C++とC#はかなり違うのですね。 「基礎をしっかりするように」と言われているので、C言語→C++と勉強します。 ご回答の中盤以降が知らない専門用語ばかりでチンプンカンプンなのですが、 それらの用語が出てきたら、注意して勉強するようにします。

関連するQ&A

  • Visual Studio6と 2005 Express C#の共存は可能?

    今私のPCにVisual Studio 6.0(VC++,VB,ツール,MSDN含む) (SP6)をインストールしています。 C#の勉強のためにVisual C# 2005 Expressをインストールしようと思っているのですが、以下の疑問点があることでインストールを躊躇しています。 1) VC++(6)とC#との共存は可能か? 2) C#はあくまで勉強用としているだけで、メインはVC++6を使用したいのだが、Visual Studio C# 2005 ExpressをインストールすることでVC++6でのプログラミング開発に何か影響はないか? どなたかVC++6とC#2005の共存を実践された方がいらっしゃれば、上記疑問点について経験上のアドバイスをご教示頂きたいと思っております。 当方のPC環境は以下のとおりです。 OS:Microsoft WindowsXP(SP3) 現在インストールしている開発環境: Visual Studio 6 (SP3) ※VC++、VB、ツールのみ ご回答・アドバイスの程宜しくお願い致します。

  • C++について

    C++について C++を学ぼうと思って入門書を探しています。 今までにC++、オブジェクト指向はやったことがありません。 C言語は初級と中級の間ぐらいの知識です。現在は独習Cを読んで、理解を深めています。 VC++を理解したいと思って業務(ツール)のソースや構成などを見てもさっぱりでした。 どこから学んでいけばよく分からない状態です。 オブジェクト指向を理解しつつ、C++も習得していってVC++を使えるようになりたいです。 Visual C++〈1〉はじめてのWindowsプログラミング (プログラミング学習シリーズ) が良いと聞いたのですが、C言語を分かっている程度の私が読んで勉強になりますか? もし、他に取っ掛かりやすい本がありましたらお願い致します。

  • visual studioのC言語とフリーソフトのC言語ツールの違い

    前にvisual studioでC言語の勉強を行っており、再び始めようかと思っているものです。 少し疑問に思ったのですが、visual studioのC言語とC言語のフリーソフトの違いは何でしょうか?

  • 「Microsoft Visual C++」でCやC#できますか?

    プログラミングについて初心者です。 仕事の関係でC#を勉強しないといけなくなりました。 学生時代はMATLABしかやっていないし、独学で勉強しようと思って学生時代にMicrosoft Visual C++を入れたのですが、本を見て例題にそって動かしただけであとはずっと眠っています。。 ここで質問があります。 C#を勉強するのにMicrosoft Visual C++では駄目でしょうか?(とんちんかんな質問してたらすみません。コンパイラがあればCは大丈夫って聞いてたのですが。。) あまりにもおかしい質問ならご教授願います。 C#を勉強するには、Microsoft Visual C++ではなくてVisual Studio 2005 Standard Editionの方がいいのですか?(ネットでいろいろ調べたらこれがでてきました。) もし、Visual Studio 2005 Standard Editionならいま入ってるMicrosoft Visual C++はアンインストールしてから入れたほうがいいですか? よろしくお願いします。

  • C#でできてC++でできないことは?(C#のメリットとは?)

    これから新しい言語として、C#もしくはC++の勉強をしたいと 考えています。 C#にできてC++にできないこと、あるいはその逆でC++にはできて C#ではできない。ということがあれば、教えていただけないでしょうか? 感覚としてはC++であれば何でもできるという感じではあるのですが、 C#を使うメリットってどんなことがありますか? やはり、ビジュアル開発(コントロールのDrag&Dropで画面開発ができる) の簡単さというところがC#でのメリットでしょうか? ちなみに私はこれまで、C -> VB -> Java といった順で言語を習得 してきました。

  • 「Microsoft Visual C 6.0」について

    VC6.0で作成しているソフトを修正したいのですが、 そもそも「Microsoft Visual C 6.0」という製品は 「Microsoft Visual C++ 6.0」のことでしょうか。 VC++6.0の中にVC6.0があるのでしょうか。 VC6.0の開発をするために必要なソフトと インストール方法を教えて下さい。

  • C#の開発ツール「.NETFrameworkSDK」の操作法について

    C#言語初心者です。C#を勉強しようと思い開発ツールのダウンロードから始めました。 開発ツールとしてマイクロソフトが提供している「.NETFrameworkSDK」をダウンロードするために以下のWebページを開き、ダウンロードを試み、インストールまで実行しました。しかし、実行ファイルらしきものができておらず、C#をどのように開始してよいのかが判りません。 ダウンロード後に、ProgramFileに「Microsoft Visual Studio 8」というフォルダーができて、それを開くと9個のフォルダーがありました。 「Microsoft .NET Framework 2.0 SDK - JPN」 「Microsoft Visual C++ 2005 Express Edition - JPN」 「MSDN Express Library」 「Common7」  「1041」 「SDK」 「VC」 「VJ#」 「Xml」 の9個です。しかし、C#という文字が含まれるフォルダーは見当たりません。C#の開発ツールをダウンロードした筈なのに、それに関するファイルが1個もないというのはどういうことなのでしょうか。ヘルプファイルやReadMeファイルを参照したのですが私の理解力を超えていました。 「Visual Studio」を有料で購入すれば良いのでしょうが、無料ダウンロードで済ませられるのならそれに超したことはないと思い挑戦しました。どなたか、無料ダウンロードでC#コンパイラーを起動させる手順をご存知の方がおられましたら、ご教授頂きたいと思います。よろしくお願い致します。

  • マイクロソフトの開発環境について

    Microsoft Visual C++ .NET .NET Framework Microsoft Visual studio .NET Microsoft Visual studio express .NET Microsoft Visual studio express .NET framework (これに言語名、vb, c#, vc++などのバリエーション) というような記述が、書籍、サイトに書いてあります。略称だったりするのかも知れませんが。 大局的にどういう風に整理して理解したらよいかわかりません。時間の流れの中で名称が統廃合されたとか。 末尾につく .NET, framework という接尾語の意味とか...、言葉で中身を理解したいのですが、どういう風に理解すればいいでしょうか。 わかっているのは1つだけ、expressが付いたらフリー(タダ)という意味ですよね。違うでしょうか。 expressがないものは有償と思っているのですが。もしそうだったらexpressとか書かないでストレートな表現にした方がいいと思うのですが。 ある情報処理の本に”この本は、Visual C++ .NET対応”、と書いてあります。私はMicrosoft Visual studio expressの中のc++をダウンロードして持っているのですが、それでいけるのかなと思っています。やっぱり指定どおりじゃないとだめなのでしょうか。 別の視点からの質問になりますが、OpenGLを用いたCGの開発環境はどのように整備するようになっているでしょうか。ここが本来の質問の出発点でした。これをやろうとしていろいろ調べていくとこのような問題にぶつかったということなのですが。 よろしくお願いします。

  • 64ビット コマンドライン Cプログラミング

    私の環境は以下のとおりです CPU x6800 メモリ 8GB Vista 64 sp1 Visual studio 2005 やりたいことは、コマンドプロンプト[ > ] で 大きな配列 char dem[1000][1000][2000] を使うCプログラムを作成し使用すること。 質問したいことは、 コマンドラインの環境設定(PATH: bin lib include) コンパイラ リンカ の/オプション はどのように設定したらよいのでしょうか。 現状は work.c のコンパイル+リンク で work.exe はエラーなく成功するのですが 実行すると、{ work.exeは有効な win32 アプリケーションではありません。} というエラーが出て実行できません。 配列の要素を2000->1000にすればもちろんエラーは出ません。 なおこのときのコマンドプロンプトは  Visual Studio 2005 x64 Win64 コマンド プロンプト PATH は次のようになっています。 PATH=C:\Program Files (x86)\Microsoft Visual Studio 8\VC\BIN\amd64;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin\win64\amd64;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin;  C:\Windows\Microsoft.NET\Framework64\v2.0.50727;  C:\Program Files (x86)\Microsoft Visual Studio 8\VC\VCPackages;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools;  C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\bin;  C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\bin;  C:\Windows\system32;C:\Windows;  C:\Windows\System32\Wbem;  C:\Windows\System32\WindowsPowerShell\v1.0\ 先達のご教示をお願いいたします。

  • C++を学習するにあたって

    質問は以下の3つですよろしくお願いします 1.vc++ と c++の違いを教えてください。  vc++は開発環境でc++の画面をプログラミングするときに使うもの  という認識でいいでしょうか。 2.vc++とc++の開発環境を教えてください。 javaでいうeclipsの様なものまたその開発環境はcやc++やc#でも使えるか否か 3.vc++ や c++ は制御系システムで用い業務系システムでは  利用しないのでしょうか   初歩的な質問で申し訳けありませんがよろしくお願いします。