- ベストアンサー
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++がどれほど違うのかが不安です。 質問がたくさんになってしまいましたが、よろしくお願いいたします。
- みんなの回答 (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カーのようなもの。 クラッチの切り方から注意しないとエンストしたり、事故ります。 その代わり極めれば性能が出ます。(反面、極めるのは困難です)
その他の回答 (1)
- tutemarihu
- ベストアンサー率0% (0/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/
お礼
回答いただき、ありがとうございます。 同じように「C」と言っても、C言語・C++とC#はかなり違うのですね。 「基礎をしっかりするように」と言われているので、C言語→C++と勉強します。 ご回答の中盤以降が知らない専門用語ばかりでチンプンカンプンなのですが、 それらの用語が出てきたら、注意して勉強するようにします。
お礼
詳しい回答をいただき、ありがとうございます。 C#がある程度できるから、C++も似たようなものだろうと軽く思っていました・・・ 一からC言語→C++の順にしっかり勉強します。 私が就く業務が、VC++なのか、C++.netなのか確かめます。