ここから本文です

C#とC++どちらを選ぶべきか。

hom********さん

2010/3/2023:43:00

C#とC++どちらを選ぶべきか。

C言語を始めようと思っていて
C++を選ぼうと思っているのですが、
C#とどちらの方にするか決心がつきません。

確実に習得出来る方、
将来役に立つ可能性がある方、
資料(入門用などのサイト)が多い方
Webなどで閲覧できる(つまり無料の)資料が多い方・・・・

などいろいろ自分の中で廻っていて
どうしようか迷っています。

C#には入門者向けのサイトが多いように思う一方、
C++にはプログラミング入門者にはあまり向いてないサイトも多い気がします。

実際のところどうなのでしょうか?

ちなみに、あくまでC#かC++で迷っているのであって、
他の言語という選択肢はありません。

よろしくお願いします

閲覧数:
13,030
回答数:
3

違反報告

ベストアンサーに選ばれた回答

abi********さん

編集あり2010/3/2108:46:01

[確実性]

> 確実に習得出来るほう

他の回答者さん達が言われているように、人によって、確実と保障するのは無理があります。
しかし、確実に近いのは、C♯です。
C♯は、マイクロソフト的に言えば、マイクロソフト(以下略: MS)の新テクノロジーを取り入れるために、C++を改良した新言語です。
また、標準的というか、MS以外も含めた一般的な表現で言えば、インターネット仕様、特にJava関連の技術を取り入れるために、C++を改良したのがC♯です。
なお、Java誕生の際は、C++の影響は大きかったのですが、C++のポインターという仕様は取り入れませんでした。
ポインターとは、簡単に言うと、メモリを直接制御したり、ハード制御に便利です。
ポインターは、C++の長所ではありますが、難易度が高かったので、Javaでは無くしました。
ポインターの代わりに、参照型という仕様を取り入れ、プログラマーにはオブラードで包まれた様な状態で、ポインター的な機能は気にしなくても大丈夫になっています。
このため、Javaは、高機能な上級者向けの言語であると同時に、初心者に優しい入門言語でもあります。

C#においても、ポインターの代わりに、参照型という仕様を取り入れ、入門者に優しい言語です。
繰り返しをする制御文や、条件で分岐する文などは、C++と同じですので、C++を学ぶ前の入門言語としてC#を学ぶ人も多いです。
質問の条件にぴったりな言語と言えます。





[将来性]


> 将来役に立つ可能性があるほう

C++は、前述の通り、ハード制御も可能な言語ですので、多くの分野、多くのOSで利用されています。
他の言語では、用意されていないコマンドがあれば、それまでですが、C++ならば、その用意されていないコマンドの作成にC++が使われます。
そのような意味では、C++は万能言語と言っても、言い過ぎでは無いです。
よって、新たな言語が次々と誕生しても、C++はしっかり根をおろして、多くの分野で利用されています。
よって、C++はおすすめです。


これに対して、C♯は、一応標準化団体に認可された言語なのですが、現時点では、実質、Windowsに限定された言語のような存在です。
逆に、Windows系のみに限定して開発するならば、新テクノロジー関連の技術はC♯が望ましいです。
新テクノロジーとは、.NET(ドットネット)と呼ばれるものです。
この.NETという用語は、MSによる用語ですが、それに使われている底部での基礎技術では、IBM等の他企業と共に、標準化団体のもとで取り決められた仕様です。
この辺の技術は、サービス指向アーキテクチャ(SOA)とか、クラウドコンピューティング等の、いわゆるIT次世代に活躍可能な技術です。
よって、IT次世代になれば、少なくとも今よりは、「C♯は、Windows限定」という面が無くなっていくと思います。

IT次世代を少し紹介すると、Yahoo!等の検索エンジンは、情報の検索だけではなく、プログラム部品の検索が可能になります。
そして、必要なプログラム部品が、必要に応じて動的に組み込まれて実行されます。
ちょっと、未来SF映画に出てくるようなシステムに近づいていくという事です。
ソフト技術的には、だいぶ出揃ってきていますが、ハード的にはまだ、ついて行けていないので、まだ、将来という話しですが。


まとめますと、過去から将来も定着して通用する技術と言う意味では、C++がおすすめ。
IT次世代の将来の技術を取り入れるという意味では、C♯がおすすめです。



[サイト情報]


> C++にはプログラミング入門者にはあまり向いてないサイトも多い気がします。

C/C++は、古くから定着しているので、サイトの情報は、C/C++のほうが恵まれていると思います。
C++の入門は、Cの入門サイトが沢山ありますので、それで学んで下さい(Cは互換性があるので)。

ただし、C♯は、MSが高度な機能まで応用機能を用意してくれているので、本を含めて良いのならば、C♯のほうが情報に恵まれてていると思います(応用面の事を言っています)。
C++でも、C♯でも、応用になってくると、本を買って行くことになります。
応用面は、本でしっかり学んで、サポート的な情報をサイトで得ることになります。





[結論]

私の意見としては、C++もC♯も、最終的には両方共に習得するのが望ましいです。
また、C++とC♯の連携まで学ばれると、両者の長所を活かせます(MSか、IBMの開発環境ならば、連携がしやすいです)。
両言語を学ばれるのでしたら、まず、C♯から学んで、次にC++を学べば、入門のステップ上、一番良いと思います。





ちなみに私は、ユーザーインターフェイス関連(VB的な処理)と、新テクノロジー関連は、C♯を使います。
また、ハード制御や、高速処理が要求される場合、及び過去の資産を活かす時には、C++です。
そして、必要に応じて両者を連携させています。
大変ならば、片方を選んで単独でも構いませんし、可能ならば、いずれ両者を習得して下さい。

質問した人からのコメント

2010/3/21 08:46:17

降参 細かく丁寧にありがとうございました!!!
やっと決心がつきました!!!!
そして、ポインターの意味もようやく分かりました。
とりあえずC++から初めて、最終的には
頑張って両方に挑戦してみようと思います。

本当にありがとうございました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

zwi********さん

2010/3/2100:46:58

>確実に習得出来る方、
どちらもありえない。
両方共ある程度高い確率で挫折します。

>将来役に立つ可能性がある方、
両方共役に立ちます。
ただし、働ける業界は違います。

>資料(入門用などのサイト)が多い方
C++の方が多い印象があります。
ただ、C++の方が仕様が複雑です。

>Webなどで閲覧できる(つまり無料の)資料が多い方・・・
C++の方が多いでしょうね。
最終的にちゃんと勉強したかったら本を買った方が良いです。

「明解C++」
http://www.bohyoh.com/Books/MeikaiCPP/index.html
「独習C++」
http://www.amazon.co.jp/gp/product/4798103187/
「ロベールのC++入門」
http://www.amazon.co.jp/dp/4839926050/

「猫でもわかるC#プログラミング」
http://www.amazon.co.jp/dp/4797337664/
「独習C#」
http://www.seshop.com/detail.asp?pid=7775
「C#の絵本」
http://www.seshop.com/Detail.asp?pid=8724



ちなみにC言語とC++は違う言語ですよ。

bel********さん

編集あり2010/3/2100:02:49

>確実に習得出来る方、

人による。
CやC++の方が基礎を習得してこつをつかんでしまえば自分で応用できるし適応も出来る。
C#の方がお手軽で簡単だけれども、業務レベルで言うならフレームワークの理解と知識が必要になるので知るべきことがいくらでも出てくる。
両方とも別次元の難しさなので比較は困難。
しかも、 「 確実 」 なんて誰にも言えない。



>将来役に立つ可能性がある方、

未来は誰にも分からない。
両者ともにまったく異なった側面のメリットがあるし、デメリットもある。
「 役に立つ 」 の意味を明確にしない限りは回答不能。



>資料(入門用などのサイト)が多い方

歴史のあるC/C++の方が多いのは当然。
逆にC#の入門サイトなんて希少なのでは?
わざわざサイトを立ち上げなくてもmsdnで調べれば済むことばかりだし、適用範囲が広いのでひとつの窓口としてはまとめきれない。



>Webなどで閲覧できる(つまり無料の)資料が多い方・・・・

資料として閲覧するなら基本的にmsdnになる。
+αとしてはC++の方が研究されているので追加情報もある。





結局のところ、どうせ両方やることになるんだから・・・・
どっちでも良いからサッサと始めたら?

が本音です。

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

両方同時にやれば良いね。

C/C++ でネイティブコードのDLL作って
C# でGUI作って双方を連携させる。

最低限、この程度のことが出来ないとプログラマとしては失格なんだし・・・・・




始める前から確実性ばかり求めるなら、何もしなければ良い。
確実に出来ることがわかっているのなら・・・・ 行動は不要なのだから。

挑戦する気持ちを持たない人間は、プログラマには成れません。
諦めて他の道を選んだほうが幸せです。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる